From 27f288ef961a21c94fd958aaab3bcbbc612dc939 Mon Sep 17 00:00:00 2001 From: amddg44 Date: Mon, 8 Apr 2024 12:21:11 +0200 Subject: [PATCH 01/63] Password screen UI improvements: New open website & show password buttons (#2669) Task/Issue URL: https://app.asana.com/0/1200930669568058/1206365535975347/f Tech Design URL: CC: Description: Adds small UI improvements to the Passwords screen including: - New website link button to open websites with a single tap (globe icon) - New password visibility toggle button to show / hide passwords with a single tap - Hidden password character count limit reduced from 40 to 22 so that the hidden version of the password displays as a single line --- DuckDuckGo/AutofillLoginDetailsView.swift | 61 +++++++++++++++++++---- DuckDuckGo/PasswordHider.swift | 2 +- 2 files changed, 53 insertions(+), 10 deletions(-) diff --git a/DuckDuckGo/AutofillLoginDetailsView.swift b/DuckDuckGo/AutofillLoginDetailsView.swift index ba9eee9654..1c6fd06be6 100644 --- a/DuckDuckGo/AutofillLoginDetailsView.swift +++ b/DuckDuckGo/AutofillLoginDetailsView.swift @@ -148,7 +148,10 @@ struct AutofillLoginDetailsView: View { actionTitle: UserText.autofillCopyPrompt(for: UserText.autofillLoginDetailsAddress), action: { viewModel.copyToPasteboard(.address) }, secondaryActionTitle: viewModel.websiteIsValidUrl ? UserText.autofillOpenWebsitePrompt : nil, - secondaryAction: viewModel.websiteIsValidUrl ? { viewModel.openUrl() } : nil) + secondaryAction: viewModel.websiteIsValidUrl ? { viewModel.openUrl() } : nil, + buttonImageName: "Globe-24", + buttonAccessibilityLabel: UserText.autofillOpenWebsitePrompt, + buttonAction: viewModel.websiteIsValidUrl ? { viewModel.openUrl() } : nil) } Section { @@ -321,9 +324,12 @@ struct AutofillLoginDetailsView: View { action: { viewModel.isPasswordHidden.toggle() }, secondaryActionTitle: UserText.autofillCopyPrompt(for: UserText.autofillLoginDetailsPassword), secondaryAction: { viewModel.copyToPasteboard(.password) }, - buttonImageName: "Copy-24", - buttonAccessibilityLabel: UserText.autofillCopyPrompt(for: UserText.autofillLoginDetailsPassword), - buttonAction: { viewModel.copyToPasteboard(.password) }) + buttonImageName: viewModel.isPasswordHidden ? "Eye-24" : "Eye-Closed-24", + buttonAccessibilityLabel: viewModel.isPasswordHidden ? UserText.autofillShowPassword : UserText.autofillHidePassword, + buttonAction: { viewModel.isPasswordHidden.toggle() }, + secondaryButtonImageName: "Copy-24", + secondaryButtonAccessibilityLabel: UserText.autofillCopyPrompt(for: UserText.autofillLoginDetailsPassword), + secondaryButtonAction: { viewModel.copyToPasteboard(.password) }) } @@ -427,6 +433,10 @@ private struct CopyableCell: View { var buttonAccessibilityLabel: String? var buttonAction: (() -> Void)? + var secondaryButtonImageName: String? + var secondaryButtonAccessibilityLabel: String? + var secondaryButtonAction: (() -> Void)? + var body: some View { ZStack { HStack { @@ -452,7 +462,11 @@ private struct CopyableCell: View { } .padding(EdgeInsets(top: 8, leading: 0, bottom: 8, trailing: 8)) - Spacer(minLength: buttonImageName != nil ? Constants.textFieldImageSize : 8) + if secondaryButtonImageName != nil { + Spacer(minLength: Constants.textFieldImageSize * 2 + 8) + } else { + Spacer(minLength: buttonImageName != nil ? Constants.textFieldImageSize : 8) + } } .copyable(isSelected: selectedCell == id, menuTitle: actionTitle, @@ -466,7 +480,7 @@ private struct CopyableCell: View { if let buttonImageName = buttonImageName, let buttonAccessibilityLabel = buttonAccessibilityLabel { let differenceBetweenImageSizeAndTapAreaPerEdge = (Constants.textFieldTapSize - Constants.textFieldImageSize) / 2.0 - HStack(alignment: .center) { + HStack(alignment: .center, spacing: 0) { Spacer() Button { @@ -488,10 +502,39 @@ private struct CopyableCell: View { } } .buttonStyle(.plain) // Prevent taps from being forwarded to the container view - .background(BackgroundColor(isSelected: selectedCell == id).color) + // can't use .clear here or else both button padded area and container both respond to tap events + .background(BackgroundColor(isSelected: selectedCell == id).color.opacity(0)) .accessibilityLabel(buttonAccessibilityLabel) .contentShape(Rectangle()) .frame(width: Constants.textFieldTapSize, height: Constants.textFieldTapSize) + + if let secondaryButtonImageName = secondaryButtonImageName, + let secondaryButtonAccessibilityLabel = secondaryButtonAccessibilityLabel { + Button { + secondaryButtonAction?() + self.selectedCell = nil + } label: { + VStack(alignment: .trailing) { + Spacer() + HStack { + Spacer() + Image(secondaryButtonImageName) + .resizable() + .frame(width: Constants.textFieldImageSize, height: Constants.textFieldImageSize) + .foregroundColor(Color(UIColor.label).opacity(Constants.textFieldImageOpacity)) + .opacity(subtitle.isEmpty ? 0 : 1) + Spacer() + } + Spacer() + } + } + .buttonStyle(.plain) // Prevent taps from being forwarded to the container view + .background(BackgroundColor(isSelected: selectedCell == id).color.opacity(0)) + .accessibilityLabel(secondaryButtonAccessibilityLabel) + .contentShape(Rectangle()) + .frame(width: Constants.textFieldTapSize, height: Constants.textFieldTapSize) + } + } .padding(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: -differenceBetweenImageSizeAndTapAreaPerEdge)) } @@ -594,8 +637,8 @@ private struct Constants { static let verticalPadding: CGFloat = 4 static let minRowHeight: CGFloat = 60 static let textFieldImageOpacity: CGFloat = 0.84 - static let textFieldImageSize: CGFloat = 20 - static let textFieldTapSize: CGFloat = 44 + static let textFieldImageSize: CGFloat = 24 + static let textFieldTapSize: CGFloat = 36 static let insets = EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16) } diff --git a/DuckDuckGo/PasswordHider.swift b/DuckDuckGo/PasswordHider.swift index 4a91618fe6..1849248f24 100644 --- a/DuckDuckGo/PasswordHider.swift +++ b/DuckDuckGo/PasswordHider.swift @@ -22,7 +22,7 @@ import Foundation struct PasswordHider { let password: String var hiddenPassword: String { - let maximumPasswordDisplayCount = 40 + let maximumPasswordDisplayCount = 22 let passwordCount = password.count > maximumPasswordDisplayCount ? maximumPasswordDisplayCount : password.count return String(repeating: "•", count: passwordCount) } From 463f8fce8d9b5adbff843b07bf1d9034d4e5109f Mon Sep 17 00:00:00 2001 From: Federico Cappelli Date: Mon, 8 Apr 2024 11:25:46 +0100 Subject: [PATCH 02/63] Release 7.115.0-0 (#2693) --- Configuration/Version.xcconfig | 2 +- .../AppPrivacyConfigurationDataProvider.swift | 4 +- Core/AppTrackerDataSetProvider.swift | 4 +- Core/ios-config.json | 76 +- Core/trackerData.json | 2172 +++++++++++------ DuckDuckGo.xcodeproj/project.pbxproj | 56 +- DuckDuckGo/Settings.bundle/Root.plist | 2 +- fastlane/metadata/default/release_notes.txt | 1 + 8 files changed, 1453 insertions(+), 864 deletions(-) diff --git a/Configuration/Version.xcconfig b/Configuration/Version.xcconfig index cb3615d8f4..0614469d88 100644 --- a/Configuration/Version.xcconfig +++ b/Configuration/Version.xcconfig @@ -1 +1 @@ -MARKETING_VERSION = 7.114.0 +MARKETING_VERSION = 7.115.0 diff --git a/Core/AppPrivacyConfigurationDataProvider.swift b/Core/AppPrivacyConfigurationDataProvider.swift index 69d814d8ee..baa1f7d3e3 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 = "\"24f5176757f3bafd1ea7e457413fcff0\"" - public static let embeddedDataSHA = "f318ef32f8069a458e8a4505eb8f53e3c25b60311d2daf763029c1e2606cea88" + public static let embeddedDataETag = "\"f5c95349fa08b7dd5a008deb15561c32\"" + public static let embeddedDataSHA = "25ff4ebab0f843baa0878838c488cf2a7acfc8d83e58c7afb1aae13a78b5297f" } public var embeddedDataEtag: String { diff --git a/Core/AppTrackerDataSetProvider.swift b/Core/AppTrackerDataSetProvider.swift index 21b907d9fb..9928a95066 100644 --- a/Core/AppTrackerDataSetProvider.swift +++ b/Core/AppTrackerDataSetProvider.swift @@ -23,8 +23,8 @@ import BrowserServicesKit final public class AppTrackerDataSetProvider: EmbeddedDataProvider { public struct Constants { - public static let embeddedDataETag = "\"07bd7f610e3fa234856abcc2b56ab10e\"" - public static let embeddedDataSHA = "1d7ef8f4c5a717a5d82f43383e33290021358d6255db12b6fdd0928e28d123ee" + public static let embeddedDataETag = "\"ef8ebcc98d8abccca793c7e04422b160\"" + public static let embeddedDataSHA = "e2e8e5e191df54227222fbb0545a7eb8634b1156a69182323981bb6aed2c639d" } public var embeddedDataEtag: String { diff --git a/Core/ios-config.json b/Core/ios-config.json index 132b258876..0f3a2d5595 100644 --- a/Core/ios-config.json +++ b/Core/ios-config.json @@ -1,6 +1,6 @@ { "readme": "https://github.com/duckduckgo/privacy-configuration", - "version": 1712088935529, + "version": 1712340816780, "features": { "adClickAttribution": { "readme": "https://help.duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#3rd-party-tracker-loading-protection", @@ -1935,6 +1935,14 @@ { "selector": ".proper-dynamic-insertion", "type": "closest-empty" + }, + { + "selector": ".Page-header-leaderboardAd", + "type": "hide-empty" + }, + { + "selector": ".SovrnAd", + "type": "hide-empty" } ] }, @@ -2385,6 +2393,23 @@ } ] }, + { + "domain": "eurogamer.net", + "rules": [ + { + "selector": "#sticky_leaderboard", + "type": "hide-empty" + }, + { + "selector": ".primis_wrapper", + "type": "hide" + }, + { + "selector": ".autoad", + "type": "hide-empty" + } + ] + }, { "domain": "examiner.com.au", "rules": [ @@ -4242,7 +4267,7 @@ ] }, "state": "enabled", - "hash": "5094a939eec2d7e518ff15d628eec23f" + "hash": "0e089327b42a773f8e625bdc7bf27ddc" }, "exceptionHandler": { "exceptions": [ @@ -4900,14 +4925,14 @@ "rollout": { "steps": [ { - "percent": 5 + "percent": 10 } ] } } }, "state": "enabled", - "hash": "f7cce63c16c142db4ff5764b542a6c52" + "hash": "b337f9c7cf15e7e4807ef232befaa999" }, "privacyPro": { "state": "enabled", @@ -5024,6 +5049,11 @@ "state": "disabled", "hash": "5e792dd491428702bc0104240fbce0ce" }, + "sslCertificates": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, "sync": { "state": "enabled", "features": { @@ -5906,6 +5936,12 @@ "sbs.com.au" ] }, + { + "rule": "www3.doubleclick.net", + "domains": [ + "scrolller.com" + ] + }, { "rule": "doubleclick.net", "domains": [ @@ -6309,6 +6345,12 @@ "domains": [ "" ] + }, + { + "rule": "marketingplatform.google.com/about/enterprise", + "domains": [ + "scrolller.com" + ] } ] }, @@ -6317,18 +6359,7 @@ { "rule": "imasdk.googleapis.com/js/sdkloader/ima3.js", "domains": [ - "arkadium.com", - "bloomberg.com", - "cbssports.com", - "gamak.tv", - "games.washingtonpost.com", - "metro.co.uk", - "nfl.com", - "pandora.com", - "paper-io.com", - "rawstory.com", - "usatoday.com", - "washingtonpost.com" + "" ] } ] @@ -6353,6 +6384,7 @@ "daotranslate.com", "drakescans.com", "duden.de", + "edealinfo.com", "freetubetv.net", "hscprojects.com", "kits4beats.com", @@ -7657,6 +7689,16 @@ } ] }, + "sundaysky.com": { + "rules": [ + { + "rule": "sundaysky.com", + "domains": [ + "bankofamerica.com" + ] + } + ] + }, "taboola.com": { "rules": [ { @@ -8089,7 +8131,7 @@ "domain": "sundancecatalog.com" } ], - "hash": "7aae19055144405351a27ca946fa674d" + "hash": "cddd2317b22c5433c401af3a7a35c062" }, "trackingCookies1p": { "settings": { diff --git a/Core/trackerData.json b/Core/trackerData.json index 647e15dbb6..f7618c909f 100644 --- a/Core/trackerData.json +++ b/Core/trackerData.json @@ -1,7 +1,7 @@ { "_builtWith": { - "tracker-radar": "09133e827d9dcbba9465c87efdf0229ddd910d3e867f8ccd5efc31abd7073963-4013b4e91930c643394cb31c6c745356f133b04f", - "tracker-surrogates": "ba0d8cefe4432723ec75b998241efd2454dff35a" + "tracker-radar": "74dd9601901673a7c0f87e609695b5a0e31b808adabd62e6db6ed7c99bde966d-4013b4e91930c643394cb31c6c745356f133b04f", + "tracker-surrogates": "0528e3226df15b1a3e319ad68ef76612a8f26623" }, "readme": "https://github.com/duckduckgo/tracker-blocklists", "trackers": { @@ -464,7 +464,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -475,7 +475,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -521,7 +521,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -2409,7 +2409,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -2420,7 +2420,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -2464,7 +2464,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -2475,7 +2475,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -2590,7 +2590,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -2724,7 +2724,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -2735,7 +2735,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -3054,7 +3054,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -3181,7 +3181,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -3305,7 +3305,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -3689,7 +3689,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -3700,7 +3700,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -3711,7 +3711,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -3722,7 +3722,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -3788,7 +3788,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -3840,7 +3840,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -3851,7 +3851,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -3988,7 +3988,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -4339,7 +4339,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -4374,7 +4374,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -4820,7 +4820,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -4831,7 +4831,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -5033,7 +5033,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -5075,7 +5075,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -5098,7 +5098,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -5133,7 +5133,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -5162,7 +5162,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -5450,7 +5450,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -5567,7 +5567,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -5578,7 +5578,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -5589,7 +5589,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -5600,7 +5600,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -5637,7 +5637,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -5692,7 +5692,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -6228,7 +6228,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -6382,7 +6382,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -6698,7 +6698,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -6709,7 +6709,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -6829,7 +6829,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -7025,7 +7025,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -7061,7 +7061,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -7072,7 +7072,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -7083,7 +7083,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -7666,7 +7666,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -7677,7 +7677,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -7688,7 +7688,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -7769,7 +7769,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -7892,7 +7892,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -7903,7 +7903,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -7981,7 +7981,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -7992,7 +7992,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -8107,7 +8107,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -8258,7 +8258,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -8269,7 +8269,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -8760,7 +8760,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -8771,7 +8771,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -8812,7 +8812,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -9228,7 +9228,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -9833,7 +9833,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -9844,7 +9844,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -9855,7 +9855,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -9895,7 +9895,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -9937,7 +9937,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -9991,7 +9991,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -10059,7 +10059,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -10070,7 +10070,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -10118,7 +10118,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -10244,7 +10244,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -10404,7 +10404,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -10415,7 +10415,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -10426,7 +10426,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -10453,7 +10453,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -10503,7 +10503,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -10550,7 +10550,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -11028,7 +11028,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -11068,7 +11068,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -11804,7 +11804,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -11893,7 +11893,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -11904,7 +11904,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -12126,7 +12126,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -12166,7 +12166,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -12177,7 +12177,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -12188,7 +12188,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -12199,7 +12199,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -12525,7 +12525,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -12536,7 +12536,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -12547,7 +12547,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -14455,7 +14455,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -15140,7 +15140,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -15215,7 +15215,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -15266,7 +15266,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -16125,7 +16125,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -16136,7 +16136,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -16165,7 +16165,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -16384,7 +16384,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -16693,7 +16693,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -16704,7 +16704,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -16889,7 +16889,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -16938,7 +16938,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -17212,7 +17212,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -17223,7 +17223,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -17786,7 +17786,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -18134,7 +18134,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -18273,7 +18273,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -18632,7 +18632,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -18843,7 +18843,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -20020,7 +20020,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -20241,7 +20241,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -20252,7 +20252,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -20263,7 +20263,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -20403,7 +20403,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -20890,7 +20890,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -20919,7 +20919,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -20930,7 +20930,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -20941,7 +20941,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -21005,7 +21005,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -21085,7 +21085,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -21133,7 +21133,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -21144,7 +21144,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -21184,7 +21184,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -21195,7 +21195,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -21230,7 +21230,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -21241,7 +21241,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -21374,7 +21374,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -21458,7 +21458,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -21929,7 +21929,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -21940,7 +21940,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -21951,7 +21951,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -22021,7 +22021,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -22032,7 +22032,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -22185,7 +22185,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -22196,7 +22196,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -22238,7 +22238,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -22249,7 +22249,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -22260,7 +22260,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -22530,7 +22530,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -22541,7 +22541,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -22602,7 +22602,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -22660,7 +22660,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -22671,7 +22671,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -22771,7 +22771,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -22794,7 +22794,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -22805,7 +22805,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -23162,7 +23162,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -23266,7 +23266,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -23402,7 +23402,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -23477,7 +23477,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -23488,7 +23488,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -23532,7 +23532,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -23543,7 +23543,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -23554,7 +23554,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -23565,7 +23565,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -23645,7 +23645,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -23678,7 +23678,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -23729,7 +23729,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -23865,7 +23865,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -23994,7 +23994,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -24005,7 +24005,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -24252,7 +24252,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -24263,7 +24263,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -24274,7 +24274,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -24555,7 +24555,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -24590,7 +24590,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -24631,7 +24631,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -24747,7 +24747,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -24758,7 +24758,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -24787,7 +24787,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -24883,7 +24883,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -24940,7 +24940,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -24951,7 +24951,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25072,7 +25072,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25229,7 +25229,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25255,7 +25255,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25266,7 +25266,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25329,7 +25329,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25340,7 +25340,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25351,7 +25351,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25582,7 +25582,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25609,7 +25609,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25620,7 +25620,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25631,7 +25631,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25661,7 +25661,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25672,7 +25672,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25700,7 +25700,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25711,7 +25711,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25784,7 +25784,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25832,7 +25832,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25843,7 +25843,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25854,7 +25854,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25865,7 +25865,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25876,7 +25876,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25887,7 +25887,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25959,7 +25959,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -25970,7 +25970,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -26024,7 +26024,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -26226,7 +26226,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -26534,7 +26534,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -26545,7 +26545,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -26556,7 +26556,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -26807,7 +26807,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -26818,7 +26818,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -27236,7 +27236,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -28093,7 +28093,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -28223,7 +28223,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -28234,7 +28234,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -28367,7 +28367,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -28450,7 +28450,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -28461,7 +28461,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -28822,7 +28822,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -29129,7 +29129,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -29140,7 +29140,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -29266,7 +29266,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -29277,7 +29277,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -31019,7 +31019,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -31324,7 +31324,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32484,7 +32484,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32495,7 +32495,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32506,7 +32506,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32517,7 +32517,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32528,7 +32528,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32539,7 +32539,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32550,7 +32550,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "accurateanimal.com": { + "domain": "accurateanimal.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32561,7 +32572,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32572,7 +32583,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32583,7 +32594,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32594,7 +32605,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32605,7 +32616,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32616,7 +32627,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32627,7 +32638,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32638,7 +32649,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32649,7 +32660,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32660,7 +32671,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32671,7 +32682,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32682,7 +32693,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32693,7 +32704,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32704,7 +32715,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32715,7 +32726,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32726,7 +32737,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32737,7 +32748,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32748,7 +32759,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32759,7 +32770,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32770,7 +32781,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32781,7 +32792,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32792,7 +32803,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32803,7 +32814,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32814,7 +32825,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32825,7 +32836,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32836,7 +32847,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32847,7 +32858,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32858,7 +32869,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32869,7 +32880,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32880,7 +32891,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32891,7 +32902,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32902,7 +32913,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32913,7 +32924,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32924,7 +32935,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32935,7 +32946,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32946,7 +32957,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32957,7 +32968,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32968,7 +32979,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32979,7 +32990,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -32990,7 +33001,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33001,7 +33012,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33012,7 +33023,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33023,7 +33034,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33034,7 +33045,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33045,7 +33056,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33056,7 +33067,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33067,7 +33078,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33078,7 +33089,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33089,7 +33100,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33100,7 +33111,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33111,7 +33122,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33122,7 +33133,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33133,7 +33144,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33144,7 +33155,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33155,7 +33166,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33166,7 +33177,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33177,7 +33188,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33188,7 +33199,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33199,7 +33210,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33210,7 +33221,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33221,7 +33232,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33232,7 +33243,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33243,7 +33254,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33254,7 +33265,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33265,7 +33276,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33276,7 +33287,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33287,7 +33298,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33298,7 +33309,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33309,7 +33320,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33320,7 +33331,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33331,7 +33342,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "calypsocapsule.com": { + "domain": "calypsocapsule.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33342,7 +33364,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33353,7 +33375,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33364,7 +33386,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33375,7 +33397,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33386,7 +33408,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33397,7 +33419,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33408,7 +33430,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33419,7 +33441,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33430,7 +33452,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33441,7 +33463,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33452,7 +33474,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33463,7 +33485,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33474,7 +33496,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33485,7 +33507,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33496,7 +33518,29 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "chaireggnog.com": { + "domain": "chaireggnog.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "chairsdonkey.com": { + "domain": "chairsdonkey.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33507,7 +33551,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33518,7 +33562,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33529,7 +33573,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33540,7 +33584,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33551,7 +33595,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33562,7 +33606,29 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "chipperisle.com": { + "domain": "chipperisle.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "chivalrouscord.com": { + "domain": "chivalrouscord.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33573,7 +33639,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33584,7 +33650,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33595,7 +33661,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33606,7 +33672,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33617,7 +33683,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "cobaltoverture.com": { + "domain": "cobaltoverture.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33628,7 +33705,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33639,7 +33716,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33650,7 +33727,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33661,7 +33738,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33672,7 +33749,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33683,7 +33760,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33694,7 +33771,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33705,7 +33782,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33716,7 +33793,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33727,7 +33804,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33738,7 +33815,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33749,7 +33826,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33760,7 +33837,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33771,7 +33848,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33782,7 +33859,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33793,7 +33870,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33804,7 +33881,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33815,7 +33892,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33826,7 +33903,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33837,7 +33914,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33848,7 +33925,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33859,7 +33936,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33870,7 +33947,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "creatorpassenger.com": { + "domain": "creatorpassenger.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33881,7 +33969,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33892,7 +33980,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33903,7 +33991,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33914,7 +34002,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33925,7 +34013,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33936,7 +34024,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33947,7 +34035,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33958,7 +34046,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33969,7 +34057,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33980,7 +34068,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -33991,7 +34079,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34002,7 +34090,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34013,7 +34101,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34024,7 +34112,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34035,7 +34123,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34046,7 +34134,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34057,7 +34145,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34068,7 +34156,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34079,7 +34167,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34090,7 +34178,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34101,7 +34189,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34112,7 +34200,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34123,7 +34211,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34134,7 +34222,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34145,7 +34233,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34156,7 +34244,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34167,7 +34255,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34178,7 +34266,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34189,7 +34277,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34200,7 +34288,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34211,7 +34299,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34222,7 +34310,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34233,7 +34321,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34244,7 +34332,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34255,7 +34343,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34266,7 +34354,29 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "eagerknight.com": { + "domain": "eagerknight.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "echoinghaven.com": { + "domain": "echoinghaven.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34277,7 +34387,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34288,7 +34398,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "effulgenttempest.com": { + "domain": "effulgenttempest.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34299,7 +34420,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34310,7 +34431,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34321,7 +34442,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34332,7 +34453,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34343,7 +34464,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34354,7 +34475,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34365,7 +34486,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34376,7 +34497,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "engineertrick.com": { + "domain": "engineertrick.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34387,7 +34519,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34398,7 +34530,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34409,7 +34541,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34420,7 +34552,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34431,7 +34563,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34442,7 +34574,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34453,7 +34585,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34464,7 +34596,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34475,7 +34607,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34486,7 +34618,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34497,7 +34629,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34508,7 +34640,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "exquisiteartisanship.com": { + "domain": "exquisiteartisanship.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34519,7 +34662,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34530,7 +34673,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34541,7 +34684,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34552,7 +34695,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34563,7 +34706,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34574,7 +34717,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34585,7 +34728,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34596,7 +34739,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34607,7 +34750,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34618,7 +34761,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34629,7 +34772,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34640,7 +34783,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34651,7 +34794,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34662,7 +34805,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34673,7 +34816,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34684,7 +34827,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34695,7 +34838,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "flameuncle.com": { + "domain": "flameuncle.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34706,7 +34860,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34717,7 +34871,40 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "flourishingcollaboration.com": { + "domain": "flourishingcollaboration.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "flourishinginnovation.com": { + "domain": "flourishinginnovation.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "flourishingpartnership.com": { + "domain": "flourishingpartnership.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34728,7 +34915,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34739,7 +34926,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34750,7 +34937,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34761,7 +34948,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34772,7 +34959,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34783,7 +34970,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34794,7 +34981,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34805,7 +34992,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34816,7 +35003,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34827,7 +35014,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34838,7 +35025,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34849,7 +35036,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34860,7 +35047,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34871,7 +35058,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34882,7 +35069,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34893,7 +35080,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34904,7 +35091,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34915,7 +35102,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "gladysway.com": { + "domain": "gladysway.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34926,7 +35124,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34937,7 +35135,29 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "glitteringbrook.com": { + "domain": "glitteringbrook.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "goldfishgrowth.com": { + "domain": "goldfishgrowth.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34948,7 +35168,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34959,7 +35179,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34970,7 +35190,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34981,7 +35201,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -34992,7 +35212,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35003,7 +35223,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35014,7 +35234,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35025,7 +35245,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35036,7 +35256,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35047,7 +35267,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35058,7 +35278,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35069,7 +35289,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35080,7 +35300,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35091,7 +35311,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35102,7 +35322,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35113,7 +35333,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35124,7 +35344,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35135,7 +35355,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35146,7 +35366,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35157,7 +35377,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35168,7 +35388,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35179,7 +35399,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35190,7 +35410,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35201,7 +35421,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35212,7 +35432,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35223,7 +35443,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35234,7 +35454,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35245,7 +35465,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35256,7 +35476,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35267,7 +35487,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35278,7 +35498,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35289,7 +35509,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35300,7 +35520,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35311,7 +35531,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35322,7 +35542,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35333,7 +35553,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35344,7 +35564,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35355,7 +35575,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35366,7 +35586,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "impulselumber.com": { + "domain": "impulselumber.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35377,7 +35608,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35388,7 +35619,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35399,7 +35630,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35410,7 +35641,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35421,7 +35652,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35432,7 +35663,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35443,7 +35674,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35454,7 +35685,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35465,7 +35696,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35476,7 +35707,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35487,7 +35718,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35498,7 +35729,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35509,7 +35740,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "keenquill.com": { + "domain": "keenquill.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35520,7 +35762,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35531,7 +35773,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35542,7 +35784,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35553,7 +35795,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35564,7 +35806,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35575,7 +35817,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "lighttalon.com": { + "domain": "lighttalon.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35586,7 +35839,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35597,7 +35850,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35608,7 +35861,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35619,7 +35872,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35630,7 +35883,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35641,7 +35894,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35652,7 +35905,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35663,7 +35916,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35674,7 +35927,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35685,7 +35938,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35696,7 +35949,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35707,7 +35960,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35718,7 +35971,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35729,7 +35982,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35740,7 +35993,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "majesticwaterscape.com": { + "domain": "majesticwaterscape.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35751,7 +36015,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35762,7 +36026,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35773,7 +36037,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35784,7 +36048,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35795,7 +36059,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35806,7 +36070,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35817,7 +36081,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "melodiouscomposition.com": { + "domain": "melodiouscomposition.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35828,7 +36103,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35839,7 +36114,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35850,7 +36125,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35861,7 +36136,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35872,7 +36147,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35883,7 +36158,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35894,7 +36169,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35905,7 +36180,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35916,7 +36191,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35927,7 +36202,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35938,7 +36213,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35949,7 +36224,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35960,7 +36235,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35971,7 +36246,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35982,7 +36257,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -35993,7 +36268,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36004,7 +36279,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36015,7 +36290,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36026,7 +36301,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36037,7 +36312,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36048,7 +36323,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36059,7 +36334,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36070,7 +36345,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36081,7 +36356,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36092,7 +36367,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36103,7 +36378,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36114,7 +36389,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36125,7 +36400,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36136,7 +36411,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36147,7 +36422,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36158,7 +36433,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36169,7 +36444,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36180,7 +36455,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36191,7 +36466,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36202,7 +36477,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36213,7 +36488,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36224,7 +36499,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36235,7 +36510,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "opulentsylvan.com": { + "domain": "opulentsylvan.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36246,7 +36532,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36257,7 +36543,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36268,7 +36554,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36279,7 +36565,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36290,7 +36576,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36301,7 +36587,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36312,7 +36598,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36323,7 +36609,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36334,7 +36620,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36345,7 +36631,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36356,7 +36642,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36367,7 +36653,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36378,7 +36664,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36389,7 +36675,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36400,7 +36686,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36411,7 +36697,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36422,7 +36708,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "pluckyzone.com": { + "domain": "pluckyzone.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36433,7 +36730,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36444,7 +36741,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36455,7 +36752,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36466,7 +36763,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "polishedfolly.com": { + "domain": "polishedfolly.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36477,7 +36785,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36488,7 +36796,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "popplantation.com": { + "domain": "popplantation.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36499,7 +36818,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36510,7 +36829,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36521,7 +36840,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36532,7 +36851,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36543,7 +36862,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36554,7 +36873,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "publicsofa.com": { + "domain": "publicsofa.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36565,7 +36895,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "pulsatingmeadow.com": { + "domain": "pulsatingmeadow.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36576,7 +36917,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36587,7 +36928,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36598,7 +36939,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36609,7 +36950,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36620,7 +36961,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36631,7 +36972,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36642,7 +36983,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36653,7 +36994,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36664,7 +37005,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36675,7 +37016,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36686,7 +37027,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36697,7 +37038,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36708,7 +37049,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36719,7 +37060,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36730,7 +37071,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36741,7 +37082,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36752,7 +37093,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36763,7 +37104,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36774,7 +37115,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36785,7 +37126,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36796,7 +37137,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36807,7 +37148,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36818,7 +37159,29 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "relationrest.com": { + "domain": "relationrest.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "rememberdiscussion.com": { + "domain": "rememberdiscussion.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36829,7 +37192,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36840,7 +37203,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36851,7 +37214,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36862,7 +37225,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36873,7 +37236,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36884,7 +37247,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36895,7 +37258,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36906,7 +37269,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36917,7 +37280,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36928,7 +37291,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36939,7 +37302,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36950,7 +37313,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36961,7 +37324,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36972,7 +37335,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36983,7 +37346,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -36994,7 +37357,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37005,7 +37368,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37016,7 +37379,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37027,7 +37390,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37038,7 +37401,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37049,7 +37412,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37060,7 +37423,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37071,7 +37434,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37082,7 +37445,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37093,7 +37456,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37104,7 +37467,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37115,7 +37478,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37126,7 +37489,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37137,7 +37500,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37148,7 +37511,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37159,7 +37522,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37170,7 +37533,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37181,7 +37544,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37192,7 +37555,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37203,7 +37566,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "serenecascade.com": { + "domain": "serenecascade.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37214,7 +37588,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37225,7 +37599,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37236,7 +37610,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37247,7 +37621,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37258,7 +37632,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37269,7 +37643,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37280,7 +37654,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37291,7 +37665,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37302,7 +37676,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37313,7 +37687,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37324,7 +37698,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37335,7 +37709,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37346,7 +37720,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37357,7 +37731,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37368,7 +37742,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37379,7 +37753,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37390,7 +37764,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37401,7 +37775,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37412,7 +37786,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37423,7 +37797,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37434,7 +37808,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37445,7 +37819,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37456,7 +37830,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37467,7 +37841,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37478,7 +37852,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37489,7 +37863,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37500,7 +37874,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37511,7 +37885,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37522,7 +37896,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37533,7 +37907,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37544,7 +37918,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37555,7 +37929,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37566,7 +37940,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37577,7 +37951,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37588,7 +37962,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37599,7 +37973,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37610,7 +37984,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37621,7 +37995,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37632,7 +38006,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37643,7 +38017,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37654,7 +38028,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37665,7 +38039,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37676,7 +38050,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37687,7 +38061,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37698,7 +38072,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37709,7 +38083,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37720,7 +38094,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37731,7 +38105,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37742,7 +38116,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37753,7 +38127,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37764,7 +38138,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37775,7 +38149,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37786,7 +38160,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37797,7 +38171,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37808,7 +38182,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37819,7 +38193,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37830,7 +38204,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37841,7 +38215,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37852,7 +38226,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37863,7 +38237,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37874,7 +38248,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37885,7 +38259,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37896,7 +38270,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37907,7 +38281,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37918,7 +38292,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37929,7 +38303,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37940,7 +38314,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37951,7 +38325,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37962,7 +38336,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37973,7 +38347,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "sublimequartz.com": { + "domain": "sublimequartz.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37984,7 +38369,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -37995,7 +38380,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38006,7 +38391,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38017,7 +38402,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38028,7 +38413,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38039,7 +38424,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38050,7 +38435,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38061,7 +38446,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38072,7 +38457,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38083,7 +38468,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38094,7 +38479,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38105,7 +38490,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38116,7 +38501,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38127,7 +38512,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38138,7 +38523,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38149,7 +38534,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "tearfulglass.com": { + "domain": "tearfulglass.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38160,7 +38556,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38171,7 +38567,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38182,7 +38578,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38193,7 +38589,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38204,7 +38600,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38215,7 +38611,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38226,7 +38622,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38237,7 +38633,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38248,7 +38644,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38259,7 +38655,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "thrivingmarketplace.com": { + "domain": "thrivingmarketplace.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38270,7 +38677,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38281,7 +38688,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38292,7 +38699,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38303,7 +38710,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38314,7 +38721,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38325,7 +38732,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38336,7 +38743,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38347,7 +38754,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38358,7 +38765,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38369,7 +38776,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38380,7 +38787,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38391,7 +38798,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38402,7 +38809,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38413,7 +38820,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38424,7 +38831,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38435,7 +38842,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38446,7 +38853,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38457,7 +38864,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38468,7 +38875,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38479,7 +38886,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38490,7 +38897,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38501,7 +38908,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38512,7 +38919,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38523,7 +38930,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38534,7 +38941,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38545,7 +38952,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38556,7 +38963,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38567,7 +38974,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38578,7 +38985,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38589,7 +38996,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38600,7 +39007,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38611,7 +39018,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38622,7 +39029,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38633,7 +39040,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38644,7 +39051,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38655,7 +39062,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38666,7 +39073,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38677,7 +39084,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38688,7 +39095,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38699,7 +39106,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "vibrantcelebration.com": { + "domain": "vibrantcelebration.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38710,7 +39128,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38721,7 +39139,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38732,7 +39150,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38743,7 +39161,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38754,7 +39172,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38765,7 +39183,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "vividfrost.com": { + "domain": "vividfrost.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38776,7 +39205,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38787,7 +39216,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38798,7 +39227,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38809,7 +39238,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38820,7 +39249,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38831,7 +39260,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38842,7 +39271,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38853,7 +39282,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38864,7 +39293,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38875,7 +39304,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38886,7 +39315,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38897,7 +39326,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38908,7 +39337,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38919,7 +39348,18 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "wittyshack.com": { + "domain": "wittyshack.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38930,7 +39370,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38941,7 +39381,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38952,7 +39392,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38963,7 +39403,29 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "zestyhorizon.com": { + "domain": "zestyhorizon.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, + "fingerprinting": 1, + "cookies": 0.01, + "default": "block" + }, + "zestyrover.com": { + "domain": "zestyrover.com", + "owner": { + "name": "Leven Labs, Inc. DBA Admiral", + "displayName": "Admiral" + }, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38974,7 +39436,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -38985,7 +39447,7 @@ "name": "Leven Labs, Inc. DBA Admiral", "displayName": "Admiral" }, - "prevalence": 0.0151, + "prevalence": 0.0129, "fingerprinting": 1, "cookies": 0.01, "default": "block" @@ -48993,6 +49455,7 @@ "abstractedamount.com", "abstractedauthority.com", "acceptableauthority.com", + "accurateanimal.com", "accuratecoal.com", "acidpigs.com", "actoramusement.com", @@ -49088,6 +49551,7 @@ "calculatorstatement.com", "callousbrake.com", "calmcactus.com", + "calypsocapsule.com", "capablecup.com", "capriciouscorn.com", "captivatingcanyon.com", @@ -49107,6 +49571,8 @@ "ceciliavenus.com", "celestialquasar.com", "celestialspectra.com", + "chaireggnog.com", + "chairsdonkey.com", "chalkoil.com", "changeablecats.com", "chargecracker.com", @@ -49118,6 +49584,8 @@ "childlikeexample.com", "childlikeform.com", "chinsnakes.com", + "chipperisle.com", + "chivalrouscord.com", "chunkycactus.com", "circlelevel.com", "cleanhaircut.com", @@ -49125,6 +49593,7 @@ "cloisteredcurve.com", "closedcows.com", "coatfood.com", + "cobaltoverture.com", "coldbalance.com", "colossalclouds.com", "colossalcoat.com", @@ -49152,6 +49621,7 @@ "crabbychin.com", "cratecamera.com", "creatorcherry.com", + "creatorpassenger.com", "creaturecabbage.com", "crimsonmeadow.com", "critictruck.com", @@ -49204,8 +49674,11 @@ "drollwharf.com", "dustydime.com", "dustyhammer.com", + "eagerknight.com", + "echoinghaven.com", "effervescentcoral.com", "effervescentvista.com", + "effulgenttempest.com", "elasticchange.com", "elderlybean.com", "elusivebreeze.com", @@ -49215,6 +49688,7 @@ "encouragingthread.com", "endurablebulb.com", "energeticladybug.com", + "engineertrick.com", "enigmaticcanyon.com", "enigmaticvoyage.com", "enormousearth.com", @@ -49230,6 +49704,7 @@ "executeknowledge.com", "exhibitsneeze.com", "expansioneggnog.com", + "exquisiteartisanship.com", "exuberantedge.com", "fadedsnow.com", "fadewaves.com", @@ -49253,8 +49728,12 @@ "financefear.com", "firstfrogs.com", "fixedfold.com", + "flameuncle.com", "flimsycircle.com", "flimsythought.com", + "flourishingcollaboration.com", + "flourishinginnovation.com", + "flourishingpartnership.com", "flowerstreatment.com", "flowerycreature.com", "floweryfact.com", @@ -49284,9 +49763,12 @@ "giddycoat.com", "giraffepiano.com", "givevacation.com", + "gladysway.com", "gleamingcow.com", "glisteningguide.com", + "glitteringbrook.com", "gloriousbeef.com", + "goldfishgrowth.com", "gondolagnome.com", "gorgeousedge.com", "gracefulmilk.com", @@ -49337,6 +49819,7 @@ "importantmeat.com", "impossibleexpansion.com", "impulsejewel.com", + "impulselumber.com", "incompetentjoke.com", "inconclusiveaction.com", "inputicicle.com", @@ -49351,6 +49834,7 @@ "jubilanttempest.com", "jubilantwhisper.com", "kaputquill.com", + "keenquill.com", "knitstamp.com", "knottyswing.com", "laboredlocket.com", @@ -49360,6 +49844,7 @@ "leftliquid.com", "liftedknowledge.com", "lightenafterthought.com", + "lighttalon.com", "livelumber.com", "livelylaugh.com", "livelyreward.com", @@ -49379,6 +49864,7 @@ "lunchroomlock.com", "lustroushaven.com", "maddeningpowder.com", + "majesticwaterscape.com", "maliciousmusic.com", "marketspiders.com", "marriedbelief.com", @@ -49390,6 +49876,7 @@ "meatydime.com", "meddleplant.com", "melodiouschorus.com", + "melodiouscomposition.com", "meltmilk.com", "memopilot.com", "memorizematch.com", @@ -49435,6 +49922,7 @@ "oldfashionedoffer.com", "operationchicken.com", "optimallimit.com", + "opulentsylvan.com", "orientedargument.com", "outstandingincome.com", "outstandingsnails.com", @@ -49462,13 +49950,16 @@ "pleasantpump.com", "plotrabbit.com", "pluckypocket.com", + "pluckyzone.com", "pocketfaucet.com", "poeticpackage.com", "pointdigestion.com", "pointlesspocket.com", "pointlessprofit.com", + "polishedfolly.com", "politeplanes.com", "politicalporter.com", + "popplantation.com", "possibleboats.com", "possiblepencil.com", "potatoinvention.com", @@ -49484,7 +49975,9 @@ "profusesupport.com", "protestcopy.com", "psychedelicarithmetic.com", + "publicsofa.com", "puffypurpose.com", + "pulsatingmeadow.com", "pumpedpancake.com", "punyplant.com", "purposepipe.com", @@ -49519,6 +50012,8 @@ "regularplants.com", "regulatesleet.com", "rehabilitatereason.com", + "relationrest.com", + "rememberdiscussion.com", "repeatsweater.com", "replaceroute.com", "resonantbrush.com", @@ -49576,6 +50071,7 @@ "selfishsnake.com", "separatesort.com", "seraphicjubilee.com", + "serenecascade.com", "serenepebble.com", "serioussuit.com", "serpentshampoo.com", @@ -49679,6 +50175,7 @@ "stupendoussleet.com", "stupendoussnow.com", "stupidscene.com", + "sublimequartz.com", "succeedscene.com", "sugarfriction.com", "suggestionbridge.com", @@ -49700,6 +50197,7 @@ "tangycover.com", "tastelesstrees.com", "tastelesstrucks.com", + "tearfulglass.com", "tediousticket.com", "teenytinycellar.com", "teenytinyshirt.com", @@ -49715,6 +50213,7 @@ "thomastorch.com", "thoughtlessknot.com", "threetruck.com", + "thrivingmarketplace.com", "ticketaunt.com", "tidymitten.com", "tiredthroat.com", @@ -49763,12 +50262,14 @@ "verdantlabyrinth.com", "verdantloom.com", "verseballs.com", + "vibrantcelebration.com", "vibrantgale.com", "vibranthaven.com", "vibrantpact.com", "vibranttalisman.com", "virtualvincent.com", "vividcanopy.com", + "vividfrost.com", "vividmeadow.com", "vividplume.com", "volatileprofit.com", @@ -49787,15 +50288,18 @@ "whispermeeting.com", "wildcommittee.com", "wistfulwaste.com", + "wittyshack.com", "workoperation.com", "wretchedfloor.com", "wrongwound.com", "zephyrlabyrinth.com", "zestycrime.com", + "zestyhorizon.com", + "zestyrover.com", "zipperxray.com", "zlp6s.pw" ], - "prevalence": 0.0151, + "prevalence": 0.0129, "displayName": "Admiral" } }, @@ -50523,6 +51027,7 @@ "abstractedamount.com": "Leven Labs, Inc. DBA Admiral", "abstractedauthority.com": "Leven Labs, Inc. DBA Admiral", "acceptableauthority.com": "Leven Labs, Inc. DBA Admiral", + "accurateanimal.com": "Leven Labs, Inc. DBA Admiral", "accuratecoal.com": "Leven Labs, Inc. DBA Admiral", "acidpigs.com": "Leven Labs, Inc. DBA Admiral", "actoramusement.com": "Leven Labs, Inc. DBA Admiral", @@ -50618,6 +51123,7 @@ "calculatorstatement.com": "Leven Labs, Inc. DBA Admiral", "callousbrake.com": "Leven Labs, Inc. DBA Admiral", "calmcactus.com": "Leven Labs, Inc. DBA Admiral", + "calypsocapsule.com": "Leven Labs, Inc. DBA Admiral", "capablecup.com": "Leven Labs, Inc. DBA Admiral", "capriciouscorn.com": "Leven Labs, Inc. DBA Admiral", "captivatingcanyon.com": "Leven Labs, Inc. DBA Admiral", @@ -50637,6 +51143,8 @@ "ceciliavenus.com": "Leven Labs, Inc. DBA Admiral", "celestialquasar.com": "Leven Labs, Inc. DBA Admiral", "celestialspectra.com": "Leven Labs, Inc. DBA Admiral", + "chaireggnog.com": "Leven Labs, Inc. DBA Admiral", + "chairsdonkey.com": "Leven Labs, Inc. DBA Admiral", "chalkoil.com": "Leven Labs, Inc. DBA Admiral", "changeablecats.com": "Leven Labs, Inc. DBA Admiral", "chargecracker.com": "Leven Labs, Inc. DBA Admiral", @@ -50648,6 +51156,8 @@ "childlikeexample.com": "Leven Labs, Inc. DBA Admiral", "childlikeform.com": "Leven Labs, Inc. DBA Admiral", "chinsnakes.com": "Leven Labs, Inc. DBA Admiral", + "chipperisle.com": "Leven Labs, Inc. DBA Admiral", + "chivalrouscord.com": "Leven Labs, Inc. DBA Admiral", "chunkycactus.com": "Leven Labs, Inc. DBA Admiral", "circlelevel.com": "Leven Labs, Inc. DBA Admiral", "cleanhaircut.com": "Leven Labs, Inc. DBA Admiral", @@ -50655,6 +51165,7 @@ "cloisteredcurve.com": "Leven Labs, Inc. DBA Admiral", "closedcows.com": "Leven Labs, Inc. DBA Admiral", "coatfood.com": "Leven Labs, Inc. DBA Admiral", + "cobaltoverture.com": "Leven Labs, Inc. DBA Admiral", "coldbalance.com": "Leven Labs, Inc. DBA Admiral", "colossalclouds.com": "Leven Labs, Inc. DBA Admiral", "colossalcoat.com": "Leven Labs, Inc. DBA Admiral", @@ -50682,6 +51193,7 @@ "crabbychin.com": "Leven Labs, Inc. DBA Admiral", "cratecamera.com": "Leven Labs, Inc. DBA Admiral", "creatorcherry.com": "Leven Labs, Inc. DBA Admiral", + "creatorpassenger.com": "Leven Labs, Inc. DBA Admiral", "creaturecabbage.com": "Leven Labs, Inc. DBA Admiral", "crimsonmeadow.com": "Leven Labs, Inc. DBA Admiral", "critictruck.com": "Leven Labs, Inc. DBA Admiral", @@ -50734,8 +51246,11 @@ "drollwharf.com": "Leven Labs, Inc. DBA Admiral", "dustydime.com": "Leven Labs, Inc. DBA Admiral", "dustyhammer.com": "Leven Labs, Inc. DBA Admiral", + "eagerknight.com": "Leven Labs, Inc. DBA Admiral", + "echoinghaven.com": "Leven Labs, Inc. DBA Admiral", "effervescentcoral.com": "Leven Labs, Inc. DBA Admiral", "effervescentvista.com": "Leven Labs, Inc. DBA Admiral", + "effulgenttempest.com": "Leven Labs, Inc. DBA Admiral", "elasticchange.com": "Leven Labs, Inc. DBA Admiral", "elderlybean.com": "Leven Labs, Inc. DBA Admiral", "elusivebreeze.com": "Leven Labs, Inc. DBA Admiral", @@ -50745,6 +51260,7 @@ "encouragingthread.com": "Leven Labs, Inc. DBA Admiral", "endurablebulb.com": "Leven Labs, Inc. DBA Admiral", "energeticladybug.com": "Leven Labs, Inc. DBA Admiral", + "engineertrick.com": "Leven Labs, Inc. DBA Admiral", "enigmaticcanyon.com": "Leven Labs, Inc. DBA Admiral", "enigmaticvoyage.com": "Leven Labs, Inc. DBA Admiral", "enormousearth.com": "Leven Labs, Inc. DBA Admiral", @@ -50760,6 +51276,7 @@ "executeknowledge.com": "Leven Labs, Inc. DBA Admiral", "exhibitsneeze.com": "Leven Labs, Inc. DBA Admiral", "expansioneggnog.com": "Leven Labs, Inc. DBA Admiral", + "exquisiteartisanship.com": "Leven Labs, Inc. DBA Admiral", "exuberantedge.com": "Leven Labs, Inc. DBA Admiral", "fadedsnow.com": "Leven Labs, Inc. DBA Admiral", "fadewaves.com": "Leven Labs, Inc. DBA Admiral", @@ -50783,8 +51300,12 @@ "financefear.com": "Leven Labs, Inc. DBA Admiral", "firstfrogs.com": "Leven Labs, Inc. DBA Admiral", "fixedfold.com": "Leven Labs, Inc. DBA Admiral", + "flameuncle.com": "Leven Labs, Inc. DBA Admiral", "flimsycircle.com": "Leven Labs, Inc. DBA Admiral", "flimsythought.com": "Leven Labs, Inc. DBA Admiral", + "flourishingcollaboration.com": "Leven Labs, Inc. DBA Admiral", + "flourishinginnovation.com": "Leven Labs, Inc. DBA Admiral", + "flourishingpartnership.com": "Leven Labs, Inc. DBA Admiral", "flowerstreatment.com": "Leven Labs, Inc. DBA Admiral", "flowerycreature.com": "Leven Labs, Inc. DBA Admiral", "floweryfact.com": "Leven Labs, Inc. DBA Admiral", @@ -50814,9 +51335,12 @@ "giddycoat.com": "Leven Labs, Inc. DBA Admiral", "giraffepiano.com": "Leven Labs, Inc. DBA Admiral", "givevacation.com": "Leven Labs, Inc. DBA Admiral", + "gladysway.com": "Leven Labs, Inc. DBA Admiral", "gleamingcow.com": "Leven Labs, Inc. DBA Admiral", "glisteningguide.com": "Leven Labs, Inc. DBA Admiral", + "glitteringbrook.com": "Leven Labs, Inc. DBA Admiral", "gloriousbeef.com": "Leven Labs, Inc. DBA Admiral", + "goldfishgrowth.com": "Leven Labs, Inc. DBA Admiral", "gondolagnome.com": "Leven Labs, Inc. DBA Admiral", "gorgeousedge.com": "Leven Labs, Inc. DBA Admiral", "gracefulmilk.com": "Leven Labs, Inc. DBA Admiral", @@ -50867,6 +51391,7 @@ "importantmeat.com": "Leven Labs, Inc. DBA Admiral", "impossibleexpansion.com": "Leven Labs, Inc. DBA Admiral", "impulsejewel.com": "Leven Labs, Inc. DBA Admiral", + "impulselumber.com": "Leven Labs, Inc. DBA Admiral", "incompetentjoke.com": "Leven Labs, Inc. DBA Admiral", "inconclusiveaction.com": "Leven Labs, Inc. DBA Admiral", "inputicicle.com": "Leven Labs, Inc. DBA Admiral", @@ -50881,6 +51406,7 @@ "jubilanttempest.com": "Leven Labs, Inc. DBA Admiral", "jubilantwhisper.com": "Leven Labs, Inc. DBA Admiral", "kaputquill.com": "Leven Labs, Inc. DBA Admiral", + "keenquill.com": "Leven Labs, Inc. DBA Admiral", "knitstamp.com": "Leven Labs, Inc. DBA Admiral", "knottyswing.com": "Leven Labs, Inc. DBA Admiral", "laboredlocket.com": "Leven Labs, Inc. DBA Admiral", @@ -50890,6 +51416,7 @@ "leftliquid.com": "Leven Labs, Inc. DBA Admiral", "liftedknowledge.com": "Leven Labs, Inc. DBA Admiral", "lightenafterthought.com": "Leven Labs, Inc. DBA Admiral", + "lighttalon.com": "Leven Labs, Inc. DBA Admiral", "livelumber.com": "Leven Labs, Inc. DBA Admiral", "livelylaugh.com": "Leven Labs, Inc. DBA Admiral", "livelyreward.com": "Leven Labs, Inc. DBA Admiral", @@ -50909,6 +51436,7 @@ "lunchroomlock.com": "Leven Labs, Inc. DBA Admiral", "lustroushaven.com": "Leven Labs, Inc. DBA Admiral", "maddeningpowder.com": "Leven Labs, Inc. DBA Admiral", + "majesticwaterscape.com": "Leven Labs, Inc. DBA Admiral", "maliciousmusic.com": "Leven Labs, Inc. DBA Admiral", "marketspiders.com": "Leven Labs, Inc. DBA Admiral", "marriedbelief.com": "Leven Labs, Inc. DBA Admiral", @@ -50920,6 +51448,7 @@ "meatydime.com": "Leven Labs, Inc. DBA Admiral", "meddleplant.com": "Leven Labs, Inc. DBA Admiral", "melodiouschorus.com": "Leven Labs, Inc. DBA Admiral", + "melodiouscomposition.com": "Leven Labs, Inc. DBA Admiral", "meltmilk.com": "Leven Labs, Inc. DBA Admiral", "memopilot.com": "Leven Labs, Inc. DBA Admiral", "memorizematch.com": "Leven Labs, Inc. DBA Admiral", @@ -50965,6 +51494,7 @@ "oldfashionedoffer.com": "Leven Labs, Inc. DBA Admiral", "operationchicken.com": "Leven Labs, Inc. DBA Admiral", "optimallimit.com": "Leven Labs, Inc. DBA Admiral", + "opulentsylvan.com": "Leven Labs, Inc. DBA Admiral", "orientedargument.com": "Leven Labs, Inc. DBA Admiral", "outstandingincome.com": "Leven Labs, Inc. DBA Admiral", "outstandingsnails.com": "Leven Labs, Inc. DBA Admiral", @@ -50992,13 +51522,16 @@ "pleasantpump.com": "Leven Labs, Inc. DBA Admiral", "plotrabbit.com": "Leven Labs, Inc. DBA Admiral", "pluckypocket.com": "Leven Labs, Inc. DBA Admiral", + "pluckyzone.com": "Leven Labs, Inc. DBA Admiral", "pocketfaucet.com": "Leven Labs, Inc. DBA Admiral", "poeticpackage.com": "Leven Labs, Inc. DBA Admiral", "pointdigestion.com": "Leven Labs, Inc. DBA Admiral", "pointlesspocket.com": "Leven Labs, Inc. DBA Admiral", "pointlessprofit.com": "Leven Labs, Inc. DBA Admiral", + "polishedfolly.com": "Leven Labs, Inc. DBA Admiral", "politeplanes.com": "Leven Labs, Inc. DBA Admiral", "politicalporter.com": "Leven Labs, Inc. DBA Admiral", + "popplantation.com": "Leven Labs, Inc. DBA Admiral", "possibleboats.com": "Leven Labs, Inc. DBA Admiral", "possiblepencil.com": "Leven Labs, Inc. DBA Admiral", "potatoinvention.com": "Leven Labs, Inc. DBA Admiral", @@ -51014,7 +51547,9 @@ "profusesupport.com": "Leven Labs, Inc. DBA Admiral", "protestcopy.com": "Leven Labs, Inc. DBA Admiral", "psychedelicarithmetic.com": "Leven Labs, Inc. DBA Admiral", + "publicsofa.com": "Leven Labs, Inc. DBA Admiral", "puffypurpose.com": "Leven Labs, Inc. DBA Admiral", + "pulsatingmeadow.com": "Leven Labs, Inc. DBA Admiral", "pumpedpancake.com": "Leven Labs, Inc. DBA Admiral", "punyplant.com": "Leven Labs, Inc. DBA Admiral", "purposepipe.com": "Leven Labs, Inc. DBA Admiral", @@ -51049,6 +51584,8 @@ "regularplants.com": "Leven Labs, Inc. DBA Admiral", "regulatesleet.com": "Leven Labs, Inc. DBA Admiral", "rehabilitatereason.com": "Leven Labs, Inc. DBA Admiral", + "relationrest.com": "Leven Labs, Inc. DBA Admiral", + "rememberdiscussion.com": "Leven Labs, Inc. DBA Admiral", "repeatsweater.com": "Leven Labs, Inc. DBA Admiral", "replaceroute.com": "Leven Labs, Inc. DBA Admiral", "resonantbrush.com": "Leven Labs, Inc. DBA Admiral", @@ -51106,6 +51643,7 @@ "selfishsnake.com": "Leven Labs, Inc. DBA Admiral", "separatesort.com": "Leven Labs, Inc. DBA Admiral", "seraphicjubilee.com": "Leven Labs, Inc. DBA Admiral", + "serenecascade.com": "Leven Labs, Inc. DBA Admiral", "serenepebble.com": "Leven Labs, Inc. DBA Admiral", "serioussuit.com": "Leven Labs, Inc. DBA Admiral", "serpentshampoo.com": "Leven Labs, Inc. DBA Admiral", @@ -51209,6 +51747,7 @@ "stupendoussleet.com": "Leven Labs, Inc. DBA Admiral", "stupendoussnow.com": "Leven Labs, Inc. DBA Admiral", "stupidscene.com": "Leven Labs, Inc. DBA Admiral", + "sublimequartz.com": "Leven Labs, Inc. DBA Admiral", "succeedscene.com": "Leven Labs, Inc. DBA Admiral", "sugarfriction.com": "Leven Labs, Inc. DBA Admiral", "suggestionbridge.com": "Leven Labs, Inc. DBA Admiral", @@ -51230,6 +51769,7 @@ "tangycover.com": "Leven Labs, Inc. DBA Admiral", "tastelesstrees.com": "Leven Labs, Inc. DBA Admiral", "tastelesstrucks.com": "Leven Labs, Inc. DBA Admiral", + "tearfulglass.com": "Leven Labs, Inc. DBA Admiral", "tediousticket.com": "Leven Labs, Inc. DBA Admiral", "teenytinycellar.com": "Leven Labs, Inc. DBA Admiral", "teenytinyshirt.com": "Leven Labs, Inc. DBA Admiral", @@ -51245,6 +51785,7 @@ "thomastorch.com": "Leven Labs, Inc. DBA Admiral", "thoughtlessknot.com": "Leven Labs, Inc. DBA Admiral", "threetruck.com": "Leven Labs, Inc. DBA Admiral", + "thrivingmarketplace.com": "Leven Labs, Inc. DBA Admiral", "ticketaunt.com": "Leven Labs, Inc. DBA Admiral", "tidymitten.com": "Leven Labs, Inc. DBA Admiral", "tiredthroat.com": "Leven Labs, Inc. DBA Admiral", @@ -51293,12 +51834,14 @@ "verdantlabyrinth.com": "Leven Labs, Inc. DBA Admiral", "verdantloom.com": "Leven Labs, Inc. DBA Admiral", "verseballs.com": "Leven Labs, Inc. DBA Admiral", + "vibrantcelebration.com": "Leven Labs, Inc. DBA Admiral", "vibrantgale.com": "Leven Labs, Inc. DBA Admiral", "vibranthaven.com": "Leven Labs, Inc. DBA Admiral", "vibrantpact.com": "Leven Labs, Inc. DBA Admiral", "vibranttalisman.com": "Leven Labs, Inc. DBA Admiral", "virtualvincent.com": "Leven Labs, Inc. DBA Admiral", "vividcanopy.com": "Leven Labs, Inc. DBA Admiral", + "vividfrost.com": "Leven Labs, Inc. DBA Admiral", "vividmeadow.com": "Leven Labs, Inc. DBA Admiral", "vividplume.com": "Leven Labs, Inc. DBA Admiral", "volatileprofit.com": "Leven Labs, Inc. DBA Admiral", @@ -51317,11 +51860,14 @@ "whispermeeting.com": "Leven Labs, Inc. DBA Admiral", "wildcommittee.com": "Leven Labs, Inc. DBA Admiral", "wistfulwaste.com": "Leven Labs, Inc. DBA Admiral", + "wittyshack.com": "Leven Labs, Inc. DBA Admiral", "workoperation.com": "Leven Labs, Inc. DBA Admiral", "wretchedfloor.com": "Leven Labs, Inc. DBA Admiral", "wrongwound.com": "Leven Labs, Inc. DBA Admiral", "zephyrlabyrinth.com": "Leven Labs, Inc. DBA Admiral", "zestycrime.com": "Leven Labs, Inc. DBA Admiral", + "zestyhorizon.com": "Leven Labs, Inc. DBA Admiral", + "zestyrover.com": "Leven Labs, Inc. DBA Admiral", "zipperxray.com": "Leven Labs, Inc. DBA Admiral", "zlp6s.pw": "Leven Labs, Inc. DBA Admiral", "abtasty.com": "AB Tasty", diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index 52397206fc..39f9bbc866 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -8274,7 +8274,7 @@ CODE_SIGN_ENTITLEMENTS = PacketTunnelProvider/PacketTunnelProvider.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -8311,7 +8311,7 @@ CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -8403,7 +8403,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = ShareExtension/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; @@ -8431,7 +8431,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -8581,7 +8581,7 @@ CODE_SIGN_ENTITLEMENTS = DuckDuckGo/DuckDuckGo.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_ASSET_PATHS = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; @@ -8607,7 +8607,7 @@ CODE_SIGN_ENTITLEMENTS = DuckDuckGo/DuckDuckGo.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; INFOPLIST_FILE = DuckDuckGo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; @@ -8672,7 +8672,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEAD_CODE_STRIPPING = NO; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = Widgets/Info.plist; @@ -8707,7 +8707,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEAD_CODE_STRIPPING = NO; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; @@ -8741,7 +8741,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = OpenAction/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; @@ -8772,7 +8772,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -9059,7 +9059,7 @@ CODE_SIGN_ENTITLEMENTS = DuckDuckGo/DuckDuckGoAlpha.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_ASSET_PATHS = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; @@ -9090,7 +9090,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = ShareExtension/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; @@ -9119,7 +9119,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = OpenAction/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; @@ -9153,7 +9153,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEAD_CODE_STRIPPING = NO; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = Widgets/Info.plist; @@ -9184,7 +9184,7 @@ CODE_SIGN_ENTITLEMENTS = PacketTunnelProvider/PacketTunnelProviderAlpha.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -9217,11 +9217,11 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 0; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Core/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -9455,7 +9455,7 @@ CODE_SIGN_ENTITLEMENTS = DuckDuckGo/DuckDuckGoAlpha.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_ASSET_PATHS = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; @@ -9482,7 +9482,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -9515,7 +9515,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -9553,7 +9553,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEAD_CODE_STRIPPING = NO; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; @@ -9589,7 +9589,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -9624,11 +9624,11 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 0; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Core/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -9802,11 +9802,11 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 0; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Core/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -9835,10 +9835,10 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + 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 6d8d1c4707..8e89d59cf3 100644 --- a/DuckDuckGo/Settings.bundle/Root.plist +++ b/DuckDuckGo/Settings.bundle/Root.plist @@ -6,7 +6,7 @@ DefaultValue - 7.114.0 + 7.115.0 Key version Title diff --git a/fastlane/metadata/default/release_notes.txt b/fastlane/metadata/default/release_notes.txt index 6cd7a9e939..724fb1cdd2 100644 --- a/fastlane/metadata/default/release_notes.txt +++ b/fastlane/metadata/default/release_notes.txt @@ -1,3 +1,4 @@ +- We added a new setting that lets you see full website addresses in the address bar. - Bug fixes and other improvements. Join our fully distributed team and help raise the standard of trust online! https://duckduckgo.com/hiring From f0f1ac50d150d201641e84fbc13b6e9da669e531 Mon Sep 17 00:00:00 2001 From: Daniel Bernal Date: Mon, 8 Apr 2024 18:20:05 +0200 Subject: [PATCH 03/63] Do not signout user on API failure (#2698) Task/Issue URL: https://app.asana.com/0/414235014887631/1207023339673018/f Description: Do not signOut user on Backend Failure --- DuckDuckGo/SettingsViewModel.swift | 3 --- .../ViewModel/SubscriptionSettingsViewModel.swift | 8 +++----- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/DuckDuckGo/SettingsViewModel.swift b/DuckDuckGo/SettingsViewModel.swift index 2ef9137929..00135bbddf 100644 --- a/DuckDuckGo/SettingsViewModel.swift +++ b/DuckDuckGo/SettingsViewModel.swift @@ -430,9 +430,6 @@ extension SettingsViewModel { // Account is active but there's not a valid subscription / entitlements if await PurchaseManager.hasActiveSubscription() { state.subscription.isSubscriptionPendingActivation = true - } else { - // Sign out in case access token is present but no subscription and there is no active transaction on Apple ID - signOutUser() } } diff --git a/DuckDuckGo/Subscription/ViewModel/SubscriptionSettingsViewModel.swift b/DuckDuckGo/Subscription/ViewModel/SubscriptionSettingsViewModel.swift index d7d3134d2c..b5b5ab21ee 100644 --- a/DuckDuckGo/Subscription/ViewModel/SubscriptionSettingsViewModel.swift +++ b/DuckDuckGo/Subscription/ViewModel/SubscriptionSettingsViewModel.swift @@ -84,11 +84,9 @@ final class SubscriptionSettingsViewModel: ObservableObject { date: subscription.expiresOrRenewsAt, product: subscription.productId, billingPeriod: subscription.billingPeriod) - case .failure: - AccountManager().signOut() - DispatchQueue.main.async { - self.state.shouldDismissView = true - } + default: + return + } } } From aa3b5f073c4a2f027972eabbf3f9447050ce4200 Mon Sep 17 00:00:00 2001 From: Daniel Bernal Date: Mon, 8 Apr 2024 19:45:04 +0200 Subject: [PATCH 04/63] Refresh token on Appear (#2699) Task/Issue URL: https://app.asana.com/0/414235014887631/1207023339673019/f Description: Refreshes the token when entering subscription settings --- .../ViewModel/SubscriptionRestoreViewModel.swift | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/DuckDuckGo/Subscription/ViewModel/SubscriptionRestoreViewModel.swift b/DuckDuckGo/Subscription/ViewModel/SubscriptionRestoreViewModel.swift index 8d1482f65c..015acfa306 100644 --- a/DuckDuckGo/Subscription/ViewModel/SubscriptionRestoreViewModel.swift +++ b/DuckDuckGo/Subscription/ViewModel/SubscriptionRestoreViewModel.swift @@ -79,13 +79,19 @@ final class SubscriptionRestoreViewModel: ObservableObject { func onFirstAppear() async { Pixel.fire(pixel: .privacyProSettingsAddDevice) await setupTransactionObserver() + await refreshToken() } private func cleanUp() { subFeature.cleanup() cancellables.removeAll() } - + + private func refreshToken() async { + if state.isAddingDevice { + await AppStoreAccountManagementFlow.refreshAuthTokenIfNeeded(subscriptionAppGroup: Bundle.main.appGroup(bundle: .subs)) + } + } private func setupContent() async { if state.isAddingDevice { From df4ef4b0619f96ebb64ff7f4f1cd21a4836fd9ff Mon Sep 17 00:00:00 2001 From: Michal Smaga Date: Mon, 8 Apr 2024 19:54:22 +0200 Subject: [PATCH 05/63] Release 7.114.1-0 (#2700) --- Configuration/Version.xcconfig | 2 +- DuckDuckGo.xcodeproj/project.pbxproj | 56 +++++++++++++-------------- DuckDuckGo/Settings.bundle/Root.plist | 2 +- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/Configuration/Version.xcconfig b/Configuration/Version.xcconfig index cb3615d8f4..3003e974b3 100644 --- a/Configuration/Version.xcconfig +++ b/Configuration/Version.xcconfig @@ -1 +1 @@ -MARKETING_VERSION = 7.114.0 +MARKETING_VERSION = 7.114.1 diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index 4f16f1dc8c..f537ec6d44 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -8282,7 +8282,7 @@ CODE_SIGN_ENTITLEMENTS = PacketTunnelProvider/PacketTunnelProvider.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -8319,7 +8319,7 @@ CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -8411,7 +8411,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = ShareExtension/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; @@ -8439,7 +8439,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -8589,7 +8589,7 @@ CODE_SIGN_ENTITLEMENTS = DuckDuckGo/DuckDuckGo.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_ASSET_PATHS = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; @@ -8615,7 +8615,7 @@ CODE_SIGN_ENTITLEMENTS = DuckDuckGo/DuckDuckGo.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; INFOPLIST_FILE = DuckDuckGo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; @@ -8680,7 +8680,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEAD_CODE_STRIPPING = NO; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = Widgets/Info.plist; @@ -8715,7 +8715,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEAD_CODE_STRIPPING = NO; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; @@ -8749,7 +8749,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = OpenAction/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; @@ -8780,7 +8780,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -9067,7 +9067,7 @@ CODE_SIGN_ENTITLEMENTS = DuckDuckGo/DuckDuckGoAlpha.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_ASSET_PATHS = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; @@ -9098,7 +9098,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = ShareExtension/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; @@ -9127,7 +9127,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = OpenAction/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; @@ -9161,7 +9161,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEAD_CODE_STRIPPING = NO; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = Widgets/Info.plist; @@ -9192,7 +9192,7 @@ CODE_SIGN_ENTITLEMENTS = PacketTunnelProvider/PacketTunnelProviderAlpha.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -9225,11 +9225,11 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 0; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Core/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -9463,7 +9463,7 @@ CODE_SIGN_ENTITLEMENTS = DuckDuckGo/DuckDuckGoAlpha.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_ASSET_PATHS = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; @@ -9490,7 +9490,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -9523,7 +9523,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -9561,7 +9561,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEAD_CODE_STRIPPING = NO; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; @@ -9597,7 +9597,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = HKE973VLUW; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -9632,11 +9632,11 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 0; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Core/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -9810,11 +9810,11 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 0; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Core/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -9843,10 +9843,10 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 0; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + 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 6d8d1c4707..34b2a5a1c3 100644 --- a/DuckDuckGo/Settings.bundle/Root.plist +++ b/DuckDuckGo/Settings.bundle/Root.plist @@ -6,7 +6,7 @@ DefaultValue - 7.114.0 + 7.114.1 Key version Title From 93bdf47e30a2578a99d45aab4e37cf30dd48e250 Mon Sep 17 00:00:00 2001 From: Sam Symons Date: Mon, 8 Apr 2024 14:39:46 -0700 Subject: [PATCH 06/63] Avoid caching a PrivacyConfig instance in FeatureFlagger (#2692) Task/Issue URL: https://app.asana.com/0/414235014887631/1206053496104935/f Tech Design URL: CC: Description: This PR updates FeatureFlagger to no longer cache a PrivacyConfig instance. --- DuckDuckGo.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/swiftpm/Package.resolved | 4 ++-- DuckDuckGo/AppDependencyProvider.swift | 6 ++++-- DuckDuckGoTests/AppUserDefaultsTests.swift | 2 +- .../NetworkProtectionAccessControllerTests.swift | 2 +- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index 39f9bbc866..ab4479a1f8 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -10037,7 +10037,7 @@ repositoryURL = "https://github.com/DuckDuckGo/BrowserServicesKit"; requirement = { kind = exactVersion; - version = 132.0.2; + version = 133.0.0; }; }; 9F8FE9472BAE50E50071E372 /* XCRemoteSwiftPackageReference "lottie-spm" */ = { diff --git a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 4a21ca3ba9..0f4ed09e01 100644 --- a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -32,8 +32,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/DuckDuckGo/BrowserServicesKit", "state" : { - "revision" : "5199a6964e183c3d001b188286bbabeca93c8849", - "version" : "132.0.2" + "revision" : "c0b0cb55e7ac2f69d10452e1a5c06713155d798e", + "version" : "133.0.0" } }, { diff --git a/DuckDuckGo/AppDependencyProvider.swift b/DuckDuckGo/AppDependencyProvider.swift index 8a1361cfef..09281657e9 100644 --- a/DuckDuckGo/AppDependencyProvider.swift +++ b/DuckDuckGo/AppDependencyProvider.swift @@ -54,8 +54,10 @@ class AppDependencyProvider: DependencyProvider { let variantManager: VariantManager = DefaultVariantManager() let internalUserDecider: InternalUserDecider = ContentBlocking.shared.privacyConfigurationManager.internalUserDecider - private lazy var privacyConfig: PrivacyConfiguration = ContentBlocking.shared.privacyConfigurationManager.privacyConfig - lazy var featureFlagger: FeatureFlagger = DefaultFeatureFlagger(internalUserDecider: internalUserDecider, privacyConfig: privacyConfig) + lazy var featureFlagger: FeatureFlagger = DefaultFeatureFlagger( + internalUserDecider: internalUserDecider, + privacyConfigManager: ContentBlocking.shared.privacyConfigurationManager + ) let remoteMessagingStore: RemoteMessagingStore = RemoteMessagingStore() lazy var homePageConfiguration: HomePageConfiguration = HomePageConfiguration(variantManager: variantManager, diff --git a/DuckDuckGoTests/AppUserDefaultsTests.swift b/DuckDuckGoTests/AppUserDefaultsTests.swift index 8556b0643d..a523960d40 100644 --- a/DuckDuckGoTests/AppUserDefaultsTests.swift +++ b/DuckDuckGoTests/AppUserDefaultsTests.swift @@ -201,7 +201,7 @@ class AppUserDefaultsTests: XCTestCase { mockManager.privacyConfig = mockConfiguration(subfeatureEnabled: enabled) let internalUserDecider = DefaultInternalUserDecider(store: internalUserDeciderStore) - return DefaultFeatureFlagger(internalUserDecider: internalUserDecider, privacyConfig: mockManager.privacyConfig) + return DefaultFeatureFlagger(internalUserDecider: internalUserDecider, privacyConfigManager: mockManager) } private func mockConfiguration(subfeatureEnabled: Bool) -> PrivacyConfiguration { diff --git a/DuckDuckGoTests/NetworkProtectionAccessControllerTests.swift b/DuckDuckGoTests/NetworkProtectionAccessControllerTests.swift index d3fc9e8294..2f4f358689 100644 --- a/DuckDuckGoTests/NetworkProtectionAccessControllerTests.swift +++ b/DuckDuckGoTests/NetworkProtectionAccessControllerTests.swift @@ -162,7 +162,7 @@ final class NetworkProtectionAccessControllerTests: XCTestCase { mockManager.privacyConfig = mockConfiguration(subfeatureEnabled: enabled) let internalUserDecider = DefaultInternalUserDecider(store: internalUserDeciderStore) - return DefaultFeatureFlagger(internalUserDecider: internalUserDecider, privacyConfig: mockManager.privacyConfig) + return DefaultFeatureFlagger(internalUserDecider: internalUserDecider, privacyConfigManager: mockManager) } private func mockConfiguration(subfeatureEnabled: Bool) -> PrivacyConfiguration { From 2b0a8dcf5663317f7cb3433a8f1743b354fb6336 Mon Sep 17 00:00:00 2001 From: Dax Mobile <44842493+daxmobile@users.noreply.github.com> Date: Tue, 9 Apr 2024 18:06:10 +0200 Subject: [PATCH 07/63] Update BSK with autofill 11.0.1 (#2704) Task/Issue URL: https://app.asana.com/0/1207038392239720/1207038392239720 Autofill Release: https://github.com/duckduckgo/duckduckgo-autofill/releases/tag/11.0.1 BSK PR: duckduckgo/BrowserServicesKit#769 Description Updates Autofill to version 11.0.1. --- DuckDuckGo.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/swiftpm/Package.resolved | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index ab4479a1f8..9f14f04b51 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -10037,7 +10037,7 @@ repositoryURL = "https://github.com/DuckDuckGo/BrowserServicesKit"; requirement = { kind = exactVersion; - version = 133.0.0; + version = 133.0.1; }; }; 9F8FE9472BAE50E50071E372 /* XCRemoteSwiftPackageReference "lottie-spm" */ = { diff --git a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 0f4ed09e01..2ca1858aed 100644 --- a/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -32,8 +32,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/DuckDuckGo/BrowserServicesKit", "state" : { - "revision" : "c0b0cb55e7ac2f69d10452e1a5c06713155d798e", - "version" : "133.0.0" + "revision" : "39d74829150a9ecffea2f503c01851e54eda8ad1", + "version" : "133.0.1" } }, { @@ -68,8 +68,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/duckduckgo/duckduckgo-autofill.git", "state" : { - "revision" : "6493e296934bf09277c03df45f11f4619711cb24", - "version" : "10.2.0" + "revision" : "6053999d6af384a716ab0ce7205dbab5d70ed1b3", + "version" : "11.0.1" } }, { From 9a9cd029480bc6ed68d039a08aac07f7224b7b77 Mon Sep 17 00:00:00 2001 From: Tom Strba <57389842+tomasstrba@users.noreply.github.com> Date: Tue, 9 Apr 2024 19:06:22 +0200 Subject: [PATCH 08/63] Updated settings (#2603) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task/Issue URL: https://app.asana.com/0/0/1206668965195606/f Description: New Settings layout with Privacy Protections, Main Settings, Next Steps and others. It also includes the implementation of pixel experiment for monitoring the usage of old and new Settings to make sure we don't harm the experience. ℹ️ The experiment will be activated in a follow-up PR after running experiments on iOS are over. --- Core/AppURLs.swift | 9 + Core/Pixel.swift | 3 + Core/PixelEvent.swift | 108 +++- Core/PixelExperiment.swift | 150 +++++ Core/UserDefaultsPropertyWrapper.swift | 3 + DuckDuckGo.xcodeproj/project.pbxproj | 196 ++++-- DuckDuckGo/AboutView.swift | 94 +++ ...ler.swift => AboutViewControllerOld.swift} | 20 +- DuckDuckGo/AppDelegate+AppDeepLinks.swift | 4 + DuckDuckGo/AppDelegate.swift | 3 + .../AppIconSettingsViewController.swift | 4 + .../AutoClearSettingsViewController.swift | 4 + .../AutoconsentSettingsViewController.swift | 18 +- ...ofillLoginSettingsListViewController.swift | 6 +- DuckDuckGo/CookiePopUpProtectionView.swift | 61 ++ .../DoNotSellSettingsViewController.swift | 5 + DuckDuckGo/EmailProtectionView.swift | 103 +++ DuckDuckGo/MainViewController+Segues.swift | 2 + DuckDuckGo/PrivateSearchView.swift | 112 ++++ .../Colors/AlertGreen.colorset/Contents.json | 20 + .../Settings.xcassets/Colors/Contents.json | 6 + DuckDuckGo/Settings.xcassets/Contents.json | 6 + .../Settings.xcassets/Images/Contents.json | 6 + .../Accessibility.pdf | Bin 0 -> 5806 bytes .../Contents.json | 12 + .../SettingsAddToDock.imageset/AddToDock.pdf | Bin 0 -> 3415 bytes .../SettingsAddToDock.imageset/Contents.json | 12 + .../SettingsAddWidget.imageset/AddWidget.pdf | Bin 0 -> 5029 bytes .../SettingsAddWidget.imageset/Contents.json | 12 + .../AddressBarPosition.pdf | Bin 0 -> 4937 bytes .../Contents.json | 12 + .../Appearance.pdf | Bin 0 -> 7129 bytes .../SettingsAppearance.imageset/Contents.json | 12 + .../Contents.json | 12 + .../CookiePopUpProtection.pdf | Bin 0 -> 3757 bytes .../Contents.json | 12 + .../Cookie-Popups-128.pdf | Bin 0 -> 9883 bytes .../Contents.json | 12 + .../DataClearing.pdf | Bin 0 -> 8793 bytes .../Contents.json | 12 + .../DefaultBrowser.pdf | Bin 0 -> 3679 bytes .../Contents.json | 12 + .../EmailProtection.pdf | Bin 0 -> 5635 bytes .../Contents.json | 12 + .../Email-Protection-128.pdf | Bin 0 -> 9466 bytes .../SettingsFeedback.imageset/Contents.json | 12 + .../SettingsFeedback.imageset/Feedback.pdf | Bin 0 -> 2868 bytes .../SettingsGeneral.imageset/Contents.json | 12 + .../SettingsGeneral.imageset/General.pdf | Bin 0 -> 7806 bytes .../SettingsLink.imageset/Contents.json | 15 + .../SettingsLink.imageset/Open-In-16.pdf | Bin 0 -> 2183 bytes .../Contents.json | 12 + .../VPN-24-Multicolor.pdf | Bin 0 -> 5466 bytes .../Contents.json | 12 + .../OtherPlatforms.pdf | Bin 0 -> 1715 bytes .../SettingsPasswords.imageset/Contents.json | 12 + .../SettingsPasswords.imageset/Passwords.pdf | Bin 0 -> 3763 bytes .../SettingsPrivacyPro.imageset/Contents.json | 12 + .../Privacy-Pro-24-Multicolor.pdf | Bin 0 -> 4672 bytes .../Contents.json | 12 + .../Search-OK-128.pdf | Bin 0 -> 8977 bytes .../SettingsSearch.imageset/Contents.json | 12 + .../Images/SettingsSearch.imageset/Search.pdf | Bin 0 -> 2315 bytes .../SettingsSync.imageset/Contents.json | 12 + .../Images/SettingsSync.imageset/Sync.pdf | Bin 0 -> 10251 bytes .../Contents.json | 12 + .../Microphone-Color-24.pdf | Bin 0 -> 3431 bytes .../Contents.json | 12 + .../WebTrackingProtection.pdf | Bin 0 -> 6040 bytes .../Contents.json | 12 + .../Shield-Check-128.pdf | Bin 0 -> 10216 bytes ...tView.swift => SettingsAboutViewOld.swift} | 6 +- DuckDuckGo/SettingsAccessibilityView.swift | 70 ++ DuckDuckGo/SettingsAppearanceView.swift | 66 ++ ...swift => SettingsAppeareanceViewOld.swift} | 6 +- DuckDuckGo/SettingsCell.swift | 19 +- DuckDuckGo/SettingsDataClearingView.swift | 62 ++ DuckDuckGo/SettingsGeneralView.swift | 79 ++- DuckDuckGo/SettingsGeneralViewOld.swift | 45 ++ DuckDuckGo/SettingsHostingController.swift | 7 +- DuckDuckGo/SettingsLegacyViewProvider.swift | 4 +- DuckDuckGo/SettingsMainSettingsView.swift | 73 +++ DuckDuckGo/SettingsMoreView.swift | 9 +- DuckDuckGo/SettingsNextStepsView.swift | 56 ++ DuckDuckGo/SettingsOthersView.swift | 51 ++ ...ingsPrivacyProtectionDescriptionView.swift | 64 ++ .../SettingsPrivacyProtectionsView.swift | 79 +++ DuckDuckGo/SettingsRootView.swift | 183 ++++++ DuckDuckGo/SettingsStatus.swift | 69 ++ ...ncView.swift => SettingsSyncViewOld.swift} | 6 +- DuckDuckGo/SettingsView.swift | 27 +- DuckDuckGo/SettingsViewModel.swift | 270 +++++++- ...bViewControllerBrowsingMenuExtension.swift | 1 - DuckDuckGo/UserText.swift | 61 +- DuckDuckGo/VoiceSearchFeedbackView.swift | 2 +- DuckDuckGo/WebTrackingProtectionView.swift | 67 ++ DuckDuckGo/WidgetEducationView.swift | 5 + DuckDuckGo/bg.lproj/Autocomplete.strings | 3 + DuckDuckGo/bg.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/cs.lproj/Autocomplete.strings | 3 + DuckDuckGo/cs.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/da.lproj/Autocomplete.strings | 3 + DuckDuckGo/da.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/de.lproj/Autocomplete.strings | 3 + DuckDuckGo/de.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/el.lproj/Autocomplete.strings | 3 + DuckDuckGo/el.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/en.lproj/Localizable.strings | 99 ++- DuckDuckGo/es.lproj/Autocomplete.strings | 3 + DuckDuckGo/es.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/et.lproj/Autocomplete.strings | 3 + DuckDuckGo/et.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/fi.lproj/Autocomplete.strings | 3 + DuckDuckGo/fi.lproj/Localizable.strings | 601 ++++++++++++++--- DuckDuckGo/fr.lproj/Autocomplete.strings | 3 + DuckDuckGo/fr.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/hr.lproj/Autocomplete.strings | 3 + DuckDuckGo/hr.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/hu.lproj/Autocomplete.strings | 3 + DuckDuckGo/hu.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/it.lproj/Autocomplete.strings | 3 + DuckDuckGo/it.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/lt.lproj/Autocomplete.strings | 3 + DuckDuckGo/lt.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/lv.lproj/Autocomplete.strings | 3 + DuckDuckGo/lv.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/nb.lproj/Autocomplete.strings | 3 + DuckDuckGo/nb.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/nl.lproj/Autocomplete.strings | 3 + DuckDuckGo/nl.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/pl.lproj/Autocomplete.strings | 3 + DuckDuckGo/pl.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/pt.lproj/Autocomplete.strings | 3 + DuckDuckGo/pt.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/ro.lproj/Autocomplete.strings | 3 + DuckDuckGo/ro.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/ru.lproj/Autocomplete.strings | 3 + DuckDuckGo/ru.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/sk.lproj/Autocomplete.strings | 3 + DuckDuckGo/sk.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/sl.lproj/Autocomplete.strings | 3 + DuckDuckGo/sl.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/sv.lproj/Autocomplete.strings | 3 + DuckDuckGo/sv.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGo/tr.lproj/Autocomplete.strings | 3 + DuckDuckGo/tr.lproj/Localizable.strings | 603 +++++++++++++++--- DuckDuckGoTests/PixelExperimentTests.swift | 86 +++ .../Resources/bg.lproj/Localizable.strings | 20 +- .../bg.lproj/Localizable.stringsdict | 42 ++ .../Resources/cs.lproj/Localizable.strings | 20 +- .../cs.lproj/Localizable.stringsdict | 50 ++ .../Resources/da.lproj/Localizable.strings | 20 +- .../da.lproj/Localizable.stringsdict | 42 ++ .../Resources/de.lproj/Localizable.strings | 20 +- .../de.lproj/Localizable.stringsdict | 42 ++ .../Resources/el.lproj/Localizable.strings | 20 +- .../el.lproj/Localizable.stringsdict | 42 ++ .../Resources/es.lproj/Localizable.strings | 20 +- .../es.lproj/Localizable.stringsdict | 42 ++ .../Resources/et.lproj/Localizable.strings | 20 +- .../et.lproj/Localizable.stringsdict | 42 ++ .../Resources/fi.lproj/Localizable.strings | 20 +- .../fi.lproj/Localizable.stringsdict | 42 ++ .../Resources/fr.lproj/Localizable.strings | 20 +- .../fr.lproj/Localizable.stringsdict | 42 ++ .../Resources/hr.lproj/Localizable.strings | 20 +- .../hr.lproj/Localizable.stringsdict | 46 ++ .../Resources/hu.lproj/Localizable.strings | 20 +- .../hu.lproj/Localizable.stringsdict | 42 ++ .../Resources/it.lproj/Localizable.strings | 20 +- .../it.lproj/Localizable.stringsdict | 42 ++ .../Resources/lt.lproj/Localizable.strings | 20 +- .../lt.lproj/Localizable.stringsdict | 50 ++ .../Resources/lv.lproj/Localizable.strings | 20 +- .../lv.lproj/Localizable.stringsdict | 42 ++ .../Resources/nb.lproj/Localizable.strings | 20 +- .../nb.lproj/Localizable.stringsdict | 42 ++ .../Resources/nl.lproj/Localizable.strings | 20 +- .../nl.lproj/Localizable.stringsdict | 42 ++ .../Resources/pl.lproj/Localizable.strings | 20 +- .../pl.lproj/Localizable.stringsdict | 50 ++ .../Resources/pt.lproj/Localizable.strings | 20 +- .../pt.lproj/Localizable.stringsdict | 42 ++ .../Resources/ro.lproj/Localizable.strings | 20 +- .../ro.lproj/Localizable.stringsdict | 46 ++ .../Resources/ru.lproj/Localizable.strings | 20 +- .../ru.lproj/Localizable.stringsdict | 50 ++ .../Resources/sk.lproj/Localizable.strings | 20 +- .../sk.lproj/Localizable.stringsdict | 50 ++ .../Resources/sl.lproj/Localizable.strings | 20 +- .../sl.lproj/Localizable.stringsdict | 50 ++ .../Resources/sv.lproj/Localizable.strings | 20 +- .../sv.lproj/Localizable.stringsdict | 42 ++ .../Resources/tr.lproj/Localizable.strings | 20 +- .../tr.lproj/Localizable.stringsdict | 42 ++ .../bg.lproj/Localizable.strings | 3 + .../cs.lproj/Localizable.strings | 3 + .../da.lproj/Localizable.strings | 3 + .../de.lproj/Localizable.strings | 3 + .../el.lproj/Localizable.strings | 3 + .../es.lproj/Localizable.strings | 3 + .../et.lproj/Localizable.strings | 3 + .../fi.lproj/Localizable.strings | 3 + .../fr.lproj/Localizable.strings | 3 + .../hr.lproj/Localizable.strings | 3 + .../hu.lproj/Localizable.strings | 3 + .../it.lproj/Localizable.strings | 3 + .../lt.lproj/Localizable.strings | 3 + .../lv.lproj/Localizable.strings | 3 + .../nb.lproj/Localizable.strings | 3 + .../nl.lproj/Localizable.strings | 3 + .../pl.lproj/Localizable.strings | 3 + .../pt.lproj/Localizable.strings | 3 + .../ro.lproj/Localizable.strings | 3 + .../ru.lproj/Localizable.strings | 3 + .../sk.lproj/Localizable.strings | 3 + .../sl.lproj/Localizable.strings | 3 + .../sv.lproj/Localizable.strings | 3 + .../tr.lproj/Localizable.strings | 3 + 219 files changed, 16915 insertions(+), 2049 deletions(-) create mode 100644 Core/PixelExperiment.swift create mode 100644 DuckDuckGo/AboutView.swift rename DuckDuckGo/{AboutViewController.swift => AboutViewControllerOld.swift} (83%) create mode 100644 DuckDuckGo/CookiePopUpProtectionView.swift create mode 100644 DuckDuckGo/EmailProtectionView.swift create mode 100644 DuckDuckGo/PrivateSearchView.swift create mode 100644 DuckDuckGo/Settings.xcassets/Colors/AlertGreen.colorset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Colors/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsAccessibility.imageset/Accessibility.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsAccessibility.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsAddToDock.imageset/AddToDock.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsAddToDock.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsAddWidget.imageset/AddWidget.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsAddWidget.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsAddressBarPosition.imageset/AddressBarPosition.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsAddressBarPosition.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsAppearance.imageset/Appearance.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsAppearance.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsCookiePopUpProtection.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsCookiePopUpProtection.imageset/CookiePopUpProtection.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsCookiePopUpProtectionContent.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsCookiePopUpProtectionContent.imageset/Cookie-Popups-128.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsDataClearing.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsDataClearing.imageset/DataClearing.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsDefaultBrowser.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsDefaultBrowser.imageset/DefaultBrowser.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsEmailProtection.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsEmailProtection.imageset/EmailProtection.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsEmailProtectionContent.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsEmailProtectionContent.imageset/Email-Protection-128.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsFeedback.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsFeedback.imageset/Feedback.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsGeneral.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsGeneral.imageset/General.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsLink.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsLink.imageset/Open-In-16.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsNetworkProtection.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsNetworkProtection.imageset/VPN-24-Multicolor.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsOtherPlatforms.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsOtherPlatforms.imageset/OtherPlatforms.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsPasswords.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsPasswords.imageset/Passwords.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsPrivacyPro.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsPrivacyPro.imageset/Privacy-Pro-24-Multicolor.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsPrivateSearchContent.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsPrivateSearchContent.imageset/Search-OK-128.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsSearch.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsSearch.imageset/Search.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsSync.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsSync.imageset/Sync.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsVoiceSearch.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsVoiceSearch.imageset/Microphone-Color-24.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsWebTrackingProtection.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsWebTrackingProtection.imageset/WebTrackingProtection.pdf create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsWebTrackingProtectionContent.imageset/Contents.json create mode 100644 DuckDuckGo/Settings.xcassets/Images/SettingsWebTrackingProtectionContent.imageset/Shield-Check-128.pdf rename DuckDuckGo/{SettingsAboutView.swift => SettingsAboutViewOld.swift} (95%) create mode 100644 DuckDuckGo/SettingsAccessibilityView.swift create mode 100644 DuckDuckGo/SettingsAppearanceView.swift rename DuckDuckGo/{SettingsAppeareanceView.swift => SettingsAppeareanceViewOld.swift} (96%) create mode 100644 DuckDuckGo/SettingsDataClearingView.swift create mode 100644 DuckDuckGo/SettingsGeneralViewOld.swift create mode 100644 DuckDuckGo/SettingsMainSettingsView.swift create mode 100644 DuckDuckGo/SettingsNextStepsView.swift create mode 100644 DuckDuckGo/SettingsOthersView.swift create mode 100644 DuckDuckGo/SettingsPrivacyProtectionDescriptionView.swift create mode 100644 DuckDuckGo/SettingsPrivacyProtectionsView.swift create mode 100644 DuckDuckGo/SettingsRootView.swift create mode 100644 DuckDuckGo/SettingsStatus.swift rename DuckDuckGo/{SettingsSyncView.swift => SettingsSyncViewOld.swift} (95%) create mode 100644 DuckDuckGo/WebTrackingProtectionView.swift create mode 100644 DuckDuckGoTests/PixelExperimentTests.swift create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/bg.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/cs.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/da.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/de.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/el.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/es.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/et.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/fi.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/fr.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/hr.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/hu.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/it.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/lt.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/lv.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/nb.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/nl.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/pl.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/pt.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/ro.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/ru.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/sk.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/sl.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/sv.lproj/Localizable.stringsdict create mode 100644 LocalPackages/SyncUI/Sources/SyncUI/Resources/tr.lproj/Localizable.stringsdict diff --git a/Core/AppURLs.swift b/Core/AppURLs.swift index a1c6b1c9d2..ca66fc263e 100644 --- a/Core/AppURLs.swift +++ b/Core/AppURLs.swift @@ -20,6 +20,8 @@ import BrowserServicesKit import Foundation +// swiftlint:disable line_length + public extension URL { private static let base: String = ProcessInfo.processInfo.environment["BASE_URL", default: "https://duckduckgo.com"] @@ -31,7 +33,12 @@ public extension URL { 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 emailProtectionAccountLink = URL(string: AppDeepLinkSchemes.quickLink.appending("\(ddg.host!)/email/settings/account"))! + static let emailProtectionSupportLink = URL(string: AppDeepLinkSchemes.quickLink.appending("\(ddg.host!)/email/settings/support"))! + static let emailProtectionHelpPageLink = URL(string: AppDeepLinkSchemes.quickLink.appending("\(ddg.host!)/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/"))! static let aboutLink = URL(string: AppDeepLinkSchemes.quickLink.appending("\(ddg.host!)/about"))! + static let apps = URL(string: AppDeepLinkSchemes.quickLink.appending("\(ddg.host!)/apps"))! + static let searchSettings = URL(string: AppDeepLinkSchemes.quickLink.appending("\(ddg.host!)/settings"))! static let surrogates = URL(string: "\(staticBase)/surrogates.txt")! @@ -262,3 +269,5 @@ public final class StatisticsDependentURLFactory { } } + +// swiftlint:enable line_length diff --git a/Core/Pixel.swift b/Core/Pixel.swift index ef0ebe0850..6ed600c4c4 100644 --- a/Core/Pixel.swift +++ b/Core/Pixel.swift @@ -127,6 +127,9 @@ public struct PixelParameters { public static let returnUserErrorCode = "error_code" public static let returnUserOldATB = "old_atb" public static let returnUserNewATB = "new_atb" + + // Pixel Experiment + public static let cohort = "cohort" } public struct PixelValues { diff --git a/Core/PixelEvent.swift b/Core/PixelEvent.swift index 276a6deb85..c247505293 100644 --- a/Core/PixelEvent.swift +++ b/Core/PixelEvent.swift @@ -68,7 +68,6 @@ extension Pixel { case browsingMenuShare case browsingMenuCopy case browsingMenuPrint - case browsingMenuSettings case browsingMenuFindInPage case browsingMenuDisableProtection case browsingMenuEnableProtection @@ -100,8 +99,6 @@ extension Pixel { case homeScreenEditFavorite case homeScreenDeleteFavorite - case autocompleteEnabled - case autocompleteDisabled case autocompleteClickPhrase case autocompleteClickWebsite case autocompleteClickBookmark @@ -124,8 +121,6 @@ extension Pixel { case daxDialogsFireEducationConfirmed case daxDialogsFireEducationCancelled - case defaultBrowserButtonPressedSettings - case widgetsOnboardingCTAPressed case widgetsOnboardingDeclineOptionPressed case widgetsOnboardingMovedToBackground @@ -150,8 +145,7 @@ extension Pixel { case bookmarkImportFailureUnknown case bookmarkExportSuccess case bookmarkExportFailure - - case textSizeSettingsShown + case textSizeSettingsChanged case downloadStarted @@ -596,7 +590,48 @@ extension Pixel { case privacyProVPNAccessRevokedDialogShown case privacyProVPNBetaStoppedWhenPrivacyProEnabled - // Full site address setting + // MARK: Pixel Experiment + case pixelExperimentEnrollment + case settingsPresented + case settingsSetAsDefault + case settingsPrivateSearchOpen + case settingsPrivateSearchAutocompleteOn + case settingsPrivateSearchAutocompleteOff + case settingsVoiceSearchOn + case settingsVoiceSearchOff + case settingsPrivateSearchVoiceSearchOn + case settingsPrivateSearchVoiceSearchOff + case settingsWebTrackingProtectionOpen + case settingsGpcOn + case settingsGpcOff + case settingsEmailProtectionOpen + case settingsEmailProtectionLearnMore + case settingsGeneralOpen + case settingsAutocompleteOn + case settingsAutocompleteOff + case settingsGeneralAutocompleteOn + case settingsGeneralAutocompleteOff + case settingsGeneralVoiceSearchOn + case settingsGeneralVoiceSearchOff + case settingsSyncOpen + case settingsAppearanceOpen + case settingsAddressBarSelectorPressed + case settingsAddressBarTopSelected + case settingsAddressBarBottomSelected + case settingsIconSelectorPressed + case settingsThemeSelectorPressed + case settingsAccessibilityOpen + case settingsAccessiblityTextSize + case settingsAccessibilityVoiceSearchOn + case settingsAccessibilityVoiceSearchOff + case settingsDataClearingOpen + case settingsFireButtonSelectorPressed + case settingsDataClearingClearDataOpen + case settingsAutomaticallyClearDataOpen + case settingsAutomaticallyClearDataOn + case settingsAutomaticallyClearDataOff + case settingsNextStepsAddAppToDock + case settingsNextStepsAddWidget case settingsShowFullSiteAddressEnabled case settingsShowFullSiteAddressDisabled @@ -653,7 +688,6 @@ extension Pixel.Event { case .browsingMenuToggleBrowsingMode: return "mb_dm" case .browsingMenuCopy: return "mb_cp" case .browsingMenuPrint: return "mb_pr" - case .browsingMenuSettings: return "mb_st" case .browsingMenuFindInPage: return "mb_fp" case .browsingMenuDisableProtection: return "mb_wla" case .browsingMenuEnableProtection: return "mb_wlr" @@ -686,8 +720,6 @@ extension Pixel.Event { case .homeScreenEditFavorite: return "mh_ef" case .homeScreenDeleteFavorite: return "mh_df" - case .autocompleteEnabled: return "m_autocomplete_toggled_on" - case .autocompleteDisabled: return "m_autocomplete_toggled_off" case .autocompleteClickPhrase: return "m_autocomplete_click_phrase" case .autocompleteClickWebsite: return "m_autocomplete_click_website" case .autocompleteClickBookmark: return "m_autocomplete_click_bookmark" @@ -710,8 +742,6 @@ extension Pixel.Event { case .daxDialogsFireEducationConfirmed: return "m_dx_fe_co" case .daxDialogsFireEducationCancelled: return "m_dx_fe_ca" - case .defaultBrowserButtonPressedSettings: return "m_db_s" - case .widgetsOnboardingCTAPressed: return "m_o_w_a" case .widgetsOnboardingDeclineOptionPressed: return "m_o_w_d" case .widgetsOnboardingMovedToBackground: return "m_o_w_b" @@ -736,8 +766,7 @@ extension Pixel.Event { case .bookmarkImportFailureUnknown: return "m_bi_e_unknown" case .bookmarkExportSuccess: return "m_be_a" case .bookmarkExportFailure: return "m_be_e" - - case .textSizeSettingsShown: return "m_text_size_settings_shown" + case .textSizeSettingsChanged: return "m_text_size_settings_changed" case .downloadStarted: return "m_download_started" @@ -1169,14 +1198,59 @@ extension Pixel.Event { case .privacyProSubscriptionManagementEmail: return "m_privacy-pro_manage-email_edit_click" case .privacyProSubscriptionManagementPlanBilling: return "m_privacy-pro_settings_change-plan-or-billing_click" case .privacyProSubscriptionManagementRemoval: return "m_privacy-pro_settings_remove-from-device_click" + + // MARK: Pixel Experiment + case .pixelExperimentEnrollment: return "pixel_experiment_enrollment" + case .settingsPresented: return "m_settings_presented" + case .settingsSetAsDefault: return "m_settings_set_as_default" + case .settingsPrivateSearchOpen: return "m_settings_private_search_open" + case .settingsPrivateSearchAutocompleteOn: return "m_settings_private_search_autocomplete_on" + case .settingsPrivateSearchAutocompleteOff: return "m_settings_private_search_autocomplete_off" + case .settingsVoiceSearchOn: return "m_settings_voice_search_on" + case .settingsVoiceSearchOff: return "m_settings_voice_search_off" + case .settingsPrivateSearchVoiceSearchOn: return "m_settings_private_search_voice_search_on" + case .settingsPrivateSearchVoiceSearchOff: return "m_settings_private_search_voice_search_off" + case .settingsWebTrackingProtectionOpen: return "m_settings_web_tracking_protection_open" + case .settingsGpcOn: return "m_settings_gpc_on" + case .settingsGpcOff: return "m_settings_gpc_off" + case .settingsEmailProtectionOpen: return "m_settings_email_protection_open" + case .settingsEmailProtectionLearnMore: return "m_settings_email_protection_learn_more" + case .settingsGeneralOpen: return "m_settings_general_open" + case .settingsAutocompleteOn: return "m_settings_autocomplete_on" + case .settingsAutocompleteOff: return "m_settings_autocomplete_off" + case .settingsGeneralAutocompleteOn: return "m_settings_general_autocomplete_on" + case .settingsGeneralAutocompleteOff: return "m_settings_general_autocomplete_off" + case .settingsGeneralVoiceSearchOn: return "m_settings_general_voice_search_on" + case .settingsGeneralVoiceSearchOff: return "m_settings_general_voice_search_off" + case .settingsSyncOpen: return "m_settings_sync_open" + case .settingsAppearanceOpen: return "m_settings_appearance_open" + case .settingsAddressBarSelectorPressed: return "m_settings_address_bar_selector_pressed" + case .settingsAddressBarTopSelected: return "m_settings_address_bar_top_selected" + case .settingsAddressBarBottomSelected: return "m_settings_address_bar_bottom_selected" + case .settingsIconSelectorPressed: return "m_settings_icon_selector_pressed" + case .settingsThemeSelectorPressed: return "m_settings_theme_selector_pressed" + case .settingsAccessibilityOpen: return "m_settings_accessibility_open" + case .settingsAccessiblityTextSize: return "m_settings_accessiblity_text_size" + case .settingsAccessibilityVoiceSearchOn: return "m_settings_accessibility_voice_search_on" + case .settingsAccessibilityVoiceSearchOff: return "m_settings_accessibility_voice_search_off" + case .settingsDataClearingOpen: return "m_settings_data_clearing_open" + case .settingsFireButtonSelectorPressed: return "m_settings_fire_button_selector_pressed" + case .settingsDataClearingClearDataOpen: return "m_settings_data_clearing_clear_data_open" + case .settingsAutomaticallyClearDataOpen: return "m_settings_data_clearing_clear_data_open" + case .settingsAutomaticallyClearDataOn: return "m_settings_automatically_clear_data_on" + case .settingsAutomaticallyClearDataOff: return "m_settings_automatically_clear_data_off" + case .settingsNextStepsAddAppToDock: return "m_settings_next_steps_add_app_to_dock" + case .settingsNextStepsAddWidget: return "m_settings_next_steps_add_widget" case .settingsShowFullSiteAddressEnabled: return "m_settings_show_full_url_on" case .settingsShowFullSiteAddressDisabled: return "m_settings_show_full_url_off" - // Launch + + // Launch case .privacyProFeatureEnabled: return "m_privacy-pro_feature_enabled" case .privacyProPromotionDialogShownVPN: return "m_privacy-pro_promotion-dialog_shown_vpn" case .privacyProVPNAccessRevokedDialogShown: return "m_privacy-pro_vpn-access-revoked-dialog_shown" case .privacyProVPNBetaStoppedWhenPrivacyProEnabled: return "m_privacy-pro_vpn-beta-stopped-when-privacy-pro-enabled" - // Web + + // Web case .privacyProOfferMonthlyPriceClick: return "m_privacy-pro_offer_monthly-price_click" case .privacyProOfferYearlyPriceClick: return "m_privacy-pro_offer_yearly-price_click" case .privacyProAddEmailSuccess: return "m_privacy-pro_app_add-email_success_u" diff --git a/Core/PixelExperiment.swift b/Core/PixelExperiment.swift new file mode 100644 index 0000000000..f2701e06ec --- /dev/null +++ b/Core/PixelExperiment.swift @@ -0,0 +1,150 @@ +// +// PixelExperiment.swift +// DuckDuckGo +// +// Copyright © 2024 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation + +public enum PixelExperiment: String, CaseIterable { + + fileprivate static var logic: PixelExperimentLogic { + customLogic ?? defaultLogic + } + fileprivate static let defaultLogic = PixelExperimentLogic { + Pixel.fire(pixel: $0, + withAdditionalParameters: PixelExperiment.parameters) + } + // Custom logic for testing purposes + static var customLogic: PixelExperimentLogic? + + /// When `cohort` is accessed for the first time after the experiment is installed with `install()`, + /// allocate and return a cohort. Subsequently, return the same cohort. + public static var cohort: PixelExperiment? { + logic.cohort + } + + static var isExperimentInstalled: Bool { + return logic.isInstalled + } + + static var allocatedCohortDoesNotMatchCurrentCohorts: Bool { + guard let allocatedCohort = logic.allocatedCohort else { return false } + if PixelExperiment(rawValue: allocatedCohort) == nil { + return true + } + return false + } + + /// Enables this experiment for new users when called from the new installation path. + public static func install() { + // Disable the experiment until all other experiments are finished + logic.install() + } + + static func cleanup() { + logic.cleanup() + } + + // These are the variants. Rename or add/remove them as needed. If you change the string value + // remember to keep it clear for privacy triage. + case control + case newSettings + + // Internal state for users not included in any variant + case noVariant +} + +extension PixelExperiment { + + // Pixel parameter - cohort + public static var parameters: [String: String] { + guard let cohort, cohort != .noVariant else { + return [:] + } + + return [PixelParameters.cohort: cohort.rawValue] + } + +} + +final internal class PixelExperimentLogic { + + var cohort: PixelExperiment? { + guard isInstalled else { return nil } + + // Use the `customCohort` if it's set + if let customCohort = customCohort { + return customCohort + } + + // Check if a cohort is already allocated and valid + if let allocatedCohort, + let cohort = PixelExperiment(rawValue: allocatedCohort) { + return cohort + } + + let randomNumber = Int.random(in: 0..<100) + + // Allocate user to a cohort based on the random number + let cohort: PixelExperiment + if randomNumber < 5 { + cohort = .control + } else if randomNumber < 10 { + cohort = .newSettings + } else { + cohort = .noVariant + } + + // Store and use the selected cohort + allocatedCohort = cohort.rawValue + fireEnrollmentPixel() + return cohort + } + + @UserDefaultsWrapper(key: .pixelExperimentInstalled, defaultValue: false) + var isInstalled: Bool + + @UserDefaultsWrapper(key: .pixelExperimentCohort, defaultValue: nil) + var allocatedCohort: String? + + private let fire: (Pixel.Event) -> Void + private let customCohort: PixelExperiment? + + init(fire: @escaping (Pixel.Event) -> Void, + customCohort: PixelExperiment? = nil) { + self.fire = fire + self.customCohort = customCohort + } + + func install() { + isInstalled = true + } + + private func fireEnrollmentPixel() { + guard cohort != .noVariant else { + return + } + + fire(.pixelExperimentEnrollment) + } + + func cleanup() { + isInstalled = false + allocatedCohort = nil + } + +} diff --git a/Core/UserDefaultsPropertyWrapper.swift b/Core/UserDefaultsPropertyWrapper.swift index 5033bc231d..5293dc6611 100644 --- a/Core/UserDefaultsPropertyWrapper.swift +++ b/Core/UserDefaultsPropertyWrapper.swift @@ -127,6 +127,9 @@ public struct UserDefaultsWrapper { case didRefreshTimestamp = "com.duckduckgo.ios.userBehavior.didRefreshTimestamp" case didBurnTimestamp = "com.duckduckgo.ios.userBehavior.didBurnTimestamp" + case pixelExperimentInstalled = "com.duckduckgo.ios.pixel.experiment.installed" + case pixelExperimentCohort = "com.duckduckgo.ios.pixel.experiment.cohort" + case pixelExperimentEnrollmentDate = "com.duckduckgo.ios.pixel.experiment.enrollment.date" } private let key: Key diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index 9f14f04b51..605d442885 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -104,6 +104,25 @@ 0A6CC0EF23904D5400E4F627 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 0A6CC0EE23904D5400E4F627 /* Settings.bundle */; }; 1CB7B82123CEA1F800AA24EA /* DateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CB7B82023CEA1F800AA24EA /* DateExtension.swift */; }; 1CB7B82323CEA28300AA24EA /* DateExtensionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CB7B82223CEA28300AA24EA /* DateExtensionTests.swift */; }; + 1D200C972BA3157A00108701 /* SettingsNextStepsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D200C962BA3157A00108701 /* SettingsNextStepsView.swift */; }; + 1D200C992BA3176D00108701 /* SettingsOthersView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D200C982BA3176D00108701 /* SettingsOthersView.swift */; }; + 1D200C9B2BA31A6A00108701 /* AboutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D200C9A2BA31A6A00108701 /* AboutView.swift */; }; + 1D8F727F2BA86D8000E31493 /* PixelExperiment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D8F727E2BA86D8000E31493 /* PixelExperiment.swift */; }; + 1DDF40202BA049FA006850D9 /* SettingsRootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DDF401F2BA049FA006850D9 /* SettingsRootView.swift */; }; + 1DDF40292BA04FCD006850D9 /* SettingsPrivacyProtectionsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DDF40282BA04FCD006850D9 /* SettingsPrivacyProtectionsView.swift */; }; + 1DDF402B2BA05A65006850D9 /* Settings.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1DDF402A2BA05A65006850D9 /* Settings.xcassets */; }; + 1DDF402D2BA09482006850D9 /* SettingsMainSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DDF402C2BA09482006850D9 /* SettingsMainSettingsView.swift */; }; + 1DE384E42BC41E2500871AF6 /* PixelExperimentTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DE384E32BC41E2500871AF6 /* PixelExperimentTests.swift */; }; + 1DEAADE82BA38AA500E25A97 /* SettingsGeneralView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DEAADE72BA38AA500E25A97 /* SettingsGeneralView.swift */; }; + 1DEAADEA2BA4539800E25A97 /* SettingsAppearanceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DEAADE92BA4539800E25A97 /* SettingsAppearanceView.swift */; }; + 1DEAADEC2BA45B4500E25A97 /* SettingsAccessibilityView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DEAADEB2BA45B4400E25A97 /* SettingsAccessibilityView.swift */; }; + 1DEAADEE2BA45DFE00E25A97 /* SettingsDataClearingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DEAADED2BA45DFE00E25A97 /* SettingsDataClearingView.swift */; }; + 1DEAADF02BA46E0700E25A97 /* PrivateSearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DEAADEF2BA46E0600E25A97 /* PrivateSearchView.swift */; }; + 1DEAADF22BA4716C00E25A97 /* SettingsStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DEAADF12BA4716C00E25A97 /* SettingsStatus.swift */; }; + 1DEAADF42BA47B5300E25A97 /* WebTrackingProtectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DEAADF32BA47B5300E25A97 /* WebTrackingProtectionView.swift */; }; + 1DEAADF62BA4809400E25A97 /* CookiePopUpProtectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DEAADF52BA4809400E25A97 /* CookiePopUpProtectionView.swift */; }; + 1DEAADFB2BA71E9A00E25A97 /* SettingsPrivacyProtectionDescriptionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DEAADFA2BA71E9A00E25A97 /* SettingsPrivacyProtectionDescriptionView.swift */; }; + 1DEAADFF2BA7832F00E25A97 /* EmailProtectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DEAADFE2BA7832F00E25A97 /* EmailProtectionView.swift */; }; 1E016AB42949FEB500F21625 /* OmniBarNotificationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E016AB32949FEB500F21625 /* OmniBarNotificationViewModel.swift */; }; 1E05D1D629C46EBB00BF9A1F /* DailyPixel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E05D1D529C46EBB00BF9A1F /* DailyPixel.swift */; }; 1E05D1D829C46EDA00BF9A1F /* TimedPixel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E05D1D729C46EDA00BF9A1F /* TimedPixel.swift */; }; @@ -839,17 +858,17 @@ D6E83C122B1E6AB3006C8AFB /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C112B1E6AB3006C8AFB /* SettingsView.swift */; }; D6E83C2E2B1EA06E006C8AFB /* SettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C2D2B1EA06E006C8AFB /* SettingsViewModel.swift */; }; D6E83C312B1EA309006C8AFB /* SettingsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C302B1EA309006C8AFB /* SettingsCell.swift */; }; - D6E83C382B1F2236006C8AFB /* SettingsGeneralView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C372B1F2236006C8AFB /* SettingsGeneralView.swift */; }; - D6E83C3A2B1F231A006C8AFB /* SettingsSyncView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C392B1F231A006C8AFB /* SettingsSyncView.swift */; }; + D6E83C382B1F2236006C8AFB /* SettingsGeneralViewOld.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C372B1F2236006C8AFB /* SettingsGeneralViewOld.swift */; }; + D6E83C3A2B1F231A006C8AFB /* SettingsSyncViewOld.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C392B1F231A006C8AFB /* SettingsSyncViewOld.swift */; }; D6E83C3D2B1F2C03006C8AFB /* SettingsLoginsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C3C2B1F2C03006C8AFB /* SettingsLoginsView.swift */; }; - D6E83C412B1FC285006C8AFB /* SettingsAppeareanceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C402B1FC285006C8AFB /* SettingsAppeareanceView.swift */; }; + D6E83C412B1FC285006C8AFB /* SettingsAppeareanceViewOld.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C402B1FC285006C8AFB /* SettingsAppeareanceViewOld.swift */; }; D6E83C482B20C812006C8AFB /* SettingsHostingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C472B20C812006C8AFB /* SettingsHostingController.swift */; }; D6E83C562B21ECC1006C8AFB /* SettingsLegacyViewProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C552B21ECC1006C8AFB /* SettingsLegacyViewProvider.swift */; }; D6E83C5A2B2213ED006C8AFB /* SettingsPrivacyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C592B2213ED006C8AFB /* SettingsPrivacyView.swift */; }; D6E83C5E2B224676006C8AFB /* SettingsCustomizeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C5D2B224676006C8AFB /* SettingsCustomizeView.swift */; }; D6E83C602B22B3C9006C8AFB /* SettingsState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C5F2B22B3C9006C8AFB /* SettingsState.swift */; }; D6E83C622B23298B006C8AFB /* SettingsMoreView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C612B23298B006C8AFB /* SettingsMoreView.swift */; }; - D6E83C642B238432006C8AFB /* SettingsAboutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C632B238432006C8AFB /* SettingsAboutView.swift */; }; + D6E83C642B238432006C8AFB /* SettingsAboutViewOld.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C632B238432006C8AFB /* SettingsAboutViewOld.swift */; }; D6E83C662B23936F006C8AFB /* SettingsDebugView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C652B23936F006C8AFB /* SettingsDebugView.swift */; }; D6E83C682B23B6A3006C8AFB /* FontSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E83C672B23B6A3006C8AFB /* FontSettings.swift */; }; D6F93E3C2B4FFA97004C268D /* SubscriptionDebugViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6F93E3B2B4FFA97004C268D /* SubscriptionDebugViewController.swift */; }; @@ -958,7 +977,7 @@ F1CA3C371F045878005FADB3 /* PrivacyStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1CA3C361F045878005FADB3 /* PrivacyStore.swift */; }; F1CA3C391F045885005FADB3 /* PrivacyUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1CA3C381F045885005FADB3 /* PrivacyUserDefaults.swift */; }; F1CA3C3B1F045B65005FADB3 /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1CA3C3A1F045B65005FADB3 /* Authenticator.swift */; }; - F1CDD3F21F16911700BE0581 /* AboutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1CDD3F11F16911700BE0581 /* AboutViewController.swift */; }; + F1CDD3F21F16911700BE0581 /* AboutViewControllerOld.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1CDD3F11F16911700BE0581 /* AboutViewControllerOld.swift */; }; F1D43AFA2B99C1D300BAB743 /* BareBonesBrowserKit in Frameworks */ = {isa = PBXBuildFile; productRef = F1D43AF92B99C1D300BAB743 /* BareBonesBrowserKit */; }; F1D43AFC2B99C56000BAB743 /* RootDebugViewController+VanillaBrowser.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1D43AFB2B99C56000BAB743 /* RootDebugViewController+VanillaBrowser.swift */; }; F1D477C61F2126CC0031ED49 /* OmniBarState.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1D477C51F2126CC0031ED49 /* OmniBarState.swift */; }; @@ -1242,6 +1261,25 @@ 0A6CC0EE23904D5400E4F627 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = ""; }; 1CB7B82023CEA1F800AA24EA /* DateExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateExtension.swift; sourceTree = ""; }; 1CB7B82223CEA28300AA24EA /* DateExtensionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateExtensionTests.swift; sourceTree = ""; }; + 1D200C962BA3157A00108701 /* SettingsNextStepsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsNextStepsView.swift; sourceTree = ""; }; + 1D200C982BA3176D00108701 /* SettingsOthersView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsOthersView.swift; sourceTree = ""; }; + 1D200C9A2BA31A6A00108701 /* AboutView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AboutView.swift; sourceTree = ""; }; + 1D8F727E2BA86D8000E31493 /* PixelExperiment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PixelExperiment.swift; sourceTree = ""; }; + 1DDF401F2BA049FA006850D9 /* SettingsRootView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsRootView.swift; sourceTree = ""; }; + 1DDF40282BA04FCD006850D9 /* SettingsPrivacyProtectionsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsPrivacyProtectionsView.swift; sourceTree = ""; }; + 1DDF402A2BA05A65006850D9 /* Settings.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Settings.xcassets; sourceTree = ""; }; + 1DDF402C2BA09482006850D9 /* SettingsMainSettingsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsMainSettingsView.swift; sourceTree = ""; }; + 1DE384E32BC41E2500871AF6 /* PixelExperimentTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PixelExperimentTests.swift; sourceTree = ""; }; + 1DEAADE72BA38AA500E25A97 /* SettingsGeneralView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsGeneralView.swift; sourceTree = ""; }; + 1DEAADE92BA4539800E25A97 /* SettingsAppearanceView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsAppearanceView.swift; sourceTree = ""; }; + 1DEAADEB2BA45B4400E25A97 /* SettingsAccessibilityView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsAccessibilityView.swift; sourceTree = ""; }; + 1DEAADED2BA45DFE00E25A97 /* SettingsDataClearingView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsDataClearingView.swift; sourceTree = ""; }; + 1DEAADEF2BA46E0600E25A97 /* PrivateSearchView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrivateSearchView.swift; sourceTree = ""; }; + 1DEAADF12BA4716C00E25A97 /* SettingsStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsStatus.swift; sourceTree = ""; }; + 1DEAADF32BA47B5300E25A97 /* WebTrackingProtectionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebTrackingProtectionView.swift; sourceTree = ""; }; + 1DEAADF52BA4809400E25A97 /* CookiePopUpProtectionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CookiePopUpProtectionView.swift; sourceTree = ""; }; + 1DEAADFA2BA71E9A00E25A97 /* SettingsPrivacyProtectionDescriptionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsPrivacyProtectionDescriptionView.swift; sourceTree = ""; }; + 1DEAADFE2BA7832F00E25A97 /* EmailProtectionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmailProtectionView.swift; sourceTree = ""; }; 1E016AB32949FEB500F21625 /* OmniBarNotificationViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OmniBarNotificationViewModel.swift; sourceTree = ""; }; 1E05D1D529C46EBB00BF9A1F /* DailyPixel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyPixel.swift; sourceTree = ""; }; 1E05D1D729C46EDA00BF9A1F /* TimedPixel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimedPixel.swift; sourceTree = ""; }; @@ -2514,17 +2552,17 @@ D6E83C112B1E6AB3006C8AFB /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; }; D6E83C2D2B1EA06E006C8AFB /* SettingsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewModel.swift; sourceTree = ""; }; D6E83C302B1EA309006C8AFB /* SettingsCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsCell.swift; sourceTree = ""; }; - D6E83C372B1F2236006C8AFB /* SettingsGeneralView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsGeneralView.swift; sourceTree = ""; }; - D6E83C392B1F231A006C8AFB /* SettingsSyncView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsSyncView.swift; sourceTree = ""; }; + D6E83C372B1F2236006C8AFB /* SettingsGeneralViewOld.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsGeneralViewOld.swift; sourceTree = ""; }; + D6E83C392B1F231A006C8AFB /* SettingsSyncViewOld.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsSyncViewOld.swift; sourceTree = ""; }; D6E83C3C2B1F2C03006C8AFB /* SettingsLoginsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsLoginsView.swift; sourceTree = ""; }; - D6E83C402B1FC285006C8AFB /* SettingsAppeareanceView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsAppeareanceView.swift; sourceTree = ""; }; + D6E83C402B1FC285006C8AFB /* SettingsAppeareanceViewOld.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsAppeareanceViewOld.swift; sourceTree = ""; }; D6E83C472B20C812006C8AFB /* SettingsHostingController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsHostingController.swift; sourceTree = ""; }; D6E83C552B21ECC1006C8AFB /* SettingsLegacyViewProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsLegacyViewProvider.swift; sourceTree = ""; }; D6E83C592B2213ED006C8AFB /* SettingsPrivacyView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsPrivacyView.swift; sourceTree = ""; }; D6E83C5D2B224676006C8AFB /* SettingsCustomizeView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsCustomizeView.swift; sourceTree = ""; }; D6E83C5F2B22B3C9006C8AFB /* SettingsState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsState.swift; sourceTree = ""; }; D6E83C612B23298B006C8AFB /* SettingsMoreView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsMoreView.swift; sourceTree = ""; }; - D6E83C632B238432006C8AFB /* SettingsAboutView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsAboutView.swift; sourceTree = ""; }; + D6E83C632B238432006C8AFB /* SettingsAboutViewOld.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsAboutViewOld.swift; sourceTree = ""; }; D6E83C652B23936F006C8AFB /* SettingsDebugView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsDebugView.swift; sourceTree = ""; }; D6E83C672B23B6A3006C8AFB /* FontSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FontSettings.swift; sourceTree = ""; }; D6F93E3B2B4FFA97004C268D /* SubscriptionDebugViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SubscriptionDebugViewController.swift; sourceTree = ""; }; @@ -2666,7 +2704,7 @@ F1CA3C381F045885005FADB3 /* PrivacyUserDefaults.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrivacyUserDefaults.swift; sourceTree = ""; }; F1CA3C3A1F045B65005FADB3 /* Authenticator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Authenticator.swift; sourceTree = ""; }; F1CB8EA21F26B39000A7171B /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; - F1CDD3F11F16911700BE0581 /* AboutViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AboutViewController.swift; sourceTree = ""; }; + F1CDD3F11F16911700BE0581 /* AboutViewControllerOld.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AboutViewControllerOld.swift; sourceTree = ""; }; F1D43AFB2B99C56000BAB743 /* RootDebugViewController+VanillaBrowser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "RootDebugViewController+VanillaBrowser.swift"; sourceTree = ""; }; F1D477C51F2126CC0031ED49 /* OmniBarState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OmniBarState.swift; sourceTree = ""; }; F1D477C81F2139410031ED49 /* SmallOmniBarStateTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SmallOmniBarStateTests.swift; sourceTree = ""; }; @@ -3158,6 +3196,86 @@ name = AppTPBreakageForm; sourceTree = ""; }; + 1DDEC5982BB0677D000329FF /* Old */ = { + isa = PBXGroup; + children = ( + D6E83C372B1F2236006C8AFB /* SettingsGeneralViewOld.swift */, + D6E83C392B1F231A006C8AFB /* SettingsSyncViewOld.swift */, + D6E83C402B1FC285006C8AFB /* SettingsAppeareanceViewOld.swift */, + D6E83C632B238432006C8AFB /* SettingsAboutViewOld.swift */, + D6E83C3C2B1F2C03006C8AFB /* SettingsLoginsView.swift */, + D6E83C592B2213ED006C8AFB /* SettingsPrivacyView.swift */, + D6E83C5D2B224676006C8AFB /* SettingsCustomizeView.swift */, + D6E83C612B23298B006C8AFB /* SettingsMoreView.swift */, + D6E83C112B1E6AB3006C8AFB /* SettingsView.swift */, + 02C57C4A2514FEFB009E5129 /* DoNotSellSettingsViewController.swift */, + ); + name = Old; + sourceTree = ""; + }; + 1DDF40272BA04CF3006850D9 /* Sections */ = { + isa = PBXGroup; + children = ( + 1DEAADE32BA386C600E25A97 /* PrivacyProtections */, + 1DEAADF72BA488E600E25A97 /* Privacy Pro */, + 1DEAADE42BA386D100E25A97 /* MainSettings */, + 1DEAADE52BA386E000E25A97 /* NextSteps */, + 1DEAADE62BA386E800E25A97 /* Others */, + ); + name = Sections; + sourceTree = ""; + }; + 1DEAADE32BA386C600E25A97 /* PrivacyProtections */ = { + isa = PBXGroup; + children = ( + 1DDF40282BA04FCD006850D9 /* SettingsPrivacyProtectionsView.swift */, + 1DEAADEF2BA46E0600E25A97 /* PrivateSearchView.swift */, + 1DEAADF32BA47B5300E25A97 /* WebTrackingProtectionView.swift */, + 1DEAADF52BA4809400E25A97 /* CookiePopUpProtectionView.swift */, + 1DEAADFE2BA7832F00E25A97 /* EmailProtectionView.swift */, + 1DEAADFA2BA71E9A00E25A97 /* SettingsPrivacyProtectionDescriptionView.swift */, + ); + name = PrivacyProtections; + sourceTree = ""; + }; + 1DEAADE42BA386D100E25A97 /* MainSettings */ = { + isa = PBXGroup; + children = ( + 1DDF402C2BA09482006850D9 /* SettingsMainSettingsView.swift */, + 1DEAADE72BA38AA500E25A97 /* SettingsGeneralView.swift */, + 1DEAADE92BA4539800E25A97 /* SettingsAppearanceView.swift */, + 1DEAADEB2BA45B4400E25A97 /* SettingsAccessibilityView.swift */, + 1DEAADED2BA45DFE00E25A97 /* SettingsDataClearingView.swift */, + ); + name = MainSettings; + sourceTree = ""; + }; + 1DEAADE52BA386E000E25A97 /* NextSteps */ = { + isa = PBXGroup; + children = ( + 1D200C962BA3157A00108701 /* SettingsNextStepsView.swift */, + ); + name = NextSteps; + sourceTree = ""; + }; + 1DEAADE62BA386E800E25A97 /* Others */ = { + isa = PBXGroup; + children = ( + 1D200C982BA3176D00108701 /* SettingsOthersView.swift */, + 1D200C9A2BA31A6A00108701 /* AboutView.swift */, + D6E83C652B23936F006C8AFB /* SettingsDebugView.swift */, + ); + name = Others; + sourceTree = ""; + }; + 1DEAADF72BA488E600E25A97 /* Privacy Pro */ = { + isa = PBXGroup; + children = ( + D69FBF752B28BE3600B505F1 /* SettingsSubscriptionView.swift */, + ); + name = "Privacy Pro"; + sourceTree = ""; + }; 1E162603296840790004127F /* SwiftUI */ = { isa = PBXGroup; children = ( @@ -3922,12 +4040,11 @@ isa = PBXGroup; children = ( F176699D1E40BC86003D3222 /* Settings.storyboard */, - F1CDD3F11F16911700BE0581 /* AboutViewController.swift */, + F1CDD3F11F16911700BE0581 /* AboutViewControllerOld.swift */, AA3D854623D9E88E00788410 /* AppIconSettingsCell.swift */, AA3D854423D9942200788410 /* AppIconSettingsViewController.swift */, 98F0FC1F21FF18E700CE77AB /* AutoClearSettingsViewController.swift */, 1EE7C298294227EC0026C8CB /* AutoconsentSettingsViewController.swift */, - 02C57C4A2514FEFB009E5129 /* DoNotSellSettingsViewController.swift */, 85449EF423FDA02800512AAF /* KeyboardSettingsViewController.swift */, 8540BD5523D9E9C20057FDD2 /* PreserveLoginsSettingsViewController.swift */, 1E865AEF272042DB001C74F3 /* TextSizeSettingsViewController.swift */, @@ -4716,30 +4833,15 @@ name = DesktopDownloads; sourceTree = ""; }; - D6E83C322B1F1279006C8AFB /* Sections */ = { - isa = PBXGroup; - children = ( - D6E83C372B1F2236006C8AFB /* SettingsGeneralView.swift */, - D6E83C392B1F231A006C8AFB /* SettingsSyncView.swift */, - D6E83C3C2B1F2C03006C8AFB /* SettingsLoginsView.swift */, - D6E83C402B1FC285006C8AFB /* SettingsAppeareanceView.swift */, - D6E83C592B2213ED006C8AFB /* SettingsPrivacyView.swift */, - D69FBF752B28BE3600B505F1 /* SettingsSubscriptionView.swift */, - D6E83C5D2B224676006C8AFB /* SettingsCustomizeView.swift */, - D6E83C612B23298B006C8AFB /* SettingsMoreView.swift */, - D6E83C632B238432006C8AFB /* SettingsAboutView.swift */, - D6E83C652B23936F006C8AFB /* SettingsDebugView.swift */, - ); - name = Sections; - sourceTree = ""; - }; D6E83C3B2B1F27BA006C8AFB /* Views */ = { isa = PBXGroup; children = ( + 1DDEC5982BB0677D000329FF /* Old */, D6E83C472B20C812006C8AFB /* SettingsHostingController.swift */, - D6E83C112B1E6AB3006C8AFB /* SettingsView.swift */, + 1DDF401F2BA049FA006850D9 /* SettingsRootView.swift */, D6E83C302B1EA309006C8AFB /* SettingsCell.swift */, - D6E83C322B1F1279006C8AFB /* Sections */, + 1DEAADF12BA4716C00E25A97 /* SettingsStatus.swift */, + 1DDF40272BA04CF3006850D9 /* Sections */, 85449EF623FDA03100512AAF /* UIkit */, ); name = Views; @@ -4920,6 +5022,7 @@ 1E05D1D729C46EDA00BF9A1F /* TimedPixel.swift */, 1E05D1D529C46EBB00BF9A1F /* DailyPixel.swift */, 85E242162AB1B54D000F3E28 /* ReturnUserMeasurement.swift */, + 1D8F727E2BA86D8000E31493 /* PixelExperiment.swift */, ); name = Statistics; sourceTree = ""; @@ -4958,6 +5061,7 @@ 853A717720F645FB00FE60BC /* PixelTests.swift */, 1E05D1D929C47B2B00BF9A1F /* DailyPixelTests.swift */, 83EDCC3F1F86B895005CDFCD /* StatisticsLoaderTests.swift */, + 1DE384E32BC41E2500871AF6 /* PixelExperimentTests.swift */, F1134ED31F40F12B00B73467 /* Store */, 85C11E4020904BBE00BFFEB4 /* VariantManagerTests.swift */, ); @@ -5373,6 +5477,7 @@ D6E83C492B20C883006C8AFB /* Model */, D6E83C3B2B1F27BA006C8AFB /* Views */, 858566F1252E55AE007501B8 /* Debug */, + 1DDF402A2BA05A65006850D9 /* Settings.xcassets */, ); name = Settings; sourceTree = ""; @@ -6214,6 +6319,7 @@ 1EE411FE2858B9300003FE64 /* dark-shield.json in Resources */, AA4D6AD323DE4D27007E8790 /* AppIconPurple29x29@2x.png in Resources */, AA4D6AA123DE4CC4007E8790 /* AppIconBlue60x60@3x.png in Resources */, + 1DDF402B2BA05A65006850D9 /* Settings.xcassets in Resources */, 984147A824F0259000362052 /* Onboarding.storyboard in Resources */, AA4D6AF723DF0312007E8790 /* AppIconRed60x60@2x.png in Resources */, AA4D6AE923DE4D33007E8790 /* AppIconGreen29x29@3x.png in Resources */, @@ -6561,6 +6667,7 @@ 8528AE81212F15D600D0BD74 /* AppRatingPrompt.xcdatamodeld in Sources */, 1E24295E293F57FA00584836 /* LottieView.swift in Sources */, 8577A1C5255D2C0D00D43FCD /* HitTestingToolbar.swift in Sources */, + 1DEAADE82BA38AA500E25A97 /* SettingsGeneralView.swift in Sources */, 4BB697A42B1D99C4003699B5 /* VPNWaitlistActivationDateStore.swift in Sources */, 853C5F5B21BFF0AE001F7A05 /* HomeCollectionView.swift in Sources */, 3132FA2627A0784600DD7A12 /* FilePreviewHelper.swift in Sources */, @@ -6576,7 +6683,7 @@ D60170BD2BA34CE8001911B5 /* Subscription.swift in Sources */, 1E4DCF4827B6A35400961E25 /* DownloadsListModel.swift in Sources */, C12726F02A5FF89900215B02 /* EmailSignupPromptViewModel.swift in Sources */, - D6E83C642B238432006C8AFB /* SettingsAboutView.swift in Sources */, + D6E83C642B238432006C8AFB /* SettingsAboutViewOld.swift in Sources */, 31669B9A28020A460071CC18 /* SaveLoginViewModel.swift in Sources */, EE4FB1882A28D11900E5CBA7 /* NetworkProtectionStatusViewModel.swift in Sources */, 0290472029E708B70008FE3C /* AppTPManageTrackersViewModel.swift in Sources */, @@ -6596,6 +6703,7 @@ B609D5522862EAFF0088CAC2 /* InlineWKDownloadDelegate.swift in Sources */, BDFF03222BA3D8E200F324C9 /* NetworkProtectionFeatureVisibility.swift in Sources */, B652DEFD287BE67400C12A9C /* UserScripts.swift in Sources */, + 1D200C992BA3176D00108701 /* SettingsOthersView.swift in Sources */, 31DD208427395A5A008FB313 /* VoiceSearchHelper.swift in Sources */, 9874F9EE2187AFCE00CAF33D /* Themable.swift in Sources */, F44D279E27F331BB0037F371 /* AutofillLoginPromptViewModel.swift in Sources */, @@ -6616,7 +6724,7 @@ 854A01332A558B3A00FCC628 /* UIView+Constraints.swift in Sources */, C12726EE2A5FF88C00215B02 /* EmailSignupPromptView.swift in Sources */, 83134D7D20E2D725006CE65D /* FeedbackSender.swift in Sources */, - D6E83C382B1F2236006C8AFB /* SettingsGeneralView.swift in Sources */, + D6E83C382B1F2236006C8AFB /* SettingsGeneralViewOld.swift in Sources */, B652DF12287C336E00C12A9C /* ContentBlockingUpdating.swift in Sources */, 314C92BA27C3E7CB0042EC96 /* QuickLookContainerViewController.swift in Sources */, 855D914D2063EF6A00C4B448 /* TabSwitcherTransition.swift in Sources */, @@ -6716,6 +6824,7 @@ 1E8AD1C927BFAD1500ABA377 /* DirectoryMonitor.swift in Sources */, 377D80222AB48554002AF251 /* FavoritesDisplayModeSyncHandler.swift in Sources */, 1E8AD1D127C000AB00ABA377 /* OngoingDownloadRow.swift in Sources */, + 1DEAADF02BA46E0700E25A97 /* PrivateSearchView.swift in Sources */, 85058366219AE9EA00ED4EDB /* HomePageConfiguration.swift in Sources */, EE0153E12A6EABE0002A8B26 /* NetworkProtectionConvenienceInitialisers.swift in Sources */, C17B595B2A03AAD30055F2D1 /* PasswordGenerationPromptView.swift in Sources */, @@ -6732,9 +6841,11 @@ 85B9CB8921AEBDD5009001F1 /* FavoriteHomeCell.swift in Sources */, 98999D5922FDA41500CBBE1B /* BasicAuthenticationAlert.swift in Sources */, C13B32D22A0E750700A59236 /* AutofillSettingStatus.swift in Sources */, + 1DDF40202BA049FA006850D9 /* SettingsRootView.swift in Sources */, D68DF81E2B5830380023DBEA /* SubscriptionRestoreViewModel.swift in Sources */, F4F6DFB426E6B63700ED7E12 /* BookmarkFolderCell.swift in Sources */, D6F93E3E2B50A8A0004C268D /* SubscriptionSettingsView.swift in Sources */, + 1D200C9B2BA31A6A00108701 /* AboutView.swift in Sources */, 851B12CC22369931004781BC /* AtbAndVariantCleanup.swift in Sources */, D668D92B2B696840008E2FF2 /* IdentityTheftRestorationPagesFeature.swift in Sources */, 85F2FFCF2211F8E5006BB258 /* TabSwitcherViewController+KeyCommands.swift in Sources */, @@ -6745,6 +6856,7 @@ EE458D142ABB652900FC651A /* NetworkProtectionDebugUtilities.swift in Sources */, 8528AE7C212EF4A200D0BD74 /* AppRatingPrompt.swift in Sources */, CB2A7EEF283D185100885F67 /* RulesCompilationMonitor.swift in Sources */, + 1DEAADF22BA4716C00E25A97 /* SettingsStatus.swift in Sources */, C18ED43C2AB8364400BF3805 /* FileTextPreviewDebugViewController.swift in Sources */, 1EEF12502851016B003DDE57 /* PrivacyIconAndTrackersAnimator.swift in Sources */, 31CB4251273AF50700FA0F3F /* SpeechRecognizerProtocol.swift in Sources */, @@ -6821,7 +6933,7 @@ 984D035A24ACCC7D0066CFB8 /* TabViewCell.swift in Sources */, 31951E8E2823003200CAF535 /* AutofillLoginDetailsHeaderView.swift in Sources */, F194FAED1F14E2B3009B4DF8 /* UIFontExtension.swift in Sources */, - F1CDD3F21F16911700BE0581 /* AboutViewController.swift in Sources */, + F1CDD3F21F16911700BE0581 /* AboutViewControllerOld.swift in Sources */, 98F0FC2021FF18E700CE77AB /* AutoClearSettingsViewController.swift in Sources */, 027F487A2A4B66CD001A1C6C /* AppTPFAQViewModel.swift in Sources */, F1E90C201E678E7C005E7E21 /* HomeControllerDelegate.swift in Sources */, @@ -6842,19 +6954,21 @@ 98F78B8E22419093007CACF4 /* ThemableNavigationController.swift in Sources */, CBD4F140279EBFB300B20FD7 /* SwiftUICollectionViewCell.swift in Sources */, 31CC224928369B38001654A4 /* AutofillLoginSettingsListViewController.swift in Sources */, - D6E83C3A2B1F231A006C8AFB /* SettingsSyncView.swift in Sources */, + D6E83C3A2B1F231A006C8AFB /* SettingsSyncViewOld.swift in Sources */, F1D796EC1E7AB8930019D451 /* SaveBookmarkActivity.swift in Sources */, F4B0B78C252CAFF700830156 /* OnboardingWidgetsViewController.swift in Sources */, C17B595A2A03AAD30055F2D1 /* PasswordGenerationPromptViewController.swift in Sources */, 8531A08E1F9950E6000484F0 /* UnprotectedSitesViewController.swift in Sources */, CBD4F13C279EBF4A00B20FD7 /* HomeMessage.swift in Sources */, + 1DEAADEC2BA45B4500E25A97 /* SettingsAccessibilityView.swift in Sources */, 85C8E61D2B0E47380029A6BD /* BookmarksDatabaseSetup.swift in Sources */, 4BBBBA8E2B031B4200D965DA /* VPNWaitlistViewController.swift in Sources */, 3132FA2C27A07A1B00DD7A12 /* FilePreview.swift in Sources */, 85C861E628FF1B5F00189466 /* HomeViewSectionRenderersExtension.swift in Sources */, + 1DDF40292BA04FCD006850D9 /* SettingsPrivacyProtectionsView.swift in Sources */, F1D477C61F2126CC0031ED49 /* OmniBarState.swift in Sources */, 85F2FFCD2211F615006BB258 /* MainViewController+KeyCommands.swift in Sources */, - D6E83C412B1FC285006C8AFB /* SettingsAppeareanceView.swift in Sources */, + D6E83C412B1FC285006C8AFB /* SettingsAppeareanceViewOld.swift in Sources */, 4B274F602AFEAECC003F0745 /* NetworkProtectionWidgetRefreshModel.swift in Sources */, 0268FC132A449F04000EE6A2 /* OnboardingContainerView.swift in Sources */, 858650D9246B0D3C00C36F8A /* DaxOnboardingViewController.swift in Sources */, @@ -6869,6 +6983,7 @@ 85449EFD23FDA71F00512AAF /* KeyboardSettings.swift in Sources */, 980891A222369ADB00313A70 /* FeedbackUserText.swift in Sources */, 4BCD14692B05BDD5000B1E4C /* AppDelegate+Waitlists.swift in Sources */, + 1DEAADFF2BA7832F00E25A97 /* EmailProtectionView.swift in Sources */, 988F3DD3237DE8D900AEE34C /* ForgetDataAlert.swift in Sources */, D6FEB8B12B7498A300C3615F /* HeadlessWebView.swift in Sources */, 850ABD012AC3961100A733DF /* MainViewController+Segues.swift in Sources */, @@ -6900,11 +7015,13 @@ 85058369219F424500ED4EDB /* UIColorExtension.swift in Sources */, D6E83C312B1EA309006C8AFB /* SettingsCell.swift in Sources */, 85058368219C49E000ED4EDB /* HomeViewSectionRenderers.swift in Sources */, + 1DEAADEE2BA45DFE00E25A97 /* SettingsDataClearingView.swift in Sources */, EE01EB432AFC1E0A0096AAC9 /* NetworkProtectionVPNLocationView.swift in Sources */, 9820EAF522613CD30089094D /* WebProgressWorker.swift in Sources */, B6CB93E5286445AB0090FEB4 /* Base64DownloadSession.swift in Sources */, 1EEF387D285B1A1100383393 /* TrackerImageCache.swift in Sources */, 3151F0EC27357FEE00226F58 /* VoiceSearchFeedbackViewModel.swift in Sources */, + 1DDF402D2BA09482006850D9 /* SettingsMainSettingsView.swift in Sources */, 85010502292FB1000033978F /* FireproofFaviconUpdater.swift in Sources */, F1C4A70E1E57725800A6CA1B /* OmniBar.swift in Sources */, 981CA7EA2617797500E119D5 /* MainViewController+AddFavoriteFlow.swift in Sources */, @@ -6914,6 +7031,7 @@ F130D73A1E5776C500C45811 /* OmniBarDelegate.swift in Sources */, 85DFEDEF24C7EA3B00973FE7 /* SmallOmniBarState.swift in Sources */, 1E908BF129827C480008C8F3 /* AutoconsentUserScript.swift in Sources */, + 1D200C972BA3157A00108701 /* SettingsNextStepsView.swift in Sources */, 4B0295192537BC6700E00CEF /* ConfigurationDebugViewController.swift in Sources */, 1E7A71192934EC6100B7EA19 /* OmniBarNotificationContainerView.swift in Sources */, D60B1F272B9DDE5A00AE4760 /* SubscriptionGoogleView.swift in Sources */, @@ -6973,10 +7091,12 @@ F1D796EE1E7AF2EB0019D451 /* UIViewControllerExtension.swift in Sources */, 1EE411F12857C3640003FE64 /* TrackerAnimationImageProvider.swift in Sources */, 1E7A711C2934EEBC00B7EA19 /* OmniBarNotification.swift in Sources */, + 1DEAADF42BA47B5300E25A97 /* WebTrackingProtectionView.swift in Sources */, 02EC02C429AFA33000557F1A /* AppTPBreakageFormView.swift in Sources */, F15D43201E706CC500BF2CDC /* AutocompleteViewController.swift in Sources */, BD862E092B30F63E0073E2EE /* VPNMetadataCollector.swift in Sources */, D6E83C682B23B6A3006C8AFB /* FontSettings.swift in Sources */, + 1DEAADF62BA4809400E25A97 /* CookiePopUpProtectionView.swift in Sources */, 31EF52E1281B3BDC0034796E /* AutofillLoginListItemViewModel.swift in Sources */, 1E4FAA6627D8DFC800ADC5B3 /* CompleteDownloadRowViewModel.swift in Sources */, 83004E862193E5ED00DA013C /* TabViewControllerBrowsingMenuExtension.swift in Sources */, @@ -6988,6 +7108,7 @@ 316931D927BD22A80095F5ED /* DownloadActionMessageViewHelper.swift in Sources */, 9838059F2228208E00385F1A /* PositiveFeedbackViewController.swift in Sources */, 8590CB67268A2E520089F6BF /* RootDebugViewController.swift in Sources */, + 1DEAADEA2BA4539800E25A97 /* SettingsAppearanceView.swift in Sources */, B623C1C22862CA9E0043013E /* DownloadSession.swift in Sources */, 0290471E29E708750008FE3C /* AppTPManageTrackersView.swift in Sources */, F16390821E648B7A005B4550 /* HomeViewController.swift in Sources */, @@ -7025,6 +7146,7 @@ 8505836C219F424500ED4EDB /* TextFieldWithInsets.swift in Sources */, CBD4F13F279EBFAF00B20FD7 /* HomeMessageViewModel.swift in Sources */, 1E4DCF4A27B6A38000961E25 /* DownloadListRepresentable.swift in Sources */, + 1DEAADFB2BA71E9A00E25A97 /* SettingsPrivacyProtectionDescriptionView.swift in Sources */, 2DC3FC65C6D9DA634426672D /* AutofillNoAuthAvailableView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -7058,6 +7180,7 @@ 1E722729292EB24D003B5F53 /* AppSettingsMock.swift in Sources */, 8536A1C8209AF2410050739E /* MockVariantManager.swift in Sources */, C1B7B53428944EFA0098FD6A /* CoreDataTestUtilities.swift in Sources */, + 1DE384E42BC41E2500871AF6 /* PixelExperimentTests.swift in Sources */, CBDD5DE129A6741300832877 /* MockBundle.swift in Sources */, C158AC7B297AB5DC0008723A /* MockSecureVault.swift in Sources */, 85C11E4120904BBE00BFFEB4 /* VariantManagerTests.swift in Sources */, @@ -7305,6 +7428,7 @@ 85E242172AB1B54D000F3E28 /* ReturnUserMeasurement.swift in Sources */, 85BDC3142434D8F80053DB07 /* DebugUserScript.swift in Sources */, 85011867290028C400BDEE27 /* BookmarksDatabase.swift in Sources */, + 1D8F727F2BA86D8000E31493 /* PixelExperiment.swift in Sources */, 85D2187B24BF9F85004373D2 /* FaviconUserScript.swift in Sources */, 37FD780F2A29E28B00B36DB1 /* SyncErrorHandler.swift in Sources */, 85F21DC621145DD5002631A6 /* global.swift in Sources */, diff --git a/DuckDuckGo/AboutView.swift b/DuckDuckGo/AboutView.swift new file mode 100644 index 0000000000..572c7e6b98 --- /dev/null +++ b/DuckDuckGo/AboutView.swift @@ -0,0 +1,94 @@ +// +// AboutView.swift +// DuckDuckGo +// +// Copyright © 2017 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 Core +import SwiftUI +import DesignResourcesKit + +struct AboutView: View { + + @EnvironmentObject var viewModel: SettingsViewModel + + var body: some View { + List { + AboutViewText() + AboutViewVersion() + } + .conditionalInsetGroupedListStyle() + } +} + +struct AboutViewText: View { + + var body: some View { + VStack(spacing: 12) { + Image("Logo") + .resizable() + .frame(width: 96, height: 96) + .padding(.top) + + Image("TextDuckDuckGo") + + Text("Welcome to the Duck Side!") + .daxHeadline() + + Rectangle() + .frame(width: 80, height: 0.5) + .foregroundColor(Color(designSystemColor: .lines)) + .padding() + + Text(LocalizedStringKey(UserText.aboutText)) + .lineLimit(nil) + .multilineTextAlignment(.leading) + .foregroundColor(.primary) + .tintIfAvailable(Color(designSystemColor: .accent)) + .padding(.horizontal, 32) + .padding(.bottom) + + Spacer() + } + .listRowInsets(EdgeInsets(top: -12, leading: -12, bottom: -12, trailing: -12)) + .listRowBackground(Color(designSystemColor: .background).edgesIgnoringSafeArea(.all)) + .frame(maxWidth: .infinity) + } +} + +struct AboutViewVersion: View { + + @EnvironmentObject var viewModel: SettingsViewModel + + var body: some View { + Section(header: Text("DuckDuckGo for iOS")) { + SettingsCellView(label: UserText.settingsVersion, + accesory: .rightDetail(viewModel.state.version)) + } + } +} + +extension View { + + @ViewBuilder func tintIfAvailable(_ color: Color) -> some View { + if #available(iOS 16.0, *) { + tint(color) + } else { + self + } + } + +} diff --git a/DuckDuckGo/AboutViewController.swift b/DuckDuckGo/AboutViewControllerOld.swift similarity index 83% rename from DuckDuckGo/AboutViewController.swift rename to DuckDuckGo/AboutViewControllerOld.swift index 765b17d10a..0005e396b9 100644 --- a/DuckDuckGo/AboutViewController.swift +++ b/DuckDuckGo/AboutViewControllerOld.swift @@ -1,5 +1,5 @@ // -// AboutViewController.swift +// AboutViewControllerOld.swift // DuckDuckGo // // Copyright © 2017 DuckDuckGo. All rights reserved. @@ -22,15 +22,15 @@ import Core import SwiftUI import DesignResourcesKit -class AboutViewController: UIHostingController { +class AboutViewControllerOld: UIHostingController { convenience init() { - self.init(rootView: AboutView()) + self.init(rootView: AboutViewOld()) } } -struct AboutView: View { +struct AboutViewOld: View { var body: some View { ScrollView { @@ -68,15 +68,3 @@ struct AboutView: View { } } - -private extension View { - - @ViewBuilder func tintIfAvailable(_ color: Color) -> some View { - if #available(iOS 16.0, *) { - tint(color) - } else { - self - } - } - -} diff --git a/DuckDuckGo/AppDelegate+AppDeepLinks.swift b/DuckDuckGo/AppDelegate+AppDeepLinks.swift index ec8d49dbac..116d7860b8 100644 --- a/DuckDuckGo/AppDelegate+AppDeepLinks.swift +++ b/DuckDuckGo/AppDelegate+AppDeepLinks.swift @@ -38,6 +38,10 @@ extension AppDelegate { case .quickLink: let query = AppDeepLinkSchemes.query(fromQuickLink: url) mainViewController.loadQueryInNewTab(query, reuseExisting: true) + if url == URL.emailProtectionHelpPageLink { + Pixel.fire(pixel: .settingsEmailProtectionLearnMore, + withAdditionalParameters: PixelExperiment.parameters) + } case .addFavorite: mainViewController.startAddFavoriteFlow() diff --git a/DuckDuckGo/AppDelegate.swift b/DuckDuckGo/AppDelegate.swift index 1bf54d8d4b..abae396b54 100644 --- a/DuckDuckGo/AppDelegate.swift +++ b/DuckDuckGo/AppDelegate.swift @@ -223,6 +223,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate { DaxDialogs.shared.primeForUse() } + // Experiment installation will be uncommented once we decide to run the experiment +// PixelExperiment.install() + // MARK: Sync initialisation #if DEBUG diff --git a/DuckDuckGo/AppIconSettingsViewController.swift b/DuckDuckGo/AppIconSettingsViewController.swift index 8effb6bbdb..88affd2bcd 100644 --- a/DuckDuckGo/AppIconSettingsViewController.swift +++ b/DuckDuckGo/AppIconSettingsViewController.swift @@ -43,6 +43,10 @@ class AppIconSettingsViewController: UICollectionViewController { override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { let appIcon = dataSource.appIcons[indexPath.row] + + Pixel.fire(pixel: .settingsIconSelectorPressed, + withAdditionalParameters: PixelExperiment.parameters) + worker.changeAppIcon(appIcon) { success in if success { self.initSelection() diff --git a/DuckDuckGo/AutoClearSettingsViewController.swift b/DuckDuckGo/AutoClearSettingsViewController.swift index 5b5ec0c874..60a5044d19 100644 --- a/DuckDuckGo/AutoClearSettingsViewController.swift +++ b/DuckDuckGo/AutoClearSettingsViewController.swift @@ -145,9 +145,13 @@ class AutoClearSettingsViewController: UITableViewController { if sender.isOn { clearDataSettings = AutoClearSettingsModel() tableView.insertSections(.init(integersIn: Sections.action.rawValue...Sections.timing.rawValue), with: .fade) + Pixel.fire(pixel: .settingsAutomaticallyClearDataOn, + withAdditionalParameters: PixelExperiment.parameters) } else { clearDataSettings = nil tableView.deleteSections(.init(integersIn: Sections.action.rawValue...Sections.timing.rawValue), with: .fade) + Pixel.fire(pixel: .settingsAutomaticallyClearDataOff, + withAdditionalParameters: PixelExperiment.parameters) } storeSettingsIfChanged() diff --git a/DuckDuckGo/AutoconsentSettingsViewController.swift b/DuckDuckGo/AutoconsentSettingsViewController.swift index f25b7eaff8..3cfbf6ba57 100644 --- a/DuckDuckGo/AutoconsentSettingsViewController.swift +++ b/DuckDuckGo/AutoconsentSettingsViewController.swift @@ -20,6 +20,7 @@ import UIKit import Core +// To remove after Settings experiment final class AutoconsentSettingsViewController: UITableViewController { @IBOutlet private var labels: [UILabel]! @@ -45,7 +46,14 @@ final class AutoconsentSettingsViewController: UITableViewController { ]) infoText.attributedText = text } - + + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + + Pixel.fire(pixel: .settingsAutoconsentShown, + withAdditionalParameters: PixelExperiment.parameters) + } + override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() @@ -64,6 +72,14 @@ final class AutoconsentSettingsViewController: UITableViewController { @IBAction private func onAutoconsentValueChanged(_ sender: Any) { appSettings.autoconsentEnabled = autoconsentToggle.isOn Pixel.fire(pixel: autoconsentToggle.isOn ? .settingsAutoconsentOn : .settingsAutoconsentOff) + + if appSettings.autoconsentEnabled { + Pixel.fire(pixel: .settingsAutoconsentOn, + withAdditionalParameters: PixelExperiment.parameters) + } else { + Pixel.fire(pixel: .settingsAutoconsentOff, + withAdditionalParameters: PixelExperiment.parameters) + } } } diff --git a/DuckDuckGo/AutofillLoginSettingsListViewController.swift b/DuckDuckGo/AutofillLoginSettingsListViewController.swift index 84465c646b..afd8236e5b 100644 --- a/DuckDuckGo/AutofillLoginSettingsListViewController.swift +++ b/DuckDuckGo/AutofillLoginSettingsListViewController.swift @@ -855,9 +855,11 @@ extension AutofillLoginSettingsListViewController: AutofillLoginDetailsViewContr extension AutofillLoginSettingsListViewController: EnableAutofillSettingsTableViewCellDelegate { func enableAutofillSettingsTableViewCell(_ cell: EnableAutofillSettingsTableViewCell, didChangeSettings value: Bool) { if value { - Pixel.fire(pixel: .autofillLoginsSettingsEnabled) + Pixel.fire(pixel: .autofillLoginsSettingsEnabled, + withAdditionalParameters: PixelExperiment.parameters) } else { - Pixel.fire(pixel: .autofillLoginsSettingsDisabled) + Pixel.fire(pixel: .autofillLoginsSettingsDisabled, + withAdditionalParameters: PixelExperiment.parameters) } viewModel.isAutofillEnabledInSettings = value diff --git a/DuckDuckGo/CookiePopUpProtectionView.swift b/DuckDuckGo/CookiePopUpProtectionView.swift new file mode 100644 index 0000000000..f4769c23a7 --- /dev/null +++ b/DuckDuckGo/CookiePopUpProtectionView.swift @@ -0,0 +1,61 @@ +// +// CookiePopUpProtectionView.swift +// DuckDuckGo +// +// Copyright © 2017 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 Core +import SwiftUI +import DesignResourcesKit + +struct CookiePopUpProtectionView: View { + + @EnvironmentObject var viewModel: SettingsViewModel + + var description: PrivacyProtectionDescription { + PrivacyProtectionDescription(imageName: "SettingsCookiePopUpProtectionContent", + title: UserText.cookiePopUpProtection, + status: viewModel.cookiePopUpProtectionStatus, + explanation: UserText.cookiePopUpProtectionExplanation) + } + + var body: some View { + List { + PrivacyProtectionDescriptionView(content: description) + CookiePopUpProtectionViewSettings() + } + .applySettingsListModifiers(title: UserText.cookiePopUpProtection, + displayMode: .inline, + viewModel: viewModel) + .onForwardNavigationAppear { + Pixel.fire(pixel: .settingsAutoconsentShown, + withAdditionalParameters: PixelExperiment.parameters) + } + } +} + +struct CookiePopUpProtectionViewSettings: View { + + @EnvironmentObject var viewModel: SettingsViewModel + + var body: some View { + Section { + // Let DuckDuckGo manage cookie consent pop-ups + SettingsCellView(label: UserText.letDuckDuckGoManageCookieConsentPopups, + accesory: .toggle(isOn: viewModel.autoconsentBinding)) + } + } +} diff --git a/DuckDuckGo/DoNotSellSettingsViewController.swift b/DuckDuckGo/DoNotSellSettingsViewController.swift index bf9c199c01..387e0b24cd 100644 --- a/DuckDuckGo/DoNotSellSettingsViewController.swift +++ b/DuckDuckGo/DoNotSellSettingsViewController.swift @@ -63,6 +63,11 @@ class DoNotSellSettingsViewController: UITableViewController { appSettings.sendDoNotSell = doNotSellToggle.isOn Pixel.fire(pixel: doNotSellToggle.isOn ? .settingsDoNotSellOn : .settingsDoNotSellOff) NotificationCenter.default.post(name: AppUserDefaults.Notifications.doNotSellStatusChange, object: nil) + if appSettings.sendDoNotSell { + Pixel.fire(pixel: .settingsGpcOn, withAdditionalParameters: PixelExperiment.parameters) + } else { + Pixel.fire(pixel: .settingsGpcOff, withAdditionalParameters: PixelExperiment.parameters) + } } } diff --git a/DuckDuckGo/EmailProtectionView.swift b/DuckDuckGo/EmailProtectionView.swift new file mode 100644 index 0000000000..0ee9d91d77 --- /dev/null +++ b/DuckDuckGo/EmailProtectionView.swift @@ -0,0 +1,103 @@ +// +// EmailProtectionView.swift +// DuckDuckGo +// +// Copyright © 2017 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 Core +import SwiftUI +import DesignResourcesKit + +struct EmailProtectionView: View { + + @EnvironmentObject var viewModel: SettingsViewModel + @State var shouldShowEmailAlert = false + + var description: PrivacyProtectionDescription { + PrivacyProtectionDescription(imageName: "SettingsEmailProtectionContent", + title: UserText.emailProtection, + status: viewModel.emailProtectionStatus, + explanation: UserText.emailProtectionExplanation) + } + + var body: some View { + List { + PrivacyProtectionDescriptionView(content: description) + EmailProtectionViewSettings() + } + .applySettingsListModifiers(title: UserText.emailProtection, + displayMode: .inline, + viewModel: viewModel) + .onForwardNavigationAppear { + Pixel.fire(pixel: .settingsEmailProtectionOpen, + withAdditionalParameters: PixelExperiment.parameters) + } + .alert(isPresented: $shouldShowEmailAlert) { + Alert(title: Text(UserText.disableEmailProtectionAutofill), + message: Text(UserText.emailProtectionSigningOutAlert), + primaryButton: .default(Text(UserText.autofillKeepEnabledAlertDisableAction), action: { + try? viewModel.emailManager.signOut() + viewModel.shouldShowEmailAlert = false + }), + secondaryButton: .cancel(Text(UserText.actionCancel), action: { + viewModel.shouldShowEmailAlert = false + }) + ) + } + .onChange(of: viewModel.shouldShowEmailAlert) { value in + shouldShowEmailAlert = value + } + } +} + +struct EmailProtectionViewSettings: View { + + @EnvironmentObject var viewModel: SettingsViewModel + + var body: some View { + if viewModel.emailManager.isSignedIn { + let userEmail = viewModel.emailManager.userEmail ?? "" + Section(header: Text(userEmail)) { + // Manage Account + SettingsCellView(label: UserText.manageAccount, + action: { viewModel.openEmailAccountManagement() }, + webLinkIndicator: true, + isButton: true) + + // Disable Email Protection Autofill + SettingsCellView(label: UserText.disableEmailProtectionAutofill, + action: { viewModel.shouldShowEmailAlert = true }, + isButton: true) + } + + Section { + // Support + SettingsCellView(label: UserText.support, + action: { viewModel.openEmailSupport() }, + webLinkIndicator: true, + isButton: true) + } + } else { + // Enable Email Protection + Section { + SettingsCellView(label: UserText.enableEmailProtection, + action: { viewModel.openEmailProtection() }, + webLinkIndicator: true, + isButton: true) + } + } + } +} diff --git a/DuckDuckGo/MainViewController+Segues.swift b/DuckDuckGo/MainViewController+Segues.swift index 255183a36b..076d713f99 100644 --- a/DuckDuckGo/MainViewController+Segues.swift +++ b/DuckDuckGo/MainViewController+Segues.swift @@ -259,6 +259,8 @@ extension MainViewController { let settingsViewModel = SettingsViewModel(legacyViewProvider: legacyViewProvider) #endif + Pixel.fire(pixel: .settingsPresented, + withAdditionalParameters: PixelExperiment.parameters) let settingsController = SettingsHostingController(viewModel: settingsViewModel, viewProvider: legacyViewProvider) // We are still presenting legacy views, so use a Navcontroller diff --git a/DuckDuckGo/PrivateSearchView.swift b/DuckDuckGo/PrivateSearchView.swift new file mode 100644 index 0000000000..4f0dae3009 --- /dev/null +++ b/DuckDuckGo/PrivateSearchView.swift @@ -0,0 +1,112 @@ +// +// PrivateSearchView.swift +// DuckDuckGo +// +// Copyright © 2017 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 Core +import SwiftUI +import DesignResourcesKit + +struct PrivateSearchView: View { + + @EnvironmentObject var viewModel: SettingsViewModel + + var description: PrivacyProtectionDescription { + PrivacyProtectionDescription(imageName: "SettingsPrivateSearchContent", + title: UserText.privateSearch, + status: .alwaysOn, + explanation: UserText.privateSearchExplanation) + } + + var body: some View { + List { + PrivacyProtectionDescriptionView(content: description) + PrivateSearchViewSettings() + } + .applySettingsListModifiers(title: UserText.privateSearch, + displayMode: .inline, + viewModel: viewModel) + .onForwardNavigationAppear { + Pixel.fire(pixel: .settingsPrivateSearchOpen, + withAdditionalParameters: PixelExperiment.parameters) + } + } +} + +struct PrivateSearchViewSettings: View { + + @EnvironmentObject var viewModel: SettingsViewModel + @State var shouldShowNoMicrophonePermissionAlert = false + + var body: some View { + Section(header: Text(UserText.searchSettings), + footer: Text(UserText.settingsAutocompleteSubtitle)) { + // Autocomplete Suggestions + SettingsCellView(label: UserText.settingsAutocomplete, + accesory: .toggle(isOn: viewModel.autocompletePrivateSearchBinding)) + } + + Section(footer: Text(UserText.voiceSearchFooter)) { + // Private Voice Search + if viewModel.state.speechRecognitionAvailable { + SettingsCellView(label: UserText.settingsVoiceSearch, + accesory: .toggle(isOn: viewModel.voiceSearchEnabledPrivateSearchBinding)) + } + } + .alert(isPresented: $shouldShowNoMicrophonePermissionAlert) { + Alert(title: Text(UserText.noVoicePermissionAlertTitle), + message: Text(UserText.noVoicePermissionAlertMessage), + dismissButton: .default(Text(UserText.noVoicePermissionAlertOKbutton), + action: { + viewModel.shouldShowNoMicrophonePermissionAlert = false + }) + ) + } + .onChange(of: viewModel.shouldShowNoMicrophonePermissionAlert) { value in + shouldShowNoMicrophonePermissionAlert = value + } + + Section { + // More Search Settings + SettingsCellView(label: UserText.moreSearchSettings, + subtitle: UserText.moreSearchSettingsExplanation, + action: { viewModel.openMoreSearchSettings() }, + webLinkIndicator: true, + isButton: true) + } + } +} + +struct ForwardNavigationAppearModifier: ViewModifier { + @State private var hasAppeared = false + let action: () -> Void + + func body(content: Content) -> some View { + content.onAppear { + if !hasAppeared { + action() + hasAppeared = true + } + } + } +} + +extension View { + func onForwardNavigationAppear(perform action: @escaping () -> Void) -> some View { + self.modifier(ForwardNavigationAppearModifier(action: action)) + } +} diff --git a/DuckDuckGo/Settings.xcassets/Colors/AlertGreen.colorset/Contents.json b/DuckDuckGo/Settings.xcassets/Colors/AlertGreen.colorset/Contents.json new file mode 100644 index 0000000000..ba7383a80e --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Colors/AlertGreen.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x00", + "green" : "0xC0", + "red" : "0x21" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Colors/Contents.json b/DuckDuckGo/Settings.xcassets/Colors/Contents.json new file mode 100644 index 0000000000..73c00596a7 --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Colors/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Contents.json b/DuckDuckGo/Settings.xcassets/Contents.json new file mode 100644 index 0000000000..73c00596a7 --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Images/Contents.json b/DuckDuckGo/Settings.xcassets/Images/Contents.json new file mode 100644 index 0000000000..73c00596a7 --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Images/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsAccessibility.imageset/Accessibility.pdf b/DuckDuckGo/Settings.xcassets/Images/SettingsAccessibility.imageset/Accessibility.pdf new file mode 100644 index 0000000000000000000000000000000000000000..785f6c0404e472afc9836e50f38c9f07e560d33b GIT binary patch literal 5806 zcmbuDTWcl96@}mXSM7Xr3(y#1fbZ7`+??8u?@wB~7`-3}noQ8rO>{h(e%I}06@$yh(WXau# zDwT7_}R*joKOAiIQh=W!aK zTU;z+m@dq^%L)C=0V!LIp#sR_zAp4ryR-rAP90#^u1o7C^g}x$2UB>#$0SpO^VU?% zrz#8nYgqBst4>WS&U;qbgdZSzw9NssElW1pfgC4McjT=BbkQ0|gII`yY2GT{mTEw< z^R6KfuSweIag4Pt%csHn=w`8&Ny)@0%ta6B2SpbxKpetT+#@JsgJktpVX4KYT$-$H zCs>RwtUDd;0uj}f8uef!$5bK4Cr|F6mqD3eVGf&W$q88m$GBQ$T6UF)&7Pg~pV*A0 zDOHeIea-Tc_4tN{C3}1*Fx=MQY~iFpB5@>MiUv{xN#2rrAgLPZr@Y8Dlp_0MD$&Rw zVYL>Chy}GR8DDG^rGnIqr-iI3+Y!lniAh$8){%F89SDxj=9%yI!!3rUJiDzrXt*(^5TbeU0!2Y#nY|6x;RRd7Q_ekj_1C(M7$lH|`V5}v%I4Tgx zk{M(orMs3X|$ZPEx0*|9?HR3gg|8le?P!7RwI-r!JBil~;hy+%_b z2a3m?B@tPf=n#P?uT8F_;sUrf=~ z3Qgh;MY34qsr%chaBc|bP2{TcRmp|V6BI=a8UhXm~3E03~-CB$-pp`trUP5HhZg# zB$;Un84r;0)e%7{hOkI4rRUL3n)<92A+gUgzpD>%42&$%mNobY>t->aB?9fTYwS|(jm}aFu#S7 zN{0gQDSa3us2bBVgp-M|WNoXUY!ZirkgSf8Uan{-Ocx>AH3dm8hGB+qs}xkCX2rFa zQcq|qN&FhIXypCk=$p@q1EMvhw!#`kMB>=&T4i0T4N^0Od?WL=qU<#Uv{i45?Mr$Q zueJVM;2Nm5`cj};P2j%b9gabiFAhW6_{B%4phz=n+{V1PL8azEfocS}fJjcx1<`IY zPz2I6vYJfZ55nq@DuD9H(EnJcYGPcZPw*|##5In)U=H)Pb9XDdg4Cy4T+?|ogIdI` z8bG_bP?KFsf$-W`il!ndf&^jd`-x0+pAIdTNy3`-~Al5nRKnNoaHKE!{m;nv{xmivhE$RpPIM zKarBPeEvAKw=JS7Wc9N4HLwf4CV%WU9TyNKAm(4%Zom z72m$gn4r10Su-rq12Hp4XNe2z0^Nd-6~;HZmzWcX(8K>KaZ}Kc54bjjF%BwR3?SU{|a9_z^0ZC#f(pdHKX!A(1cN*b|>tlRLJxbD95b+x$N8(uCMb)UFiK1Q2jzkB4m zZ`?^9etmy`etMjL_$zmm{0@Kl_diba;r;ce(+2$U^x@|E+w;%!4_nzWX{`0fgX7z* z{dP|mNmr-G^G^@Q)8njL(5p?{+w=X?>7EmH1$qJBUq67&lzM}97o~#w1?u7VHy==S zmIYVy<(#+YpV(_(>Hi3_lLTw*B+0O20?e96Hq3IO_;k;O-511DaJ3I9BaD8)odYHITKK$+-?)c*Ie0TbC t{^I7tm#b3_SLgH7EQ6ba58vPX=Y;m{X8HQzshJaLvD2G3zxmU5{{^<;f8YQB literal 0 HcmV?d00001 diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsAccessibility.imageset/Contents.json b/DuckDuckGo/Settings.xcassets/Images/SettingsAccessibility.imageset/Contents.json new file mode 100644 index 0000000000..df31465bd8 --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Images/SettingsAccessibility.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Accessibility.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsAddToDock.imageset/AddToDock.pdf b/DuckDuckGo/Settings.xcassets/Images/SettingsAddToDock.imageset/AddToDock.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5abee15394b10526af9fdfae57cb3b76d92b82b5 GIT binary patch literal 3415 zcmbtX%Z?j25WMp%crjoHFva%+Fbu@IaS$XyHgax84$AC!tw1X!k{mes`c!ksp3$xk zHasV)NcN+u*`%J_T)%#9R1(5SEf0VEDWrVyLcV+{#{Dh*6n2TPej4|8=l9Y9T+^!4 z`8aOw#p-(eXFH7R?_bHQH_KncN&GF0()E+N51#Xg=VG6;D#n<6mczZ!DkdFr#?FU> z)3C>MGi)MliZ)8x)4`-tGNyR!&Lwzfq{)4q-o*5ei@14ONvTiBPASc5<7%@GRVL=xMy%X=n zJFyqPey(<*lgXh~?R;1L;owrcq#S+zLc6T8j=DGrT8b+=Nz2jK3PFu5AnV3Umo`+~R0T4>-EE~K0s*(Vvj^vd}V0(r!mgqr|JE?IjS zRHeJXmRC6%s|(Imu|@~FM7$~{nG%47fCEfBQ8xibt+ECqO}4ZHi$F}&DNeP4h6-i~ z)8HsWy-*640dcq|OGUhMSp!KXJCIE^WqfpK6agX@i)2Ypu!L}d#S)=y#Vk0;23QJ~ zc&9rF0B$tg^2H*uD)J@K7b3GvTnz1AL!s~-UptWt|FZ<93V={lo%O}wl=ZlnNxX*b z1oFwn+QqsySyROn3YC$`Kp>$QYw;rIov88I5-SmKehKpK#X@L{iggJB(x5Vj6J~KC zaFz|>}RM_%su35 z`dCY1YSyifHEfC;bx+BXa(uHk>??Z>y@A^Ux4(wz;XA#OZAzXW$zWi9Jg>gp?+@pb zeET~d)A&}u{rlG_S2vrxu>n7ix7*FD!$AAjc z=B^I=^SFmcdaHNvW^)84andTZc+nHYFa6bz+gpSxDTB4_ey$E5u-80_{{&=VDPCBj z1W)X6PW)v`$9Dp!OH5f;3StN@NWkqgxD@IHUi$6BEAbMt89nVGgreB5kz<5A$R&+3P3(DC$ixF4U%r`y|S6Dh0p;c%9ea3y&4X8YfW=<8pg S&GB5*ad@eUCr`fn<@NvFi?G1} literal 0 HcmV?d00001 diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsAddToDock.imageset/Contents.json b/DuckDuckGo/Settings.xcassets/Images/SettingsAddToDock.imageset/Contents.json new file mode 100644 index 0000000000..bc473b1d76 --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Images/SettingsAddToDock.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "AddToDock.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsAddWidget.imageset/AddWidget.pdf b/DuckDuckGo/Settings.xcassets/Images/SettingsAddWidget.imageset/AddWidget.pdf new file mode 100644 index 0000000000000000000000000000000000000000..28e444aa5638c61bb0388fd8da52d52436b97a1b GIT binary patch literal 5029 zcmeHLOOM+&5We$Q@UlQsU}aJyB@qY$B)d&fv_-d0Z$S@^R@pf4TCL?2X@7lZDDop^ z1H~qXK7iH17=Ikio1-BwZmwTl>Z%n&OC`s*AB2?8p2_FW#jwBSzoIVj)%U~x?)Y9B z0@utn9S_6iUaYQ%-?#m+{^q5;dR_kOC-Ixml?snkiMRxXHCHuF6*!q8*g^8Zrz=m7^OEEN3`QBRWL6P_Vztb+WULpkI)gio5Id)31`z@100L9` z94FYk6Ys@4u@^r*JY_M|KE*Sn%o%urY-S4~jzYkxZITid)G|Y`gXDn^+DINi7)4o(Dso_93Ls7xS0z;nFcOzM0|w%J z2?C0A!Cp=m80JDIRrjR98&!9yjtPsl87gAc_*Qd#WAGu3yiXW}vbB*9LJJ};fgQ|c zW&noF1obwn&-)?Eg**@>4>Sx8@?w0mU$jTqLmT%iJ0C45pdvGfTPXgoKCk*oJ2x!d zaGueznpU~4qnw`-i}IfxdhA$AQNP0$_{TaH15TWE{eel2yEyDFf@l<#xV6jI(i9g08)Ipf$@|Qr$t~O&X-`r|E)nG8pTNE&IUSc z0Sr_?3eSNdOPpP91GMchO+h-QB-j9?$Oy2-EERW|qFscu9*DfC+n}BXqF@JlQyens z%j`R4JT)orYELu6T=3E4IV7zO=9QjFV%AxVUQH*|wD#L{(;K8G_cLE`wk;kI#8=UV#%(0Ow%`ke-ip zpEcEL#~a_$v3c2e9+n3*3qFR#H~~X2UDYb>>f#s@l#+@v5AcRJIMm0WLOS9Cb|6I# zfE7fPR3NdKiUh!}A_1@-34n*N0Z5SmzEO$SCFyR3uTkbZ7i+o>S1uMXUB#?k?Dykw zl5c*Ys~LJ$KmYOTAXhh=yCDKU47c0O%kh(ZLzNh-1VoMFYo?N<^)QVe5B)GnzWiB7 zaaZI1IP6Iy-~1%-W^*7+x(F5bLk!{GX!YIpmQ0oG!CEFgSK~)|SD)EG5mHE^jZ{ct z2PY`Zj$dt#o85S~eD%{|cqf!>#q2)+%Eme4B*F2~N(M^Oy-|D&*~t$eYg;KAnTIT94yVvcn<3tJm8<2eLj~ TsBI3%;EwH7D=sd+{_)jcHCpGw literal 0 HcmV?d00001 diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsAddWidget.imageset/Contents.json b/DuckDuckGo/Settings.xcassets/Images/SettingsAddWidget.imageset/Contents.json new file mode 100644 index 0000000000..b0019df145 --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Images/SettingsAddWidget.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "AddWidget.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsAddressBarPosition.imageset/AddressBarPosition.pdf b/DuckDuckGo/Settings.xcassets/Images/SettingsAddressBarPosition.imageset/AddressBarPosition.pdf new file mode 100644 index 0000000000000000000000000000000000000000..779f086059468d5709d929a129d013325dea0632 GIT binary patch literal 4937 zcmbtYO>Y}F5WVlO;3Ys(AS-@z2?PNerzwiIXzKJ9^q|U{*o7^%mQtko^?k!7ha*`< z6Lb#-{dPI?=9}W9*Dqf^HDekEqqN%n_WPjJvuEo0^I_gz(Z7S0`09sw`~GmP9KcKZ zYJa$&*LTC}<^0#pX1@IPg}Qhn|J&?`KL<1F@+jRFPkF`fLVIW1Vskg>F*|y&^K`M_ zZ1K7ZHfb#1c}05~IE|BzIy+@XlU>$HS$=89NRNazgE37^|L}G&w#n(J@n^JjjOjoo zqg7>85Xm4@>spv&r^C=@VB(BHT(gfcUOaroG&aIjO!#)V9^MVx;phJuH{T+Dx}dmq z!_2hAAtG>WSqI6q?6jSd>R=5L!a9vQ=43nqT*42C4T0wy$QF~h_TeHoVrx^dyt1nE zXo$>=D#20|k*Y`ftpZf@s>+1|hL{KBG1wUwfo*p;ttu(zmbVaDNx*RS-v)tWp*>OW zdUABIX9t%^hlB?iWahUbXIj$zYl@{_@X~`UwHRDWl)-bQ!PUY%AdkT#4|bGIgRiTS z?t$*Xj)~gpV5x_%zN8=)(OORw`Pzy~E3?+d5aAPVOo~(KX(?!}mR43HAKM;^oOXT+ zNioLh8^)wfu+-XWLWj11YuZw`WE6?7N1G>~P*6=eyPiL1gjz)XoH4O@_^KKqS_|_M zsl)79I$Ovb7@@>|_c;;39INimqlqzSlt%#lY_eDX9RWMKoZ)WeM&qWK^U{)hHr@ks z!A6V{H)@lDPZF^)SsnYn%@9WK+>}aqbZ{}CTfk`JyrpKPV@Sa$AU-50g3;bjlLr!X zG+5{no16o0?6WW?(pMVEFgfMN3HvlA^9bQyXCNU)#bN6DfxBRGtrq-R@c~ES>?)^9-ceM5fY1{WR2uJT&|LhZbInYs~r0GJ>(kSbw=7GzLBj<5Z$RAei@WJDo4>~M_k`0;xU} zfntAsagJxAle5J+f(AEcQ#rFtg&R1YE{?*4x$GQ9KPp<#3nsaVhPLt9I$986Ov>^( zc64Mj`0mE~)h#fH@K)^fi_>W6SLp(&97q<4z^`lOMY0$J9g`bpZN0ljsmR z7lQFn_akqV{?A5rP*`3y2n74dKO$6uTdOI$^{7`G?f!$VI+lA8Z*$~p5ggI_b;;`M z?RIzAtGB=6`UKDFm%sm*)#~;7{ak?`=c}9bi`_@{7A~pT#tXYtJPNa~nxxBlzx!~% znfHn=XfCU`i{17xZ=sQHXBzl=eGg293W+-$g7|J{_5IBis4BAHQZ+pnyARlF9`N4- z5t5KPLJ}FcXNBGHi}hiByL*4U_2d2gZqO_4wxM$>NmNlt>dnok8SKlY*ZTfY%<;*D;nAaSetPu}JImJI literal 0 HcmV?d00001 diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsAddressBarPosition.imageset/Contents.json b/DuckDuckGo/Settings.xcassets/Images/SettingsAddressBarPosition.imageset/Contents.json new file mode 100644 index 0000000000..329d94c8ec --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Images/SettingsAddressBarPosition.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "AddressBarPosition.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsAppearance.imageset/Appearance.pdf b/DuckDuckGo/Settings.xcassets/Images/SettingsAppearance.imageset/Appearance.pdf new file mode 100644 index 0000000000000000000000000000000000000000..bddd87926de1287814668b151abe581f2ac80c26 GIT binary patch literal 7129 zcmc&(O^*~e5WV-W@C6AXrKkPfmJm|-6iN_eHwPq?!!R_kXmh0_IUxv*H8J^W2 z!}inoSttxV%c2+i-SyXMLj0Zj;+!<`9QyX_?cwWsKWsNYj{0AUaeqC`#E%~3H=JL; zALCk{@Ag+&b~YS#*Za+Ih;M%OeSC2~uE!z$lJURIT6C@J=n;<|rGI($!?+*TSIxI(^-PLShel2#SPBx!7yp0^YmJyl%xg; zAUSNdjjYsYdX%_oq-lNcjO&GLvrzV}qo)_PRZ?4wE25%g(^S%;rL?jdC(4{@h7+6S zNI3?kC1`Q9Du{UXc=0rjb#SAg;PEWlG@q+Y;C^g^ZLLzh=_`YAw`q;{(kh`?RIjCy zW-VS6eN`{dF0xINmFr45kDIhadnR|QU(Dlpfvk+X%6JyhCVc#***1SR&9MEDy$>x4 z(1rpqMXFPt`lD2{l;Sr>Zj6PuQc!T8kt3&oT!f68LWW&;8d-vvTIBqs{P8QXdUbs{ zUVOd$!Ah&4aW?);OEa^jWg4;5k}|s0)8U_s&2aYOv3PRcRKGR{#2v4U_vnUzlN@NF zHB$D@iWqUW@0G^;TJM!L0S(=eY!Pv)g%Ghs5y!6qH%i2*5~1yTYYecoy)m5+kT@HZ z4I(eaQpE5?)^=HGtAwy{H1Ib}38cu89z{!_6>=l@VMVUjT`z(VAC1^Hb=A^5>NKpD!@fU0$N0-rS^JZHQy>Djh$P~wc2@WDyv!G@H$jhGccc4ZibAN z)yOJgjm&pmcAk*s)^P)XI!8W34I9Wo2w89jazbVZ5gIZmX_q$Z+t5j=^voaowo_io zuK1&GF|~um*&l&ks(_SG*^HId$SPrtEL#f5vW2Qf?t`PiW?qpuf|XUDktH1DjS&#M zvC{$3GtX_I4c2JmX2=3uv@=>4WIg<|Q-QGNNb|6(lQ4FLjFr{MDq)Q*M-`Ceu&Nrl z4;-Sjj;;gmaI}ljW<3FcsXQ!(SOv11yb)olRluqj(BPo5C+Eu~(t~SkhaIS(dD8_c zYiLDVjjfgzaKMxc8q{;S#f{P#Dbn;PC1OiaWGA2Okxc;0O<||-+t`KW@b0X;CdtrB zg%BkdWPHk6qKyh4QE~^`DjZp~E%4=cTv8s)EC~p=Td#DI`4otn$`j|clRD$Gu6M|h zt(}5T5#Sr}oz8x@#~tu315dgZ0Vu(T$$rKn69At9X$105Ej^$v?8k92H{V@H9@c+5 zU6xMfOVps?{%&$k&=94x3S30nEx<9I)!^=)FtPsIvs~%qG)LgPL@Apr=gCYc(2C`3 zO67CTFlWk&mY=?gE8m=uAi=0TqeRykeZE$d34 zJ7Uqqlon;vf-_A@-?Sm|tOInwrk3bV$C=qsY($_tqEQ^f$#yv4EYh8kl+R%@%6jqq z6Yv`a%slW;m+o?q)$Do1qe{jUjw&z}E868lot|nGn{qg`+;l)Fg<#DqIQ#y@VzZQ( zrNs=YO0@~7A^7P86l+Y1IE(Dy$&LY4HR}4g`AU5_2YC0@CiCSD2IRhEKc}h6#aTh4 zs*bc-%tzTE9btj;26QK?HJK&rkmIvn4$KmJ^D~~FPC}ggTq-%|wmVViF-3BtuqKNN zY0eMkdb&fQdNUTB`Lr;Hb|TJXW3l;4y5qhn+quPUN{q932R0F=!Fd){+8o-6k{w4G z#}=S1DRe4RY`Ow7QvuDH&Zh*2qfcU$IkXd1Dfx@R>Y1Vs2P<60KHc4XuS++g>0Z}r z8~FAV>{xx6`E9%1jR*0LK1|S+Z2D01X8kFDKUuvRK3uH-?6f;{L^l2Wjh8XS>}f gXj`IfR_7Q04#0@bKaA`B7(t^33eCNH&t5Z1U5WUZ@=!>NUDYO0kAw`jhO%MWv*>Hn*o&&T=4{%LQjV#+WI;8 zI2boZACp;GGD`?S)!#x$m4zYZ$S$dA=yn1=UVz@m5@Qu=eIZrQo-FYpAQLMD|IRR< z55*&)|k5WvH+&x!|?vAVL$x* z-z%?`r(Mbum8ZuPa?lzn3ECEiiXU|}giz&4QjDx>+tYY}!FOYawr&Y+O+{0Nniai02HxEx<7mxg1~@C2 z3X(O-R2?VN(9xD?q^jjU_hRllR$Jv{1e1ku3DOy;ybwr8DYV{<0cn340!D{Uww9@P z+2910ra&@NvMynVK*Eh2EMOR|aRH~?7Ko<)goW4(gpHLq<6y-O?OnY$L2Xz-WgSuw zp6S%wShUx!GNZp}Ou`4PAhZ3d(Q04B`u{sDj>+iaGUDo7NZOAjju0fYK!fGU?_ZeyG0P=Yl=rAH-B8D<^54L#;G zq81E_Y7-|o^#Sh#LGa2$mv~2Ky;$Y3m=Fw=OJk~YJ5lbNKS5~ndwOZ`O9oQds7rI|>IGS;7ff^s(+X++ zR_{ABP_~AnZg~h}q@0HCPY}v-%c)=zjW7u!@ln+L4~^m~2mCxv;Jm(es?SQxZzRYm z#-W=?4kHvk@-SfxHH_tC?_ot@fQg+`PQ{-f{C$ArY7B8I7P6{o<9!H>m;|ZmW`8TJ zsjA5ZlSCu_1fi(o2u?f@Sd2kkBI*_9O2EgPiWmbC(-xvj!Z(U-=4c2(C~7iC;soOb zHo&|wt&rxAq6R5hv72aV@;0U_1wCHn!Ji-#bT(CjiE?2QMB<~U3&t}?&9k96PZh3F z*`=T_1q6hkNf{4}Oa~)Sof!4iy#g^C(GFzS*m&rn956zgQ$gt46yL-6en84F8p$eS zO4Cy(BT=mo8piBVFcBt9qF($7LZP>>GP+r`Yr}HKpzB1vdpKjFTs^$NxRPwX-tQ0R zlX~|nt|)jmzx@5jtTwm1`?&!>&UX*H*N0E)T`N8A4DJwQ)-PWTeYG%c=hNZiahgwx zEKW)B$xPw$h5p31s=lbvwd(9X6Pe4{o zxa6#uD8Q3A?15kJ&b!CM{pHqA$NBxBRT^s4JRBk}JV60&56X;J3SY79K^0y?4qupG zKy*K#M>aaIk(FKE% zl0rfSLKcbc!XBOJuCB+a>gwh^dHMX?uiT*wgBz#u>Q8?j#_{W~$Fmnd-+uS{_Wbs= z{42Hp9nZ(<;3xgYr%xIA;CJ>SK6<2o^vLk&k?t`gpFWlLr^`1ockp-Y{>|y~?d^|a z0DPrUH@DZP^Y_Eq^V8qn9Z#>m`(}LhdjGHE&G6UZ?1dZO-VFG$`DPlwnjSvcOXtG+ zHnk_`{djyoOotTo!^ig@ZjP5jIfUY33}ZZ0E#t=bLpoGnQ>kM*xLLpP0xU&ea|H8= z8NNUGnFqZ}sSmH22MNgYcpMh7E{@AW48H)&i1!t&ASz5O9wefSb+sX`4~86vaLCOQ z+o;f#K`4^Ysg^M`mC?c0I}W~?h7P9J1z6E|w`uPW5yOJC?-u%llT?}7{cyycS+>^A zUl(9rSOJq^F5&AQGBa$4^jDJAAI&f%A%Hws48zN|-eMTBkUd?m#V}$fd%E_EVJK)8 zF0Wz)QHb%wA^^Y3r!ozHEeqk03$TFMMT^U@B6YHYE)tnx{lO5$IyP`Ws(X1c%&jy- z2V3t5x4I6dm-wb25LwgS7-$w6Pt6a2VqCC;_;N)GSLCRSMUpUoJ|FHHB*n z>#WqMqG?zj@*MGpB3^}Pc$q;IIg(l~RdM!i>?^?}`E=s->;*O#rZFFqgyhlr)sDPA zY>>j;y}5x@3Dt`zX^m*j!;2={s$y7I#ne+ZajGGCGXl1XwQ@)|bV(e?5WC3`34XUMsC(W%cr67&XCY zVe5%1oj#_Qn9^fw+8YtgLZhqs;W+fT!)tTcg+Q?_CqS9z%Z_bk+eR!i4tYCP_I;$Y zEy);2Bwuf<8ZGW7bohvbwgM8`)8q2_VMY18BmY0|$kTs$M^;zxzq}(yC9t*4R^Ybg z+TJ;z)*=~OTkyC9W(&L52B{0rMd(&`ZQ+NnOu%kq@rU5MfG)|}eH(6wTEsrwFnf6T z$^>Xb>brtzWy4Kj8*a$m3Yi}5U~jJWtx!MCzgEX>eff93=W~1c@RbSJ`ImNa70@MF zBWS}7X>Ic|+%S7ENrspJZPMo7zKjhwg>ASYd;gltHp1FCd*`M~hY&J7o)7HFK2Kpe z47Nj_Xn6lYhe4;dB6IMg>7F7~J+m(-00qq13iapT`j@&pPUMDGq1l5?}#%|7!uFu}PpWt}kRkRuK12GPyUb#_{+&*TW0iz{kqIp-yxID(i> zI_7d#&8;WymeXm@wCZZ1yLZAN%`^6Hi1PKmUoUpYG|QWRol``V3WbwtC2LNB7Q0=r z+)pJ-t|g}kLdI&-Pt^*e6Gs-q;2<`HPJczzJYv@GeQ6=xd}%SYnRjB^eQA-=F&|@y z;Vytst+H|W9mJs?W|68kb7fW)2YN^sW`S5lZQh-THfG5eouy({b(snS)+4I@Wv(b; z-cdeMjdng%O}OvZ4@T6|eG9Eco35ObXhkkXl7|$bouX3+M%$~?9jS6Ti z811=j8QH$(*+m#il5$)~aV9S|)K@Xl>Ex{7r0mnUVV;vrC0oRF8)zU@HxPwAC){ad zm#iUDUU7WeN4UzNg1VIAl8+OLOCByH1u`?FVc-Er6F?uM4;0;8Yb5*8pF!x)sVCM6 zY!%E*Tv9`A6@g{|zH;sq=zUHzQ^V{sCuQH3h?8fnsV`~}VWNd9rN}RaqH|X-kgJZ$ z$Xml=K195VKnyW7af6f-wQlqr2d6o**Kp5SL$eOOoUS9vm~x8=imh&y8#;=moQb)m zb168kHz(<_7o?1a;{!JP0&1M&DoffNE-O)iLY^twEF<_KA!Z}UJ#Jpj5N|yr6QXJ?2pPn z9^B;S>>BA&QkTfw*@^<~r`~|F%3Uaw+R%VG`q2vL@-tHV#|>kGei2`6AoOCFfx^@z zq~|y-caM(Ac?{5Bw>eU+uS{yRHFoVZOrwAV0%FM__LoZ8;6_UIwfa_8qo2~uJ4$Fw zvF((q4G@n0fM79&V#C}J;*^L$Jya5#+-;U|`7rwV;2>VrZutR_TqEY{Z{irJ#%0D3 zF}y1s!7|rfu)r`PuJ)cJZ>;Ylb(3F8jmzvpD#JE8eX3kbYj&u*J|aBcu~j$LCtbq8 zIPn`7I&qM#tN4kVyJU9~n-e#z<;=RajU;EtVn_Mny4+B>+(uHT``gC)j^Uyntj78k zCF7zed6gffQvX^$&w-mnWb5jKJ4dR4k&M|Npx#HbzF5)U^lGPucJ(J_Wk-}n`jS0= zxoBH=JCrCU#=Q3fyy4PNxBUjH!D~NVBV{Q*-v$#=`LDKYh-NVbxP9OIHGH@L$KBKH8-{N z_(lI4gn8T+=q89G>zbJqri<{?nAslb`1sS)zi)+zaG@EWb=Y&UUry=;Ps;;so{4w2qaO)fXt ztzqWRl2i{vC}No9`TNC&$-NYDbs9DfH^i)y!YW?=^?~D8U6oKheQ4yzS0D3koIiW_ zQ+t2ZO$s{)#>Kyr|aYCW@L*QUv+uUt}bs+mn_L%WZ=v5Yp{{+ra`-}h6HV2Oa1!Y z8+09I!mDvz=h@Xy%ykb8xB=No;uN%#BnxkBLB6l*mOnecJ-@hmdw1&3*QXx_{vaR2GbPQUSTg*+ca+=aL~!4-E#(dc8%T_|y=ya#a~WYF#P`MZnL^`Otk ze)Sx8d~tL2{`BSe#k)6OE>1anb#-++%HZbpv)AwbaYFm{nbrCAZ8K-i*$q#gy!hR> F{{+faj)DLH literal 0 HcmV?d00001 diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsDataClearing.imageset/Contents.json b/DuckDuckGo/Settings.xcassets/Images/SettingsDataClearing.imageset/Contents.json new file mode 100644 index 0000000000..592abd8120 --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Images/SettingsDataClearing.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "DataClearing.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsDataClearing.imageset/DataClearing.pdf b/DuckDuckGo/Settings.xcassets/Images/SettingsDataClearing.imageset/DataClearing.pdf new file mode 100644 index 0000000000000000000000000000000000000000..19d4bbdc20241ff0439c808bbe8e83e8f98ddd30 GIT binary patch literal 8793 zcmd_wTW=-TaRuP_^DFvAfE~bxy?5UMLx6QfkQi2G@?gNo14Yr&I5VU|Qi1GWpKt9x zJmkzUi1eKEGR^9Jsa>^dRn_kK`cZZ8FuK)YZ)%B~dKkGh!{rs=1`@?@7%H#C&(!V=Do!_1J=#RrRkK@!` zy*u>Bb?K*drOPl*{g#KiYj=NjosT()IcYWMEI>U|xyW$Q{k_QN)>L+4>M zaOuiKG!JEdNpwZgt=~#1T^Ww+FxIjeH?7;W_F0W0Q$KaXairByyHbqmmwD-~4lfAn zahayNw$vK+v24uFUY9; zf^<8s^EQsAY{#LLu}qmfEM*$Tt}Ms7pNFltvjg<~wybP59jCI6^O|#RYwagriJ?p^7R? zL)|p@RXEyyD_bQRL`WT+IzALY6tV8I)*-vn30wnr@mtDlMivIgCSs+A(Ia(M0btZP z0B|+61Z8t##>(q3hXioN#Eya3JdaCdFc0{rKp4ei>gYRd!eq78!rkDR1BMtp9T#}* z8#c?hjy7GK#jZIibk01zZI-KS6#Pw0!kxkJ>S1)i>A2Q;So%&hkK(amm=LbFh0s>k zZsSVXV4c3;4RLL`GR#v8lTgsm!rmr5rt==b#wd;***LCLAY=ErDKqm~n2ro7z{g2z zkw-H|E9JziG+P)Uo*acx1D8lfUXiVW&k5S>DL`Y@#0QpYdt*R^*Zj6HSUdHMKE(_o z!MXvM*&qpi%o7i<>j*KSoVq>IQ0XW6fUFQ16$SNQe zPf)f@$tz??Iu0}&G1k5$6_Bp+e@-?p7|Rn^mtow4WhpG#0NgJkve8{^u&hGO>VbC% z3$9nQb`X#Km?t@CE`4&;nis%#S zO$JCOqK2GtT^AbRpVG@1LDRINAUiI&Yg+9?#sJ|+8ab}k$1;#1bqf3O4a1sfkUvwbOWUyWK5yOVt18UN*xiVhGEi(wlSDWVzo(IEoF+;5-P=!+SF+rXqsJB0a8BJ9z|@= z{kUhYf~vC@j&p4G^HMcn>Y~I#L<%8vxXx$;mC?}GoAlY+AEi7(D zaXBg<8cSKTOladIwS3zLDd6QcvTTl(y^C0Xl%;fOdy6~(}g<8BIHrX+kXxjZ);g$v0=AWJAoF$2BFDTWAIn96{0@39tK`dMHBdJPlNj{nBE3w#7F^%y9 zKSj$_hP`}HE|w%qF$6c>w%PN>KW(JinFTX@5tZRzp|vPr+KLj<7$zp06i)5jSXVyq zOe*2ET!nuz&0a9dCMuzDve;HLCz6;1xnytg<&5DORn)rF>@D2`AXXM&i#jHOt60@G zq~#bB%+Q$G?OEb$0n2mA!a`U5l8j292}^ma{)efcJDRT=l*|^X0~0jOfkx8I`)y^5 zHb*I-GisLBJ*2S5D53z)%@($TJLNo5ky&GDGSJv_$bvMJJIORK*(D9YG|3!oZ=tM6 z-Op1RYx14CD;&ZCblllQae!ds5eAJ-+idVn+>%;Sao9AMixRC6HYELJZ-W{dPz&x9 zO-=J&AY?YF$~|5-vU+VDvWW@k8yN!dM2775sE50%0HkH==uJ_dk#tN$6X>f^+JZ%D z1@28m14Z+f6-6)4gFf)?KumFEhH6{5n-CxM>pD-W?HEKWNof$z>mju~$KWs7WG$g0 zOo6s}Pvx#jVl3T>!!%o^GhqEwjS0xD^FXp`{j6&Fikfr+vO%nuB3hr@;!2@a=OlHV zmgJr^(2CepHEE;@_Dsc!UXnmLSlyexTCux^MBBJ!MGP6I%Z0}Vm^vvH9U%#Mk1}aH z{cB2W8KbCMGI?odPqZMl1(^)2W?4yu|qKu!~ol90nOsO!V#c97lLSqx)o@E}uya7_8 zoN16(vUvJ7IRe%2Om1@0Y8T2oM39Cn!*5%Ng8k`mt% zis|s13QVyDgE>8BD7KW$LhtElKa^RjiiPx;NIK=!$0q&N?K?V1o}i!5z!grL3n`Fv zd%_kNNp9cm6_=)aPun{P#zu%Me8rVYt!-?KC-Z1%38fAZ8+IUaBZ4_paO(E-aqR*o zMP+Q126-2zk7E%Pv(8qIU^ZmVGeoochx<8Siy??ox2cN9)~T{6T{BAhzRqXyRu989vN@QXx=&~jz)y2_PgO0e*9>Pif;WfVH& zI=2!ksiulHof7oS&4!q$e6Nj`WKl9MOG;OdDsKSfECJjUOJVD?jJ2jQJ)dh3s7_)I zG3&+bho6#8Wr&qmQV}?xB9@Hxa?RLohH@d(?qRrF#?W}lbQFf|UDCSz#p0QFk|}o5 zP)sCMe5UR@jJQFf zx1NXNLKkW&$&e(JiYvZUTX03Fcwibn$R(Rh5VH5i1y=mqZz4G-n{Z>pR3g4{z12zwy?E=H2-z*k#7=rEkjl7Z#E2FdUn+Sa^b+#P zQXvlS-GjM$6OhuyR;4U{2S4sRG;hSvaXUlrq+r zgh9tqwH69=5XjYTP8frz!a_5sWl)7Eix-5J$kzQO?`mtULuIiZ3}znB$Oce^#Av`- zpySGxcO8QHQ_tyAU}JQPWC1!wVeWdf89P(f(V@L8EXuP(hhWLQV;0xsBJ`wSd%} zd$BMjHbC#OF|)&QvXS)K_y>9gI?`T*RU!gjHrR+=M)zOb4NR+|u~i1@^X4tQ?&`$6 zz@$an_9}gA!B?FpRhWTaR6y=ux&)*c2F!O5} zwmq~GuF0MW&%^d_il^64-#T3bN;vJ;Jw0hF&eHP=dy>x3r#+v^o@Tr~e@%M9?Qz@g zc3(TrURP;6^ZMx6dTmRwa=Jw&f z`%Au-KOO0t%kQsGfwbn?$HA1>eC ze*ga5pYN{!dXRq0VUMvEJql^`N`CrfgZ9E#|Mv4mnED@xq}&fgO3jZ%>fiTA$s`|+ z(#w1_%FV-v6W!N+C>q`FJud%nclqY+_1z)n{pT+j_c!;q@2-E_{pQVgzuirI@#^-L kePh1nuZ!1j{&5{!Fz)@s<=sQGjxUGx@X04%{^_g#0Tc1#zyJUM literal 0 HcmV?d00001 diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsDefaultBrowser.imageset/Contents.json b/DuckDuckGo/Settings.xcassets/Images/SettingsDefaultBrowser.imageset/Contents.json new file mode 100644 index 0000000000..c6bf4973cc --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Images/SettingsDefaultBrowser.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "DefaultBrowser.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsDefaultBrowser.imageset/DefaultBrowser.pdf b/DuckDuckGo/Settings.xcassets/Images/SettingsDefaultBrowser.imageset/DefaultBrowser.pdf new file mode 100644 index 0000000000000000000000000000000000000000..00614d922b066156d80710c936264e4d58d7330f GIT binary patch literal 3679 zcmbtXOOG2x5Wdf^=*vn8(vJK6kfKOrmmma)#o-olFtd}5ksn|?DCF1kRnK&F+Xh6$ z9IW=&)%C9G>YIoA*SD$yGQ!l=@wsnH}0NJ?}Y)lB&y@- zFs`=U;(q*NJ&en*Ux~Xn?Z4sJ{obiw=1<77xaAe^`Q8{~lNY8ehHWSN1k^y>)#5np zz&P(3p+Y%CXI%2h*#@lAd>^dUDpXaJhf*P$AO;+r6$NAMZ46>lG2$zgq@!5?97E*F zYccE5AVX(+k5BtbwW*k)&0r(=Go9~Kl-79xTbxcRid3kSEX)`hI>pvAxM{#_SJv(V z4aPeQon?=eiK_7vuqgP?0KZ@Ty0yKdM0_+O*zif46Mh@FF?qk9o%klik_0GOcxb`oGqDCQwui9|Fz2+6 zEL{sqE&9OA+7J*@M&`UHUJaJh*+MUtIXj;)g&L4L#*%KxaE{EymZ?f##gCjp%u4CR zUiuUiam)O@fFCJ$y)Rrs1J%Ss4lyAZBC^B>#mFeI%qO4EyEs#^IW`tPXi)A5;AtiY z;?y~s9SubpRd%98=Bmlp*sWO2x~@T4J|tDzIf-D0p3+G*xmJn}S;46@lxVe?`adcp z7kf%b4QghWmB9#=h%5d@4@aJ%X^AaBog&grRFKmZ5H_PUqJbx(~kioD1Qf{Hrxxe&p7&P#)K_6;ry; zq2TVdh0antX`5y^w;xnvpMp)eQ5k6zW{er|g14BQ5sJzsQ&xr zqfZzH$aWXBLG9t|a>gVeGr8-HwV12W+-#3MZ!9KE6{5n#N7Gl3 z#vr{A42#kop&CZyxdfsm=&2<;>}e8YFh_()2+Wc+6np8=8i5!CDJt7zBZf#x z^1M}92Taic({F-rX2)$XUqGb8;OZyG1$al|qJ|(KR)&8S+TRS0#U(Z)E z+{mlKX*nME9}dHK6!dIa&g|~?yVJOXM0&Fn@L_cTCNPy{sCn5C#4n!3x9dl!D#(JR zD01%hA8=M(>3;;$aKez^a3TYbEU+4Ww>qsh`=|4x9}nZZ4jJ4{osE8lcg{Egc>ZV@ zrBCb_LKdGxMrm9|XH-TZO)elqm(DpARZ@XYht+yB9y&Y$7vJ2&9nX&Y?f6_gTR%RZ loU&N%_a{LHX9q9dtUry=K0gIlhf_Akppv?qo3DO&{TK1_;GF;f literal 0 HcmV?d00001 diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsEmailProtection.imageset/Contents.json b/DuckDuckGo/Settings.xcassets/Images/SettingsEmailProtection.imageset/Contents.json new file mode 100644 index 0000000000..54cb3b67da --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Images/SettingsEmailProtection.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "EmailProtection.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsEmailProtection.imageset/EmailProtection.pdf b/DuckDuckGo/Settings.xcassets/Images/SettingsEmailProtection.imageset/EmailProtection.pdf new file mode 100644 index 0000000000000000000000000000000000000000..53e3142f14e3303f3b128f35819ac1fc0c8ad128 GIT binary patch literal 5635 zcmbW5TW=&q5{2LESLDk`uoBgIzeorPW?;1f#H`sj#Dlk|8I0O))@=~*>-i!pJF4s% zfxP_yHOEZ)X#YFJdK(KKL%@&TN5!=5njK}H6 z>4$$zchkS0t)FrUBKlEvSy*Tu-s~K*Ej4!iz+f!iwIxO_M{_&k5rV<}QY@SwanR)i zi^heEI63p&g0q2xZb0_QF%k6@R80__n61am3b{GdU~S!s&&|SG6LIK5?3PjxwM7%w z*&+u?CH9A>hu8~w&*2WwhVT(p%#HX<_Wccei*ga{$Yxid4|%kbI1s0()s_s8-rMAx zXgApABMOVHwQ5&nKgBuu;B8p3Ao6Lxg18nd){&Nryo&7{zzVF5y}d=GUIOc(tq`vw z8<0vl`cyj>t@kKzgH;Y&OWv&0Gu62@+gfC~>f}An<}=R{P}_n7tTpWn`&xH z!6WyjFo-naLmq75|F#R3oJ*bqSvd4DI-9#QLLj(7K{7H#1{%;7ZXyG z;(*B-YA=G3H9=J6u+>DFE@ubDyjL+G!jwaD?jV}WIY^Bb2pLi>&`6CXNkR3VqDI-3 z9b5CfS?3T7h08#6iPSW_sB>}Dr~+0RW-|=?>}(aJS|lSCFo)K1llNK+Sf}vNAjp+q zsaZB5jUvaSM0!stgO3`kfKXH;uREYre2L`ZyR7vT`Ty#R?3rs4ryiw9i_Rf;I@Pwo zjJ%@wCg_xKac=S!rAsRN#BrqwIB$6#spL8bso9#BV&OBzw^4AS?d5~6kO=O!9A}}E zmN%%ei{AEJGHgR_qPpE#BzmVymZ+l z>nKaK0g|9mpCae#2z+{wgx0bsm`;o~;a4y;zhK!DU+AS0P#l&PLH|HuopXqm#zHz5 z>YmgbswshRNrD)O9Ycn=Qk|oefLRjLJ2tj7AtzG~6f%pzbfjAKRE<7nCke1%mU)aL zMC#kJijuS-i7>zKy>4^~4USn9B_VxE+w<#}_6!DwWpeA`Vjg3%!KGw=?Gk%frGry!M- zo<_GCP(=SgG75_j)nmnEEJ0^2iO|Qo{=hQ_q+~nz*dT);NphCRDoWX)65kXI)TNx@ zceUS#HOE=k04jt%8MzonE>oQ>#2{%RV<{P?YcJCynC`N{hC4y{8*^r_?3m8d!QKy& zqovR}WDa&V!G~A!Wi&=UTPRZ=qKz^_uj?*Mh~pb{s1K%ahlJ$;amAw6@J9xf`B@28{jw{x;CYg!Tu)b&?wWtq@h)Rd2is@<8k|Mg_ zrY5Lg!oTi7W0M*XV28mn@!^-Gu`QS;0TX1Q8I07DbE~yY{^+io^yxyFB}>_h=N73AR^A z8C*x{*HAI16MlxsjXWcB9#e-DRVH_47c?@qpoQ{1fe}Ua%=eh!?<*!VKPC!YMAtDA z^dHEuzCnf$Vr#6DjhInofZAZVBWa`7mx*8WqfV@lh;Mkig3^)3p;l1Y=zo(PHpuW} zBW306`K3fZGqhj-eVbNa$kZg)2isUNR)>&DZTVEpfe#`E^8Q1^mL5zgQAGG1CKQuz zfMG&0Mxe!nT31AUkZJ7cM$)1OrtYY9J%;+Ah$QjwRWS)vKhdLLJhiUN)xe`Tjl)Wu zw3u{73N3xsfldh3KdRbByO%$1FnxDZVm6rGlE{7CxQx5p+%aK}8$CXvqF(4R;H(#Y zyHD@#P7i1E-S=Gl@!S39_n!}D_xk$nVE|tr-rQV&cKXeHx0UE%#p^B3`gE~$bvU1X zx!)ho20qQzF!%Cw_i(slN4ZzLfUmFb!3-af9opPJ3Z%D^yDx9v;Hr@mT$#&0FHgVl zu6xJ-GswmgUuGLia=^20xE}oF^~3e?^!D+qzug~xn5-$&a%%an$y}f%13Z3GyX0qR z#N#KUr2G`(TI3z5U*$Yr<+-?c@?yV79IGDguWycr`-yAX-M?Nz#|P)r?cqc7!Ofcw n7gBatr_+Ox19yUV-`@Oj!25n(dwu`Vk3-`N(~B3MfAhtkMd@F) literal 0 HcmV?d00001 diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsEmailProtectionContent.imageset/Contents.json b/DuckDuckGo/Settings.xcassets/Images/SettingsEmailProtectionContent.imageset/Contents.json new file mode 100644 index 0000000000..0e60922a44 --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Images/SettingsEmailProtectionContent.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Email-Protection-128.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsEmailProtectionContent.imageset/Email-Protection-128.pdf b/DuckDuckGo/Settings.xcassets/Images/SettingsEmailProtectionContent.imageset/Email-Protection-128.pdf new file mode 100644 index 0000000000000000000000000000000000000000..dd406500307d39a2b904417eb9bec08aad1b5775 GIT binary patch literal 9466 zcmeI2OK%*<5y$WIDdr-;4#4H~yBjbB#FA_TNf3p~&B%dSttAG0BqSXu`Skf!Pfv9( zDLAAK4iJO~yY-)*>Uvjo&Axd1`nwaeOVecLWxn~#U#EHg=9~HS&8PeC-`$_zAJ%_` z`oI18yzJ~EfAhGbvC9~b+>+4tYhuilOS+TTropHAPH`NQ3W9;;2 zu!V&@3ZZS!k%bV5W!_IKS>xyRAhutEMabI>mLTO84tGK#&3Ti-Zwp2CliS6riN4EK zW*`bBc*<#Zm1TI)^Y)XiqQQgmbqSVazvv^kS*h1uKe650EGm)opzX}F}D&hLb zdk`@(dRPgdchRYchQ8K=P{<{iL+m7ni(pCEiDGndA{DGH6cJnd3XZ#)mRG^d=4SAq z=k4*W#)I-D{w7AivdX=Bph~EIs(RRWe^z~6f{B~K{VG@vqXRX;)XmiK_S1kh!K#}% z?BlEZpykK$v!6arKTg-vA8QEPXN0g#n|4E8JuQL_DF9UwnrY3V62iIi7n20W7Q(rj zwFs8QP2IYP#iI|gcosyqrvf6DBdA5ClANuX+evtm=yc(6aROEqhB@wn5Q(#~n;dal zbV$tIwAn$jgyah^)T*OZ4X>Q^Q^ms?E6Sc^6C*h!b|LUq@mf(x6LbwHlAx+XqOXX^ zk|}EO5zk+09;%p#mj;Jd>D1v>xFM2Nwq;kh(i|r-;S^%pUitMMjWm?73s^!Fc zA{aSA-9pb3S848}e2J$t+bZ|!h$^AFtLkAtHM`^2s<2A|#oH<_0$0TS^yL#~BM@nEQ zEOzH?BhV;myRX|7kruISS4luRV5_ROHBmoJznaJO ze9>=tpmTlr_>mGA^h>+A5onaO5!CI9)V6uuu9z;Ak|Ih#inQvt9i!WoVco9Cs9#l? zKK+d6I;CNC8+XCs-Fn#*cdWh7GRs{ssJnN^znZ+;l|V`0MxoE0t_+6rv~G6pm_9^L zx>m`#Unt0kpe(eJv!h{HigD6kG!40d+Xhj@2M2AS+!eB2ELS6ax2vQ*8|ZctgZU9s z$tjhvaM3Dhadb`XgrE&YC(|(!r!w797|cpY-;b)0eoV(YKQv>y)0WQVfX1rDXy$0E z7QGov6;+&WKKN7+@{NF2uNSJ#qBTDO$OC$PF(Tmj_HGz{_-_stPYtaP>0u zgO}lLj+Kh#;C4Mjq1q|}8g4%dUeXi0C1qN4#pG4wvNWhn5_sAl(MBSd&Gm|HYQgV4JqDr=5c!n!OypXC2p+Rs|xe``G`K91XWG7w?co?=(sV#?; z!sQft9aQ~%k!3t{C8Cqs;-in%GMc;yURP{&Fc%Td*U)hI*s|nkXM#2d85&(p5!P@n zZimDRnaeO5#T%I>QM@d9jL2b-z+UDyDVLmrgn9}t_+=)&mym1ZC{`W3qQsb@;^D@T zQAbe5wxlfd%_)T>Gt4AlN77=Q(#T^I1GQ8*Pc{mV#Fhy}h9m&IE0Idcfr;4mLC48{ z{*2VmZaI=_R*O`fJ~PAfM!bONWYq&yGLdu-^{>NM6HbUW!S)~3JYBRyaso6#^bs9gTF(hCOBc7NY@qu6Cl4MMOZ#eWos3AeUm=+~NyOkR9poZPsvyB{)TG!Nyq9D?9!p_Q!O)|2{_IBB zs2Ck;@;W%~psGg3>6>#6AfibpjA#n#qExO3Q$~bzPpDW&>XeHedncPQ0#6su=sH*Bp$x6V9P)P)MQ_QkhUP46ex-LjY~&P^gajWfaN0SwTACC6kl|YSd(rYX{R#HQ1bG zOvy9u<2ys9w92=k=7$IsowRxbq~Rg2ZuKQFdHo1PSs$5Gg%%=FLMNt+``V%R6?Y;ekW(=8(j)P)MZE;qr zUxOGa7y4ZpiMKbo*Tlr9ugV2=OKOoyB*}pfX0ZX0&JR%`>*Cb@rhd)v#huKB6ri7Uz>JtHgI3+8Tl?Iwt5Hlnx})#u9QJltDNM z4Fef{y-swfh)k01*Y8B@K5^$r`|bHAw2=eLbRx{!`?(zxb8jqmR1BWH!&~N)jvDyk z4(BS?&gs~|PzROqPEQrl4_4^eRe3ZEeoL6~>Fqz81&5=V5zR`{@qDFE*oFL1=pA!K zJ-LxDSu(`pL%qmM)MX|m(&sTUkzg1wvM)hNtvy0(;8?p5`@>%9x6Ri1@f?_s*1`P1 zk%TZ2#^oH8_TT%6|J095jyMxOlUyYVN|LbbO9 zEKMq5MCKKb>=@lKS6LeJ6IuX$d(a&Ba=y{?S@W`n`9en`Vsdv%e&N%a1bPRJAstE= z`dIVb>hdd&_7jcm_Z;Mv_B)o$mjV5m2bLLr-tz0~>zn(#`G-HRKVmuk(?9=qm`~rH ze>gPY_lNfv=ilCZnty7~td_Z=^>-t6cDTFw>2`m(n_+%FYxG{-T;CtAIg;){ z!MEqPU^ADo3JpI>5vczd=eHN{;dK@f&gSi$S2sWLu6ZQD9mqh5L^@Cs3Gehke!kNr ze|3I;etGlZ_|;FhhaV?CA5N?M^52 Y0q*Osc+PL{t2i{retPlZ%^$w|H>V;qI{*Lx literal 0 HcmV?d00001 diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsFeedback.imageset/Contents.json b/DuckDuckGo/Settings.xcassets/Images/SettingsFeedback.imageset/Contents.json new file mode 100644 index 0000000000..e0b1e48ab8 --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Images/SettingsFeedback.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Feedback.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsFeedback.imageset/Feedback.pdf b/DuckDuckGo/Settings.xcassets/Images/SettingsFeedback.imageset/Feedback.pdf new file mode 100644 index 0000000000000000000000000000000000000000..adc3c127e328a092c4b87d4b2b2ab88a0fc4647c GIT binary patch literal 2868 zcma);OOI4H5QX>mS9pU2k#PG}Wm`f>VF*!_L?J_VD2qO#%tVQFjsMXMY zFSVsSGafQ&ggfK*6?|92yW!2S9)A75eNDd8ObWzn&LM!7^|hS(dVgVkZ9ayYN-+pp zQx?|Nq%l>&Pim#)0vN5TwhUtg#3fr(n^qPI)VWFpVAvf>q5%#hV#LMdw$~8UMKwl7 zHP-d2Ma#^z8q`N@GB;WpT@7nURX{el=7XftCn~j+jAzzYepKj8PfCxyHTKmW6aX;A z5?hLx_@NitkbNr#4@bL?P2!zH~j8m0g(M(xHXs8Dk+LbENs z0ClbGRs*@tN+TR)mqN482yj{eGW0+?XKN&zD8b@HpUGA@1I=QGadVt;$$St8V`8%C zlo1JH)@-eU0#+w2>>`eJfN|EUm0anV`qpcfL&p+q zCz*Q6dDgMB4dkG0*M_*vb}F+i>5z>gn?e#yawQ>{oV@@mX>;00D$(GM*3n$2oef3p zhDb)!jIIJ*tF2JEt{J$e$R^UXTWm0!$rQ9`B|_JNF)@hAqXX!S5taKDc5{?ga($T`!roF%jcIu*2?AXxc@ftcck#lF zZ8CQ@f>4)QrVu?O#NEIKvNTC>=E6dpCUK>2d731ID1#Q_ir`zVj35MI^_5YbZm(~q z>&qTE$Jfj0sbjC2!xJc_RL?IUXmoiQExui^H~XD?{W~uuzQu3<{x!PA%jMhgX!v=& zxm`Znd~~l5lz}yuMMB}G&s|n0PuJsa^I^Lhch25o*GG3(oArKN6VV=GC*#ZI7Mp`y zlWF!`Gt>DQxA^h)hE$zZaP3ZUt~MVy8^6eZhh^r8xtMvf0(a+tm%^`>`{n!1+s}`F z+>URC;OcOw)&4r29x#}XAG1EK-1=-{Mm{$|eRjzPRo$2lw0M?fY>% z@UC6_@EkZE?lyPhBlqz3=FtI^#r0;hcUJHO@Z#0&r;+TZ_w91KpUUCt(c!^^?|yml EAEUvDKx5yju{rc8iy?yiDS7BaHr!Xzk+be^{o8M+*WX|M>-PEd&r_He`xJ?Dw9Z>zmlQ9I z>zvk@iaJmlqG2w zX|AQ^sQm)KT1#cWkrix#q4yZe64t`tNZ4v%b37DcUuELA#^PB@A}GwoWVxe0ImeskxAL`B_2XS07hAWH$nH?lOqk8?8llGd^sUXa2IP{+-YLbHcg3Ij>xqI z#<7?cZi#TPa5Wo?ZaLx0$(rbQ)ywf2I^`tbJ8V4M+;_J{24hj znd1AxXcR6)sc&AXBdWKJNE)z>z_30`ieUIFn4}K=EP2ujods=)mQNf17nzlH0)~7i z6>GAT0AujOANrBWoSw(Y5=;3Wh)~%1fESYh*t?U)@*Sywdk44hXQG0FI0=^~U>Qut zA|ait$~%*&1)1!GHkHXKqp6+uEEInxdJz_x4k|(L*Ji}AMr8(CgSQEk>98bxmqFXOqac0jdTEgqSS#MUtn#a)Dt$4~rCWxL2tXG3 z?-fC3of^e(v*M|!syLy%l$i7r4`-g_d(;Sg8cCbz@8u+Sf~U1Kl{T+CF4E{#h7j0P zp5SxO4#mUjSTM2o*jgg>lBbNu+B43P*$R{%iRlQc*d7^t*ltfhowhk8!nBHm)MqmH zgM2O}WUA*dvZ0)L(zQz{Dl*6L^|M;uZ!|Bief9uoxBe?60lC?g0Z<;=RQ0ueJv908u zQm6Qf>U_2ar(oAGwt0=@FYq-+6jV$ZN*z)TkiKm#1mu>Xsno4EId!SDC)PBjZB52j z>Qkd9kg+cG7)GP0qL?KYh=pXY&P&U5RfKqJ6l^Aes^}IXdP~uv%UYBZg=KA0%zLU6 zPZC@Pmn}6KHyP;-He6#|D_vSb3s)3Q?F%NW!ji`=3i?Nz6tcz(dc|)^gNl6h@{mrxhDyN!^&B-6>$+Oxa{aiMbTJ0L;V8aW>CFIpI zF`?vSH^WKPWlI!CN_IorQ3*7N29R!()Lu(aPYB#}G^DE*U1;?p{8!_Y7V8NmWihh| zj0pv^!cB<@gvJs8HC~uG>Wv6IKj+5Vz)M;W+J(5a*HZ|fM$ zk+%DSjZGqsshjUCtSSreCM!@DfI`wcZGhRM1T&m95W|AmpskZ8s8)K^p^A}$X3%^I z9y%wd3@w5I3yPraj3HPC^~TCNVH9yO0)g&)Q7rrs0{V}}Y#)GIXA1+|>9)zjG}ITL znupF6`Epv@Mnn}Xg2_<)du~#y zEa)Q4y$(5^#2p-E(vj;2geC}ZZHM{Ljokt-oFl3>yU|L3aS7hl&Ni47CBo`CMtnL`AQqDt0JPf} z6?NXjpXV)g&*52gHt6|H3)WG@V^@LBmL}bEwLpD3BczIwBy@#Eck1+JL;7Rb0&Uz( zf22}K!=PbTGl<*S+PeaVHgv;jO~1tYTp{he0ciq@!RSf~^^7$p>XaCYI+SqQ(5LYh zy3F}*=Z&Q~<-IP*1xlYt4XQ8xy4G8RCgxc9drjDQ)5^qAP9i38M?%w!Nu<77(UD*s z#?BtX!7Ss|U5beHm}KVdI=hLe)oL zx&Z5V;K9`?-<6ue#!Oy+8pw$##r4Y}qgD<5w;*{1k_@YRqfihMFG1?9JCm&Ti7V>9 zI+d*Fw`X;}@~#?Xd-73~obE{#!o919?KO`$IG>$iy*RS^zGhbM`=H|__P#&WOy9Ge zvwI}SMZ79Hs?r`Ywe227<(Q|ZdSr`t!w)lgHG)A{!KRuHcg$4629C^ssKaPAuu8MfR1)z941NUa<`0zI3vhzpNOC&@vC-dT$lA?aNUWaTEJu%l?FMjE1>ten7x zi46^@JFK?!l`a_yA65cVxy@1g-)8}sI5QnLKw~*}%!!LY;Uomo-3XgSf3~EM#q&bBdkqphMtlh?yF+eA=_lxPYnOp@OBXMk&t=GwD`i_pXD6&!`i!uftPDYhxAW zQ)}jQee46D%(Sf5rKedtR;z7M2*DGP$hc3%OTA=|q3M_C1Jq_!yq(CGC>S!F)jP8I zq#_AH>d;~9t&i@E4(re`?zG0MP9JsCeHO{CNG2_?<)~xqWV9orB$#a#j0;VqYqoEZ z!wJ-+zJ82Fpka3HnP=*@=6zLoKqNP~2kpScS);fktaWW3#@CE(lUP6q z{^*)@`@qchon#pC#2={-a*>n0oeg)B!wLuOj>g|J9~=qPkh(K-0oc^@KIgDNJ#$+L z>M;6>C?M`az77+tk`&mS7uK=3!{4#7G4Em06_4)Pd~3t!hYKS_37nA>R!$eqrLlRa z4v&z?O>D(R@G-`yn+cfkFlp}r6L$HbK{VdGmO7x>3F#;adHJUqTUPe1&XZ;t$3{pH{PI8Rq^ zZ{DA~;g9EccQ@ZY{xbb=Xoc^YM2OrP*x$v|?&_Vk$`7ZhCpTxw}6k#6 literal 0 HcmV?d00001 diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsLink.imageset/Contents.json b/DuckDuckGo/Settings.xcassets/Images/SettingsLink.imageset/Contents.json new file mode 100644 index 0000000000..9657cdfbee --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Images/SettingsLink.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "Open-In-16.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "template" + } +} diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsLink.imageset/Open-In-16.pdf b/DuckDuckGo/Settings.xcassets/Images/SettingsLink.imageset/Open-In-16.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fe2816b7d903140ddf2cd93f3a053bfabe841c6d GIT binary patch literal 2183 zcmb7`%Wl*#6o&VH3U4a4i#onLk*Z2`N)ZA?nX;=`gpAt`$|NvJQQ_%1PMl-6gM`S+ z^V$A=ZuXg@>&vTC!5kria@v3WMkqZyqvz+ucbo8&$eb7NeRn@TPz7)uRt@9c*E>>N z`k&jzuisqI)lL4Z8ORSJ7@t1Mm%%BHaPDx>>Qz6+j;B-eMlch3T zW>74%0$deVS0zn|GdGJgU}#i9;WjbU#lhinB%p=52tn*G=cDOK7ZKV4dI;^}HRxr~ zS}lbRUW5Ctbkr@;7AS)V^c0(RsBE2HcG!6i)G`!f4O&FqGt#p*Lf+*hz(98&FN=aK%!ehjh;&20GB`XmaguZlIxp*r?1vfBku<)u* zp`M5om37&^P>LaCF6=XCY;PJHFx}X&I38oC>LsBpdYF$-Ib848G!`ngvN{+it*A8a!Cj<(yUj2z$kW{R5Cp2_C{sDL6RbfywbzJ=Sf1|9tDy z-ro^U9hqC{)b*@^6jQ+Q6A+bYqC=#>&Sywi1zx{E23&lON?E={aE}m;`+D2@Jqg)+ ydkNt<9{Qa>p~u_J$sCko-S;C64o?9tZnnQYSU>$`sQ2UK4pg`xM@O$eUi|^xk-lXB literal 0 HcmV?d00001 diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsNetworkProtection.imageset/Contents.json b/DuckDuckGo/Settings.xcassets/Images/SettingsNetworkProtection.imageset/Contents.json new file mode 100644 index 0000000000..bd7f47387b --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Images/SettingsNetworkProtection.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "VPN-24-Multicolor.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsNetworkProtection.imageset/VPN-24-Multicolor.pdf b/DuckDuckGo/Settings.xcassets/Images/SettingsNetworkProtection.imageset/VPN-24-Multicolor.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6bbd5ed8e5c52c3583337ee5935fa0b13e92d515 GIT binary patch literal 5466 zcmbW5OK;`I5ry~s72FJ92Qby|2VfY8XW}48f=uM>3@_w6*JA~GB$6CB{`L7zv)QDq z*(e-fK%LuNUC&e1eDnU@H(%H#Pm`U^eE-8gr+NPJ%lWIXrt{qg{W-ZKe({&{-N&b& zW)FC&RgX^(=d0W4;@$Z_*QfL4AHSa8etZ1u^f>){vWscYY_^v##@qPKEh(iO%FIhm zuGIN-JDDXWlS^P{$|jb=OU)@{J3pT8rm_IVI1rN$A-n% zT7$%Ojq2i!uO`nY&gz&AONb?gJcq^Rl9HKiS(49=b!^}QaJX${SK*aU2|yanb5Wj4Q#+2^Zz;0ta(kDc*!R z@>0ui7DvRz22-5r?gI&nOHK~eKDiVOp+44<=9?pCY;iep_KR450y<4UO+QX|)8GG( zw9CO{=hw7LB%P-u@O00=T8i_rr=5+&+iqz`uHH^*!9v_V+r_3DO_9;ED`IOwa6KS( zaj^y`>&GhVmlP7t$ETa9y!b#0%ldX?OS@>RA*)YhdWP?xBRjCHw4PL>M;3P1zD+TlbV0s zQk^9hxY9*e$TwBB_r-ehmKt_77c?eDsjUhL&$pZkrQ$71o;F184aVZ69mBf;qlMrr zf;#8L)(Tgkg$u#Qf^Rdcq;HS0w86=?;(V4_=cVic(SfjnHjY&tyVq=6>(8n9MOE2mI- zR5;~{OMGrIsw{<5^6ZpL)e+*`39E9p9;F62G7S!j-YKzmsI9`wm^#2fD(3_V5Z??5 zN7m<%Rc>O`YB`g|WP2waD4k;5q&DK}HGskUSu;^j!A8i8f-RJ>NH;CD5J#(`cUcW3L8P|eKeEfvbE?W(BCSX;xMYd3K{d*$fHU1Yt+l=m?a=hsH%Js7byyIVO6107g)B4muL20^8GnSB+$cfrRcdGmt@o%PC$0o8Y)mZXJPRD149c$|1fw~ZeqFz2A#F5QwN`4AOoqa7C zZ9gML+&G!u-@i)%5!OD*2WPvkO{+)l!CGJ(i?Lc5oZFwH94I@K2r0(HdB zZ!2+ta`r_j-p~edri>$KWpQjH0HV>F9rh`brk1EU!!4nb=?YIS(2OP zgY!hXFRT#1?J&h4k{q^0*C-KYrz|inVmdl8t5EoxWtxpf4R*scM0ISlixG>$rUjYW z%_3uiN`P?gR{7TGLBs>yD2=l=lY_%1M=3{CJ(#rVzFO2-1s{3u7=xJe>pBmMGB)!nAQzHUwCYOXkF_Ec_+@rkn+Rc=`bg{Mk<->K-gD*AWXsKpY zO&-3aAgeirDU)@BbC2pU>izCDvmWMAJB$=$h-P!hYrSKDk{b*ozj@Ie1Et%8<6&wM zqpl?#Q?rj*<+KFmV2YU>qP?IoNx>O3tAU*8k1QwEcTCRJgMnSrK*o8>s=lfTl@2#M z){bT*A~C!4rk-VN7&;7u7;c&lY*;fS4P=~mXwXA1k<2)O%ZXvo(glo`Mv4Zt&W^z+ z?NRCzYyvQlAx)aSv~plgsIqxTZ$H8KyOjfxr#VOi)4<{uvmt392P+3Q^b!}0Xm{<0 z^kLykKeQ?Ab?HgPjw>*wKtYn8=|8?-zLT zXDG2lO1`e`4&DHEqjqp4Zu?Cq9FVTZA(e;El*+HVHmcpNK^VhxqY_vRuZl{by2dFc z5f#&B=AjFf8g=Jt}hKi02b%yj|hI&9VV<0NxuIs=QsAkc#VEk74SUv`o#%`9S0B$E`0M$@_0`w+zs%nqQ?z@+a~Gq{CNNK z!|D7uCKxz{Oz0n0k*S2C;$Ke literal 0 HcmV?d00001 diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsOtherPlatforms.imageset/Contents.json b/DuckDuckGo/Settings.xcassets/Images/SettingsOtherPlatforms.imageset/Contents.json new file mode 100644 index 0000000000..aa3632f67e --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Images/SettingsOtherPlatforms.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "OtherPlatforms.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsOtherPlatforms.imageset/OtherPlatforms.pdf b/DuckDuckGo/Settings.xcassets/Images/SettingsOtherPlatforms.imageset/OtherPlatforms.pdf new file mode 100644 index 0000000000000000000000000000000000000000..78418df95de707bd97b9ee5f0ee341da6f43f02b GIT binary patch literal 1715 zcma)7O>fgc5WVlOm`kM=iOtS_uT)in77zkNNx4-Vf@|8K)`mDB;MenZu9H?4kj8;_kwX( zF>xXlA2x7g9HXcB^2dzNg=-Fg$ zcYW0i_aX;zF?cmqlA)j?yQy9!IdVz|ZDBxQ9aF2_EA;GxNi&M%Sbt@*LH$J4oa*TL~d*dF4LbY4v35(+Tr8cNqB}7iKKESGw9Gt<3T&*viAj4 z^zQ+U2_~r4fq2!fHiZ*_Vk+bH;v=f$PQgVb*O;7?qx_ZAaiud$V3W?SIfU zxczhQXuF4|+dk5=9r|yZrX47+!sQt5yzjPchm3g-?!n8|1{h(U1)6Qk4Am{Vc(uMk zsgyfd(mv05{|&zUSN#K!StRVdS)|p3mpOTK#M9Qe+AAe3tJ$t5}KcD8qo&215#5X_9hqsq^$^yKVQ|HTR z-abs5>-nGi-F*A~3w8Bs{Ixqze@~=Md6ZdSp0>C4AM233@ma}>^UzbnG)3=|KmzNS=<#G6@;IPHPhg~~Yb-L(CN=s%Fl;a`UaTsqvNMvDkkb_^M-GN@KRS>I5tuCZgyG^9Ja zSoF}|G%k*zA-m}Ym0Cq|1fDh!aSvVkZ%%=*A$fSqUfCbI{_k#m-LL@u+;l&Bq1!f5;iGY(T^z*_sETPZjv zlLrG*dNd&038aSphFP7L0?JHDj)jz;U=H&u3|N~yRtG6vz~rej%WAf0gb4i&BaH!T zjfelst0e0ym_zJ{)8HJE8Z0}|1FIyuWM$wXtu_bfk)(Q}Y$bz+Wj;&ti5M)yDGpi2 z7B-+upeTG1eLhC$V~AozO7d5NVm@cfkq2lXP8lA;VDUO*lb~cWJfu8G3rsh#Wt1>G z@uwLQ-`ilwJiNhR68w4#tQH8+1lpWq?Q^CSfed@TTlJFfxt>;)2X%^j!oO z6R;GbjEXkmokl7WSUMn{$pj%-!?5}A*u3akw>oE-%#f59OwPLA;n{K?MedN4+XY6J z2XH@mjWjUq_mdvuBFXMU8-^5E_Gm>=YpgL0g&hPdR+eBebs<^MtS-hC3nnL|p`B}W zwHk|(QT_o5pj9D%!^&d!sOTOQ#b$7hmc_nc=uE;2Ktr~JfWVf72t1Z0C5wTCSnx4{ zM#G+p_~eoFqHLg_4bqr~Fe`+^sJKaJCSgXh$u5+PCSF$)-Q9M>AlKBvE zw}->=a#pW@$3+Ft=C^rTLq~r1V_%J_FkMHlEEJ@ki9*-9#0ha`C bUfqA3;eEMYZcmpI4%RA7j~;#Z%gg@&PS*Kf literal 0 HcmV?d00001 diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsPrivacyPro.imageset/Contents.json b/DuckDuckGo/Settings.xcassets/Images/SettingsPrivacyPro.imageset/Contents.json new file mode 100644 index 0000000000..225cc1e823 --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Images/SettingsPrivacyPro.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Privacy-Pro-24-Multicolor.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsPrivacyPro.imageset/Privacy-Pro-24-Multicolor.pdf b/DuckDuckGo/Settings.xcassets/Images/SettingsPrivacyPro.imageset/Privacy-Pro-24-Multicolor.pdf new file mode 100644 index 0000000000000000000000000000000000000000..acace90392e7c87e6e30ea076d6a581cbdf5e15e GIT binary patch literal 4672 zcmeI0-HseZ5{2*UDe}e=tmNv9{7(rXfeot_AiTrgp}m+LH)haynw=gH@br8qtGc?! zMuG>RW!dG^m6`E#;zVRWd-d}3=Qh`AGUwgle?Lslee{w0_~U7R|62c@!X>`@a)1Bk z@p~5muk_aO@nL`ccG|t%|9pG1zxwB=?!`Bk|GPO(|DSC39Jy>CnSbS~C9dGWZZJT97E5W@546T*u-5K3BU` zFUg|2(P6nJpLK?BjfcA_&bg;vy|eL;NS2ol*LI!kknvE;@=z|ef*z&u;dmbAd|EEGXGr-C1CuG!a= z1+~ya%;U`1awvdhHXoZArgd+vbwTWqdjv|Du|S;OV_|8*^-{2s{dzb2lQS)4BFa)W zi@pMR))GCS7=7&WG|s*U-?6UDg`KStnZTE&I;%w2eCKHnIaSWGhFh3yEcGK2#RR6> zDog#GTF8L~iXh2Qs#f|8Xko@5W&UpZe)?{@pZ*Qy;PkraOttgV_T`_Ft|zl9($&97 z_c!S_CZ3h$l5`ub-gyru!v7PAsjpr$g%GKs=siU*&B`@q-a~o<-&V1nN(Yh7*}7wL zRGarPWONQNmS+6|1VTGY4H72`KT-G>5a&reP`VAo6Bfi2&^jzyS3g0i`j{F*a7Ga< z_KL9!Lp~dodx6>J+4Ka(BFf=AV&{fp=h=EhYFYmT%><@43E>u^ z=lSF(*hockXH2qNqBXk&CC_}C-dp!OL)*bavDf!j8xygVKrV|fK(w`>=+z-l!)|qx z;kF4{!*dC-#bC&E2DgBpcUyC4G@H|@8+2*k2HvU7=p(J>AF<*IwvuOy%0|0$^fu_` zLU%Ws|FsgByE+@K;7=={&B4r<(mQ{3Hw86S)8x5_?~cp)p_1qm^9bKt=~9F6bRKa1F1SKuYh8)Xa=e zCQ*zGO!&t@p#~cpkP**@+#rAoFb^0_Vp{c8s+ds6(4H){ifOA2sobxM1wqL_^G>bnh* zBt&>RlsDEAb-2vwj8cjv>0Xw4Cb%%>D`YX|#CtL2EdD7sWL!(hWx?~2M1*!EaZZT) z0_NbwAExKZz&GA24Mr-=m0rRKDxSa|-oKe7=9wv1AT(pXSq8npL=BV?W;mGV+B~`- zsAe`^W<*WL;zm=z6Gc`rn3I*859#K zOtJO|6*UqX{k!KF#_9^odDdJj+0gaKKhuL33dE0w0Dsla9e&m2m6I8|I^ zi%7VkRzylrA60=a9HuO(ms5gBB1yQ^VwdjN3Iz&grz)UB+Lqbv|9Hg6l|xxYU= z9^JS9 zwfF2lf?VuGN4eNZ4j#7y&yK&ie!RXrym`9xmxuj#lXrDmeAVBM*#Xu9uOE8wcyj!r zv3_WoPoZS=qIV&b?HwpWns*`n%ApV2KR#UF-t8YIe&gBw>m}j%;COhu|ImGK`})Hr mD7&k};nB(A5#Zf7x4-SNe*D&R{qQ*4K|=iW?Ad2ufBricIH-OA literal 0 HcmV?d00001 diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsPrivateSearchContent.imageset/Contents.json b/DuckDuckGo/Settings.xcassets/Images/SettingsPrivateSearchContent.imageset/Contents.json new file mode 100644 index 0000000000..36865efad0 --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Images/SettingsPrivateSearchContent.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Search-OK-128.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsPrivateSearchContent.imageset/Search-OK-128.pdf b/DuckDuckGo/Settings.xcassets/Images/SettingsPrivateSearchContent.imageset/Search-OK-128.pdf new file mode 100644 index 0000000000000000000000000000000000000000..47cdad18d1728b0ed66e4bdb9c6267d43edb2aa9 GIT binary patch literal 8977 zcmeI2U5^|`6^8HUSM*J!1ZiixKD$baED^_v5FmoXUBtyQo;XJ9UGOd_@auWr>grRy z-Y8jv6ePr4*tKt0pE}i)d` zwY2|ESJQl~vp&<}oYsTbehro(?+e%hsW5YR5Q$|f zn+$PV7;-vSqQPfZV};m@Y8YcRPP+^>R_G~CPt zGnX>QI~{gd7p%Eiz&^3L4_ba4Kc~ZYhi?xzhu^ml_8$_`EqiqKq+ zEsH9IOXDvu3XCm;OEYT~R^+B(UE~_khb&%%X!}w@WI2LbDivAprhXEhB%RJYu0de) zjWp$B5|KPPzsZre#eih)uFV0GC6q6ss5M7x8eTaWr^>@RE5@F(iBk^ALkNs2ua!c& zpldjh1Wg@^zABNGDZ1Je$;v|wlX%O{;Y~VocoS|H$tK%;Z0eI7od-J)-&swf=#!Vj z*D6?xWaGXGrkrLHu8*9Mu7{o{WTurYrdtn6xn!k|+Zy-gh$f-AtLfo%=yu1iO<~spE0GqKX4-HdYo!*@i3sn2L!YwkkD37i|5A~+>twj1&=L#8Jy*qf?- zOVm%(ujO$&U;6DssbRat`;UykPQSE^o6-7qYXoh(A+2p*w;N^)qhyE?P?0wM_G4_j zF>Kond8ps~Wc|jWUn1HubA@#z^xkJ01Zuf+OICYOgZy*SNQfPlX?t!PE{#%F0tBvj&qz4U2Gh5 z#n1$YLS0{Y(-aUrZJ~E_RkaV!J7&wI&Z=$Xl^$^eL)D%(a4CWD&32{{&_;1!`=fVg zVz#V>=2Uc&r%!02V?R1!u$18g*`YX7JT;+#(xa4^CeP#(Ytc~59g8a(FkNNf@hD}A zm9eeP>O1N&6*SjoW*VfB;)*VX6KN3XP?nk*%GlZEj@I1_4A;bbG_P~o?etJAF-Fe8 z-#q3;hR0@p=x57M`PsOcNK9!CahE9<+yn9${_V)J=7+YBqnUXfom=)b2OKRNQ>vLx z*wM3+@=BdhQeD)=W_*xI1j#a!sgoBNM9%Yc^h^-SyzvZtIlLj}r;OLob8*w$K}{59fAsqx0WiNXz)c79Hj2t1o!L+e5@7mgq4D*pozg?9cx|9U6cPv127^RUXFd6f#kliPShLf| zQXDZuBrHp000Jus#S=00IMC*WkA3a z@eDj^jZFBdBtKX5cGzM#1l+1*hs7-`2ht=8V!YU4JGlo+G*@I~++x-93{Sg$ht3Cv zgSs_$;mEcVVONt5f(Gq1K0p!*iGb0bQN?ExAc_z%nqgQaJ>6H}7L3Hz>1FPe7FD%Yh&9c3P5FBTXrBknFl|T2i79pazDlI5lvjC2ACj zld3nML1fLbtFsR(WA#Jt3`}YE5piQ-P%&tKuz^Oy7WQcDH|WFF3|V?C>X@U8Au}mq z{bU(*+HmclzE zXtFKQ#qCL^u?T?+YS0|@eSo|((%dNeItFz`P*E!1-j=_Ujmh*_mqbtAq*Us1hx|;7 z0yfi8QeN9aLAoO31VR~B>G9foY=@R^%5{;hsEsXF+eIGiQ|7DUHxq%}*HT$Xa4SLr z*G;cW^nvSp6mexYF7hbBD}723eCd|T&s3n5iz3$+LZ8-JhvL+=>OC4+6;p@bLaX!I zN`9prtui7SorRKHgdZx?DmIy+Lo{2fb~qgO;Y~^iRv5OS{a7t~y}KT^s5F;@UXM9@ z=H`(DnG|%{7%4yP;+Wn5@^s0oq%LW@& zcVJTV#^OLpI@l)gec*I4P0(Jw~Qkiu4X; zq+A$`rAIqQLqZ!zgmsRTaIuY&{T6W=2UV6fa{U zCdVuG2gpTDE9xb+Dc-XLN-P1lqBJu9muaby5!HV?ys(IUq5{H`*-JW4^+X!D!=}n=n3&-;QpaXw$;R(zkcYd z--EcmK^}c<7q=8l9S@<5gTD_kXTI| nmoIN`?fL=4rz|NQKKkgz@4omKrCQtQ literal 0 HcmV?d00001 diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsSearch.imageset/Contents.json b/DuckDuckGo/Settings.xcassets/Images/SettingsSearch.imageset/Contents.json new file mode 100644 index 0000000000..5d16df18ea --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Images/SettingsSearch.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Search.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsSearch.imageset/Search.pdf b/DuckDuckGo/Settings.xcassets/Images/SettingsSearch.imageset/Search.pdf new file mode 100644 index 0000000000000000000000000000000000000000..889e9479bdfd5c841d519bec4410b7e0078436e2 GIT binary patch literal 2315 zcmb7G%WhjY5Z&`DxG|6v2*n|1_yB?cjolPQThvv$3%XFRZyXht)JjT`=IeWSALO;% zMZ$$aojY^p&GFUk&6^iwqEe)-KK${g()#5~{pywK_jl!|a!Y*mQ@_7If6yM_x=5YQ z$9}U@tDF9xZP%~Af32_IE`N0=^|vBphokL$c~Nimn=>H6Q=pHTY%n3qUfOH3{!G3H4myn^`ui(zGC(A^iw71;N=uwvs2~&$HfM9 zs%bQIajSkeY+?6%`}h;+oK>mm$T*l0`kn%rSXAs(6m*3`3q$ z=2jJJTwoU;AwEYAP9xaa0X8r$IchduVhXIINkxiuGMvk4NT-qs9(H2Gl8HeijEK)E zLk|R&Q;|s#ZoytOIoZGgAH}iFq=QKzI+?_aJt=J$z%&pPq*D&=MJv8xwZg&pU>VI> z5pSHg5jj}&fiu=yhi{&oRj0(@Aa(O9r zL=ML|9Xt=hsOSz2pOPgcyMZ+>bQ~o?Y%NqGgIvepm$3#D$hj=Kk(ub7%_Z%#%^5)t zV5DIYv~C750};hbg+eI$fGnXgtZ)=`2u7G#V3JUxK-pz@jy>IzH|1f3GJBGNZBixUtQT84gv2;bE|u3RO3uQ?l>obF zI6)7(D1k8ru{>tpv(8Wuv33D1)7b=D-pLylPhJ+~X(_E`Ed7JR3`aN4GNv;qhB+k! z!zfmem^E^FS)>LbK9qz)6jY)LwkHVDPkak((Hjj#_>74IO(o>H{c0!`=~VTvVl{|H zRl{1CtRqzR*0hx74OW)bxY-aA*Tu#a#=={DyWbzqC;jesEI^#qZ~y+)>(%Y%zMp`f z`@8Mt_2H9#*9M{vi-W)8^tIc}wC+!bkH@Y*>9S(i6W#S;fA06NSoZ4--foV-v`o-q z3m2$v=hctfJGiP#1ZzFpxjuY^EQ_PD2JAj6LAAlhs)`cK3tZ4HPAjkv7rB`%zNrmJFatwd>{HkZB zd0I=$v0*17gw;&3ySlonx{iPIlb27QKhj-n8r`aP_4=EpZ9o6Ko&0IOyxG2K4a8TF z_)K0+mpAkFZ>{Q7`Lud`xPj?-E^@$%Vr$%{C+vxE>_FGeEW9ZI_5oo+-$b% z`Sh;&u4Q>+tT(xxzni_`&1oHjAK$W##t(1T_iuN?-fY|N`ay43Z_hj&4Bp(o-p#zb zzuhf5y}s@zKQw+2>*Dc);C1}>?c(cJ7O7f(Xa|=ortlUueBaEM*Mn+#67x4=^4<@u z4f1`V+DhH?4)<&Hjue$oY4iu{yvp^>^p0CR=fHpu>Gojo8SfYtt=4;J{2;aCc9m`d-a9tNZnAzA4fB<#fB9ub2I^F8_Tw z-L4nHm$^2l=n-XPH$3Rp6HZf1&bE&NUnZ+e`$)&mYNb_bhs8=dc;BDN)tl+{VtG>* zezIDvuQz2wzE_j#>O&zYB&n3+hfCMomuK>1b-P+$y`9eH?d0kFUyIrN#d`W}pMmxV zKKMKtb5ScUK4iiNXYCJ|JnY!}!ykMebz737{g5p^d$%R3W039oe%}B2(Ml#GKPYJ# zFd1C2h-)sLR7Q_eFPZfCF-3yZ3H_p1_pi57JWQUi)^`JKsA$s8j*}Pb6$w_(T)$v> zKVEKf#n^ueGNSQURbH*h*1PvLbI}@GtsWq$`B|KEgeCKt_LAA36*-SRpw3T+- zc=(5yM2Kv>2?h~W$XO|PW#y7`ZHBwH-tH)~22s71t?Y=}cg9-FE@7%|%(i9YO3RkY zKB6-QG0te?wt3TxF4m&z$xGdCX3OU5-!;qTOkE_7(}!-Sc6Cv%)V<87iD+Z6cu(0p z#_oqBL=8j5kIt0Dzk$?OlyaK;^kLueGbg`CCU?pO?WuCdbF@2AkAkFf3Pz5S>8!;$ zRqHrN+ISuRuhXCS`N#A(=DabkkMBSD{}^D(x&1YyKfT}4|Ig${$buGKixT)cYm z#c|bmHX_tC-b&KDES&!I{$W&6i9wfj43iJ*5#AFPFARi3AwIa#d8M9PMT$2mz-pKK zGbQ>_m%lN0lSBH^-A>Qs2f5qme{x7(Ty3Y@dGUs4eYm^&a=Q6PA@n_;yq@>tBXK4# zTET%XG!s4NpYHD#%hhJFJ!wggIP*HneEJQPK?`*|KP2vXCX;9V(fcVIFHOL2Yv)B7 z{22jqy+cO#JHY}QowoaAjJX7>CJSM63Ls>0K zO|5MQEdqQ6t|YVOnn^oa0PZ6*g*|YT5}3?)A%mv{&@Psy?U1Ro3O=cNud~tX(&JPTpqVwH=Qj`yoeC?LaRWEgIc0*+r9tUett3Q={SuC@Wf+Gj z?A&Ld#2pdRAo6aBO2QgdluArJ(YJ-)Fgf-6K&5qw)awOPR#7UcAa{Zv0%}$w$0^X( zaD%bqwnr+W&;knRH;i*w%37>Zdavk$!wgsrQza!<1KPCNVQ>r9LkA}Yik4ncnlEE% z^n@Rfr%4QjDD9&yFr}mWO9ijwR$6?<;*Mov7N|8b(F3+}m13CZ>FDUuEWI7q*2Tpz zPU#t~Q`RfQ!sRmNVnLA1go)|xa2+r{Kr7rV!3p`aHaL(R5@rf~n*}iyK?Tv0j+o?w zqkClp%0-2qQ^G?`8lK#_qvvYBr0qY-Va+Z8&L(*8j(ugqfiBM9&4gzKj6nxy``Xa*~ zEhvx?88vVss9~WjQEOPQQp6`JuVK_JG?SAf3f6H|{hT@BPRFt1Rb&u9sWjY5o98+Oq~|Sl}d)%X066(eV&|Z@@8TTijG|sz@h+ zn-UIm@hDIxCQ7X5mkAh|;*3)jaWkN(9AL}>Q8~|&k~=iti8!1+@|{eT6qGd^X9H0u z3G5NSEQclFm!8cFDSL;bAQ1;Y^{YZ;W(i=CsKBL&7y(&qOyD9XE$C+R? z#WULvHlo84F~GRWUM)91ghK)B1SmstGzWB+BI$z7M8czJ`1q*qLd2Py94$q84`p#T zwY!EVyN+}z;eWqeuC`oUkJmJPKlgHaGw&Ou$(Qr%#q_6L)))9}XnX*cmfXy;Wa%YF z>PxwH++vlXIo$6#gw}6F1pecq+_RT$yc%yS;Ce692bp)9*g)CmwY%REUb0OD85iAk ziBG26>Fw&~aPqtL{ObmP%}pOaung%9cv`qwE>AX* zK=fhdee3#uRjz&X^7)G^vOElAoH_jZ+hEL>Uz(>+hiQK+zYhKq-+Vvq-=5!@0Psd` zozBN;dp~TRPk-Kx)6F-}%=N3w-^SDM$3WJ#&$#t)r6>Jcv7F?Vsq109ADk_jb7V+9 zJe|Z(`~Fp>8`AZ^uy}$ifLG? zNf9+T_TbgC#@8?YCt+)$7?b&T!b%dO4^f6i3|xb`N6#gyTnSiC%!HX@spgV`5sy=0 znN?hT4PFpWF$5z$7jkvv1jDI1nT6h!DCA~}E@94!0$)9l;2Z^loD9m~Vaa%OicdwZ zQ3$T0@D{n}h{0_!<|35CN=zA-#b8OqJ{V|7H3w9QY^dxj8w`A03oziVt2t3ISKdA@k3c*|EK<@0{-7=xVJM?_NH=N^Hpoq| zrLu5JC_*t~9sw(r@!-x}s!$}-h_G@ZYNP{+Tr>o3#0ZnZ&FrE>X8}XAfm*`hz$pov z0G1pJIs#PZ>K&d542VFC`l3iBNdMqgt;vP@q&5Qz2W|sG(nrbXEdA|Wl*!_4;Nl!IiXP7Fa1qr2ziR@9!4r|$ zrAC+$=v6`4Lk8hOresijsRw*T(F+nU!d}wN=w5mJ$WcP302ZnRQ5FoKAOlFsi`pYq zjN0eq{S4v0h-RBhMamb@p?nD}pe*e!+PF4|Vok9@2}94xKmw z{V=p}h!}Jjby6>8uudk#$3tJ<vq;dyHYL7gtmQDH38o3Hl!!}(-h z|AOTj-{$APexJ=Fa7}^#IElE literal 0 HcmV?d00001 diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsWebTrackingProtection.imageset/Contents.json b/DuckDuckGo/Settings.xcassets/Images/SettingsWebTrackingProtection.imageset/Contents.json new file mode 100644 index 0000000000..2af357f7a2 --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Images/SettingsWebTrackingProtection.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "WebTrackingProtection.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsWebTrackingProtection.imageset/WebTrackingProtection.pdf b/DuckDuckGo/Settings.xcassets/Images/SettingsWebTrackingProtection.imageset/WebTrackingProtection.pdf new file mode 100644 index 0000000000000000000000000000000000000000..38c42229593e18d9755400ec84c16b49f76685bb GIT binary patch literal 6040 zcmeI0O>gAJ5r*&l6@6L2KA7t755O=G@7h6-1lh>B896Ak<6Rk&CXwX8$*<4zHaVQp zkc#2E=deq?WLH;JSG`qTZ{ENA_6s+bVQ|Kp!#{o;jQR3Q^VL_w{^5iE9Q-+c^{4&A z$LCKb0AA~>r{~B0&HZroZvXGw-TwObUz@kzo&U9a8vZr7(e|IQ$A>SLr{$gV$CrN0 zIa`;_?tZXi@+~@)7-Mjuu<=-0wxyb<-2<=BB?q64miSt8u+whB5K@XyO-N2PVd_{z z%1sZhpxA25-_>ZE49GKNeSPs;01C2{oBGYL%_X zs+dqxEGCbwg@F7v22^l~2fiuR3kfc#U|bwah%RFA0O+elRhLGWQVx;toXZ|FfKo~h zsdX&LmY4)p--?(1bwmlDqj7n3HU?`^tyx!V736)f)d5A+sBFMjIY%E^nlU|R$I^tp z-q#>wYE0SbI~yt{16kH)6wat_Yb`7dBfhc??eds;YYU$7Hna>>@UBahr_tk$z(d8X zT1sQ7l_$KmsADWh(MiSXlP`i$E=8Tte8e5fsMnWXp8MVKY4~Ay82(DU5zzDNQ=FZi zmY1(ZT&bw9h~vOwQyg)G{Cvuv=#=17n@?K!`#xm~cszsZZN^a{o zufIDt@=Uw5T%@#due7)Gr5wqng>wp&Q&$q2XMK2&zhn0Re!) z`q(PfYX)K68O(rN>*XaEMju^J{ira0h%q1+)ViQD2bl-LD@gDWrHZ^nR}#8pDuZ(r zSAAWRb=FC8<}hOw{Zl3=c~oO0zlN?PbjcKsRzpB?rawSyFUe&rv4)H@Kz(RYrTi6i zL&B_cq^x>R1urg8o+OxR8!3Be~z^g zSxaEi*-2GA9EsB&SJ}Ze(sdJDEtk|pB7_urUqbLZnD`zrVs^p=`n{Ib58b^6u9izG zNo8}yaY|bs3$5V&bSQ=R1oU)@{h<3v_3my4r{h~K?;Z%~ML>~>G=;H{UUC5~bV+U6 z4A;koiyX}$-oUIzmqlyG6LpIy4$VNfAvGT@&DCqPA+HhvYy=^Ab&H4$EbIQ~P%X{# zks8hkgWh^W&8~hPlT(`|skGYOb<*JkT#UXO#eWUA&?I|EkFv&>u?2cV?X@z#@6{>m zf}H4HEAl%jw369W-LB6y%l-7}kS6Byw4x;44AYMMBxaa9;Jn`@Po-v@2oc{_m5g$pXWa+_B$wX+6O5Ui3 zQ_M8ZcV+4hQ!lrkXqe;+a~N>jgIKvTDwun)c!~p1a#^IPk{CUn=-t)^1B(FZ+9KC6 zaSB&jnu+^?{L^)aa3TLHmq`VL$IW!4g7lq~Zk2rKOUY-KbX(gbUlv0~3NYm!@#pY4 zwK~A8g5XNZ;|A^Sw)9hMaJ9v5I^a%bkdc}J61S0MJq08D0Ra%GblieSoRaCpfmRl4 zn+?iGUJBe`l?2?*X_yFuM6)4?T3nK+g7?sR$?Ll<{U)^)n!5A${d#T0@1;)R3VjC} zrm6LXbZHfv1`lS=5H1YM!p_~R#sRud+^Ln*A2@mQc`AvA>4&nqC*4#i)X>c7Uo+%cL&-gBLi6TblGT)cZR|YiS(6DR1&TACs zGMT9s(+Lr!eQ1Iq@F$0s;7FKXBetR*Lnods6?>u{CUXRbJXoy_oJnu}$jt6(ra>CF zZMB2C=&jgHSF*y1O--iy9L|<8A01cg6RT3Q#!1)*bS(M!OY<+?!pd&2cExt=J zY6yvbE>xAo4I0zZ72(NW(I*nOVXl(%cb9uCh>=KH@h zjpcXsxBvWeZ?4|oeB95#pZ6bbZ@xbKY`(|F<(5A`cxqSwnbXrz()Ir7@YCaN|77rv zxt_(nJv=<`AJ|dD-Xr+_<`K+rdGFBKNLbJ^D!%&T?FUpfvf$br_j!BxiM4K}{}afW zBqn}ml4Ri1vf;__w>Qr>cZZKJm;U^?|6w32hRIg_YqGf60M9>qtNvt|6wf~fsxKiZ zkr>r)`HCScj(7=Wi0A^M!(O20$D7-`{o}yw{OS+yaK~p)hx`5K=Cj)mpHEJ?x;`A9 hjSTJ%zWVO=zk9UrGxVFs=Wb4_t`2YBeDjxY{|A>>xi$a* literal 0 HcmV?d00001 diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsWebTrackingProtectionContent.imageset/Contents.json b/DuckDuckGo/Settings.xcassets/Images/SettingsWebTrackingProtectionContent.imageset/Contents.json new file mode 100644 index 0000000000..01e73b0615 --- /dev/null +++ b/DuckDuckGo/Settings.xcassets/Images/SettingsWebTrackingProtectionContent.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Shield-Check-128.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/DuckDuckGo/Settings.xcassets/Images/SettingsWebTrackingProtectionContent.imageset/Shield-Check-128.pdf b/DuckDuckGo/Settings.xcassets/Images/SettingsWebTrackingProtectionContent.imageset/Shield-Check-128.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1cffcd673356d86245ffa448c83b4b6574f46874 GIT binary patch literal 10216 zcmeI2U27%B5r*&QSImvUzR=P1cQ=@Yc)d0u331lBGr3UC9iT@Es^@(2&6i(Ym_wQ-GcWV)pZ_w=^XH$>m#==h|N7hetNT;? zzfk{kyqcGTUGz7ylYOA~Z%;RG?|+yb z#MfGNcmLsZ^?thi^7Qw2$J6VtznEWsyZ^uA-SoHV@|Bt2-c8uC+Gd$Amh-3a(ipeC z4ehDe`S^ZX4#DXU8$W)yJKjv`;F9s)&Hj*ejG5n0;gD?(DbL|xivH$nXu;bYJv1BG zVf%wEJm^&jeR+;Nh(Rp#acXRhpW8t!zlIiJZ!@$6E4OgC6N@zGRR_O549anGhgdDK zt#VZun8FE}a++Ng85zcT$H`XJkYUJm4J~QC*`&7zk77>JcMa{qh^tiXb~s|rC|&br zuWM*lv;<9xnSiak%Z6e*N`EC@{c$J;Cm4_iO);!I&TER{3+dD4YKq}A>C>feiXq_8 zu)Xpgid>8x8UySun@Tn8)egcS*U%hlCmk-ulEjH}x`JpZ)*l8%zV?;4U)8PL6f zA;UQDNNjZ(hFpp_IRVcO=|=<(4M&^~I~=!o9`?G1rZ7YLrdSU90P2d3FdKn)oOZOX zSPe6We|!xetbCq7$LWXZ`{`!-Lrr1(j1;zMwQgunPs(5e1YjysGc^=d3g;?cOiGM3 zg>!Xl5iKiBU3-YdV-I;ei=ySJK#}K2YME5vY|Y$HB9dg&h1bQ2SWOt_cnD$=XJc1A z;`*?W= zQVdKOVKL5AsPym|aw$@}Z-?|F5Ql~%T!$TwQ};V@Jq&g&qN1%5rJ7B59hB20~Mq$@{npQ9|Di%gYpm|!;=kchpBA?>L=NE z;P^OS_AQTWK3<-`8Vq*!rCnSZbWWoY9Loo#w#{w%ppA#YX;20O73pE$e#}@t1Rl!= zWpCeMvhnsKk?ZJIntY}lmJ%&P471?ad;XwVFi_i>1*q)=epy^%1bjca!f4?Q&l}Z^ zl_t_g70=wT(Z*)%G#26p1+D|lEDb=ily9=ZI-e*v_@ACgM|ZV2?VLnhpA$Fr8NW>M zUfoW&GIq#IipaimbuctT(a;~#PcXBzbD`EvqPA0tqg^WW8`ThuMP-!{Lsj!;)-r5& z$ydJV0d*5$zt%CtU<`V2_R~$36lYrw#u0_gn+!D8INHI@{KKQKVpt&dx8+?`jSIge{}IevQ(_$GU5E8<|xT!iZ_Ht zrf20Z=*9-sT=00p(RrIic^2?*#Im$5<&Yww#f45HSba`R5c%LE-qC$Rr4oX4+8M+7 z1@6$;QyB0(`A=SD!jdjIXHFL_7aJp}G6f9_G|!lwDZ@FRIVTX_$eBb7F-OPcizcBM z3l}T|a)7(07Cqa@;MjOBi{_npNO+pIoVSZvirzB2+r=BCAeQ5jSVtHkM_wYyL&_MN z91|M}2XG;>PBg(S*~==CwzgEgNaqDxup8_}*-$mhaUo=8yyBt|LH4stFbZIEAQ&j9 zjRtgi?M5^7!Bcf5X+w4(4~CYMj6E^Czy(IZDqe4)xr|XGy9q#Ra%5aXN@C4{(1ex2 zln#!Tn-}9VGdI5TDPU>z1`-P4$t)9*(t>Q&LS!!COEyLeR+(zaoU&OMiLsuSCefFXDpoD=`w^5D_&8 zb>3R(afNs$6yAs+1Wth%LR3{F9sr8P=mIeiFPOg)i{&5Pr7pz*Pl_-=s=%m{NJo(h z$>hY3t%a+q8l665mBe~-{{21#pyyg z8bC&yL8P{U2T_Q>5&2eN4Ph>R&e_Phbf8LEQWBqoC4?fuiE%&!_~HH(9C@k=5e&-X zD$fjWb!lV0(IqW6YAIPxn*oiSaik)G1W2`Js1YFSYRMN7-3T#Vm85Detpr?n77^w$ zY$XzSH=nD zcqILRLhyu;RA_=6Jffy9QhiitI(bQVz{*^oqcj55O)wdW5z04!4&1d-gt9ISY2}1S z=tZ|k^HlF#fM?7qlq;~NxgnVo9S?~serUlhr2%VgP-%vii?B`lA}Uvq5uO}K_Tg<* z#|X^iLR~|$s&RrNcacORO#&59ZfI^sG#QgV#dsknAwuWrFg|?{rlxbP=w6oSOr~be7-y^`L4g0Nx5KEaOI~4DxEU0c=ETTH#I!N=nTCEHPQnjDwo*97U6xueG2n`5qL9co?sjpbaPvkUk zS*0`)PP={wZIZ(~DlvXf-QMS-8A$>B#6-BXXjH;g4$2_rZ&N;J@J}C08L5;*{|k-b`CIFY4w9b z@`M*BZM*5NBCuFn3ox43#1f+*nMf`Rq{$)vh-0Xc{q)n|mIq(yGgcbhLA99GE%x2@ zn;NaPqpMPbLx)Ir1Vw0)qUyvr94(yH-S3DSJU2hIiaHz~-yMj@T) zP{D-yX;AwR8JwkD*81CJRheGEBJjF?6Ou+jRf$@uJZWlUfllI}W*tDZ?WForCpO;< z&ptbMX*AY6R61ZF1gH~L{jx319zQ61HOpaFz*v)&(49LE+B)i=KD2ZiQz8WttJIGX z6doQN5e#(G0mXo+s<-OsVWHve{-IFA2!(=((s%N0A1>03h>(wYwNUu=Rfe8G^A0gc ziyGB{t>dunHRv`eF%L*I>-=pykCU1LrU))LYB!xR@kZhUN+E^x!ME>Za#BP}4j`W@ zt^se=i7tl7C5ELiU9mJ*KbBPvhIQyYij1&P0I@T>{zo1q5thZ1hd=L8723e)Fkf)d z#J6qAUj2mPC@6VHyyiO>vlZR_jz}KVKaptI10BFdVi+iNkt%f?5!kUIgJNXN$_^S4 z#Du5zxu3hyWaw4IjVhN%jwD7dHY!~jQ#_r9X#Jdxwi9S04#78m!w}oSgY<0l{x=hi zfTMVlR2KqJ#%Y?O`umhjTLWl7mA5dsI;o^-Kr{;k1)!FS0d}=@ouK%h;l5Q9I3Tj66&KuR>7MNaLck95fP;kPDK0w|i$f6{f|}lwH>}=OP0Hx}Y{G z%qbH}^o_`Eq7>QfAC}*|uHP*6A0(~6USdoC)fUtEGJezqpzMCk^{bnk+xxruyFay` zY+e5GAAdc~m)~5yJ$1tGPH)~_eR2EK{2dZJ?vN-yE3J(FX=U~Lba(sXhvVsP2H57; zo!`sboBPuZM-m}}_|4S^XfthACGCEKCDQiOv){aXgRHYucs;M@yuAI9z2;1TJ19F& zfaQ*pG`t%J@?*8G`OB;OtLxjh54ZmG;q?8)$MUJ^uYb?fY~mPl|6_WqPxH-6BF`U@ zxF0}t{f$+09!$RvNn9^ICg~b`U3LHA>fQC}!=&Hh{rXGH@#)>|`_pIhr|;f;){Jub m`u6sImcrHQm*2ko=LzZSZ`Q6p+*ftD@AlItpS=40SN{StsL|d4 literal 0 HcmV?d00001 diff --git a/DuckDuckGo/SettingsAboutView.swift b/DuckDuckGo/SettingsAboutViewOld.swift similarity index 95% rename from DuckDuckGo/SettingsAboutView.swift rename to DuckDuckGo/SettingsAboutViewOld.swift index c0fd44206d..9415bb048a 100644 --- a/DuckDuckGo/SettingsAboutView.swift +++ b/DuckDuckGo/SettingsAboutViewOld.swift @@ -1,5 +1,5 @@ // -// SettingsAboutView.swift +// SettingsAboutViewOld.swift // DuckDuckGo // // Copyright © 2023 DuckDuckGo. All rights reserved. @@ -20,8 +20,8 @@ import SwiftUI import UIKit -struct SettingsAboutView: View { - +struct SettingsAboutViewOld: View { + @EnvironmentObject var viewModel: SettingsViewModel var body: some View { diff --git a/DuckDuckGo/SettingsAccessibilityView.swift b/DuckDuckGo/SettingsAccessibilityView.swift new file mode 100644 index 0000000000..f701baeb76 --- /dev/null +++ b/DuckDuckGo/SettingsAccessibilityView.swift @@ -0,0 +1,70 @@ +// +// SettingsAccessibilityView.swift +// DuckDuckGo +// +// Copyright © 2017 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 Core +import SwiftUI +import DesignResourcesKit + +struct SettingsAccessibilityView: View { + + @EnvironmentObject var viewModel: SettingsViewModel + @State var shouldShowNoMicrophonePermissionAlert = false + + var body: some View { + List { + Section { + // Text Size + if viewModel.state.textSize.enabled { + SettingsCellView(label: UserText.settingsText, + action: { viewModel.presentLegacyView(.textSize) }, + accesory: .rightDetail("\(viewModel.state.textSize.size)%"), + disclosureIndicator: true, + isButton: true) + } + } + + Section(footer: Text(UserText.voiceSearchFooter)) { + // Private Voice Search + if viewModel.state.speechRecognitionAvailable { + SettingsCellView(label: UserText.settingsVoiceSearch, + accesory: .toggle(isOn: viewModel.voiceSearchEnabledAccessibilityBinding)) + } + } + .alert(isPresented: $shouldShowNoMicrophonePermissionAlert) { + Alert(title: Text(UserText.noVoicePermissionAlertTitle), + message: Text(UserText.noVoicePermissionAlertMessage), + dismissButton: .default(Text(UserText.noVoicePermissionAlertOKbutton), + action: { + viewModel.shouldShowNoMicrophonePermissionAlert = false + }) + ) + } + .onChange(of: viewModel.shouldShowNoMicrophonePermissionAlert) { value in + shouldShowNoMicrophonePermissionAlert = value + } + } + .applySettingsListModifiers(title: UserText.accessibility, + displayMode: .inline, + viewModel: viewModel) + .onForwardNavigationAppear { + Pixel.fire(pixel: .settingsAccessibilityOpen, + withAdditionalParameters: PixelExperiment.parameters) + } + } +} diff --git a/DuckDuckGo/SettingsAppearanceView.swift b/DuckDuckGo/SettingsAppearanceView.swift new file mode 100644 index 0000000000..cde7ee9818 --- /dev/null +++ b/DuckDuckGo/SettingsAppearanceView.swift @@ -0,0 +1,66 @@ +// +// SettingsAppearanceView.swift +// DuckDuckGo +// +// Copyright © 2017 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 Core +import SwiftUI +import DesignResourcesKit + +struct SettingsAppearanceView: View { + + @EnvironmentObject var viewModel: SettingsViewModel + + var body: some View { + List { + Section { + // App Icon + let image = Image(uiImage: viewModel.state.appIcon.smallImage ?? UIImage()) + SettingsCellView(label: UserText.settingsIcon, + action: { viewModel.presentLegacyView(.appIcon ) }, + accesory: .image(image), + disclosureIndicator: true, + isButton: true) + + // Theme + SettingsPickerCellView(label: UserText.settingsTheme, + options: ThemeName.allCases, + selectedOption: viewModel.themeBinding) + } + + if viewModel.state.addressbar.enabled { + Section(header: Text(UserText.addressBar)) { + // Address Bar Position + SettingsPickerCellView(label: UserText.settingsAddressBar, + options: AddressBarPosition.allCases, + selectedOption: viewModel.addressBarPositionBinding) + + // Show Full Site Address + SettingsCellView(label: UserText.settingsFullURL, + accesory: .toggle(isOn: viewModel.addressBarShowsFullURL)) + } + } + } + .applySettingsListModifiers(title: UserText.settingsAppearanceSection, + displayMode: .inline, + viewModel: viewModel) + .onForwardNavigationAppear { + Pixel.fire(pixel: .settingsAppearanceOpen, + withAdditionalParameters: PixelExperiment.parameters) + } + } +} diff --git a/DuckDuckGo/SettingsAppeareanceView.swift b/DuckDuckGo/SettingsAppeareanceViewOld.swift similarity index 96% rename from DuckDuckGo/SettingsAppeareanceView.swift rename to DuckDuckGo/SettingsAppeareanceViewOld.swift index 45d70e7f3e..b9fa9d8ec6 100644 --- a/DuckDuckGo/SettingsAppeareanceView.swift +++ b/DuckDuckGo/SettingsAppeareanceViewOld.swift @@ -1,5 +1,5 @@ // -// SettingsAppeareanceView.swift +// SettingsAppeareanceViewOld.swift // DuckDuckGo // // Copyright © 2023 DuckDuckGo. All rights reserved. @@ -20,8 +20,8 @@ import SwiftUI import UIKit -struct SettingsAppeareanceView: View { - +struct SettingsAppeareanceViewOld: View { + @EnvironmentObject var viewModel: SettingsViewModel var body: some View { diff --git a/DuckDuckGo/SettingsCell.swift b/DuckDuckGo/SettingsCell.swift index c556659215..31937a2315 100644 --- a/DuckDuckGo/SettingsCell.swift +++ b/DuckDuckGo/SettingsCell.swift @@ -26,6 +26,11 @@ struct SettingsCellComponents { .font(Font.system(.footnote).weight(.bold)) .foregroundColor(Color(UIColor.tertiaryLabel)) } + static var link: some View { + Image("SettingsLink") + .font(Font.system(.footnote).weight(.bold)) + .foregroundColor(Color(UIColor.tertiaryLabel)) + } } /// Encapsulates a View representing a Cell with different configurations @@ -45,7 +50,9 @@ struct SettingsCellView: View, Identifiable { var action: () -> Void = {} var enabled: Bool = true var accesory: Accessory + var statusIndicator: StatusIndicatorView? var disclosureIndicator: Bool + var webLinkIndicator: Bool var id: UUID = UUID() var isButton: Bool @@ -60,15 +67,18 @@ struct SettingsCellView: View, Identifiable { /// - accesory: The type of cell to display. Excludes the custom cell type. /// - enabled: A Boolean value that determines whether the cell is enabled. /// - disclosureIndicator: Forces Adds a disclosure indicator on the right (chevron) + /// - webLinkIndicator: Adds a link indicator on the right /// - isButton: Disables the tap actions on the cell if true - init(label: String, subtitle: String? = nil, image: Image? = nil, action: @escaping () -> Void = {}, accesory: Accessory = .none, enabled: Bool = true, disclosureIndicator: Bool = false, isButton: Bool = false) { + init(label: String, subtitle: String? = nil, image: Image? = nil, action: @escaping () -> Void = {}, accesory: Accessory = .none, enabled: Bool = true, statusIndicator: StatusIndicatorView? = nil, disclosureIndicator: Bool = false, webLinkIndicator: Bool = false, isButton: Bool = false) { self.label = label self.subtitle = subtitle self.image = image self.action = action self.enabled = enabled self.accesory = accesory + self.statusIndicator = statusIndicator self.disclosureIndicator = disclosureIndicator + self.webLinkIndicator = webLinkIndicator self.isButton = isButton } @@ -86,6 +96,7 @@ struct SettingsCellView: View, Identifiable { self.enabled = enabled self.accesory = .custom(customView()) self.disclosureIndicator = false + self.webLinkIndicator = false self.isButton = false } @@ -138,9 +149,15 @@ struct SettingsCellView: View, Identifiable { accesoryView() + if let statusIndicator { + statusIndicator.fixedSize() + } if disclosureIndicator { SettingsCellComponents.chevron } + if webLinkIndicator { + SettingsCellComponents.link + } }.padding(EdgeInsets(top: 2, leading: 0, bottom: 2, trailing: 0)) }.contentShape(Rectangle()) } diff --git a/DuckDuckGo/SettingsDataClearingView.swift b/DuckDuckGo/SettingsDataClearingView.swift new file mode 100644 index 0000000000..ea9dbbf7be --- /dev/null +++ b/DuckDuckGo/SettingsDataClearingView.swift @@ -0,0 +1,62 @@ +// +// SettingsDataClearingView.swift +// DuckDuckGo +// +// Copyright © 2017 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 Core +import SwiftUI +import DesignResourcesKit + +struct SettingsDataClearingView: View { + + @EnvironmentObject var viewModel: SettingsViewModel + + var body: some View { + List { + Section { + // Fire Button Animation + SettingsPickerCellView(label: UserText.settingsFirebutton, + options: FireButtonAnimationType.allCases, + selectedOption: viewModel.fireButtonAnimationBinding) + } + + Section { + // Fireproof Sites + SettingsCellView(label: UserText.settingsFireproofSites, + action: { viewModel.presentLegacyView(.fireproofSites) }, + disclosureIndicator: true, + isButton: true) + + // Automatically Clear Data + SettingsCellView(label: UserText.settingsClearData, + action: { viewModel.presentLegacyView(.autoclearData) }, + accesory: .rightDetail(viewModel.state.autoclearDataEnabled + ? UserText.autoClearAccessoryOn + : UserText.autoClearAccessoryOff), + disclosureIndicator: true, + isButton: true) + } + } + .applySettingsListModifiers(title: UserText.dataClearing, + displayMode: .inline, + viewModel: viewModel) + .onForwardNavigationAppear { + Pixel.fire(pixel: .settingsDataClearingOpen, + withAdditionalParameters: PixelExperiment.parameters) + } + } +} diff --git a/DuckDuckGo/SettingsGeneralView.swift b/DuckDuckGo/SettingsGeneralView.swift index 4a7ec0de32..1f5bc535b2 100644 --- a/DuckDuckGo/SettingsGeneralView.swift +++ b/DuckDuckGo/SettingsGeneralView.swift @@ -2,7 +2,7 @@ // SettingsGeneralView.swift // DuckDuckGo // -// Copyright © 2023 DuckDuckGo. All rights reserved. +// Copyright © 2017 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. @@ -17,29 +17,74 @@ // limitations under the License. // +import Core import SwiftUI -import UIKit +import DesignResourcesKit struct SettingsGeneralView: View { - + @EnvironmentObject var viewModel: SettingsViewModel - + @State var shouldShowNoMicrophonePermissionAlert = false + var body: some View { - Section { - SettingsCellView(label: UserText.settingsSetDefault, - action: { viewModel.setAsDefaultBrowser() }, - isButton: true) - - SettingsCellView(label: UserText.settingsAddToDock, - action: { viewModel.presentLegacyView(.addToDock) }, - isButton: true) - - NavigationLink(destination: WidgetEducationView()) { - SettingsCellView(label: UserText.settingsAddWidget) + List { + // Application Lock + Section(footer: Text(UserText.settingsAutoLockDescription)) { + SettingsCellView(label: UserText.settingsAutolock, + accesory: .toggle(isOn: viewModel.applicationLockBinding)) + } - } + Section(header: Text(UserText.privateSearch), + footer: Text(UserText.settingsAutocompleteSubtitle)) { + // Autocomplete Suggestions + SettingsCellView(label: UserText.settingsAutocomplete, + accesory: .toggle(isOn: viewModel.autocompleteGeneralBinding)) + } + + Section(footer: Text(UserText.voiceSearchFooter)) { + // Private Voice Search + if viewModel.state.speechRecognitionAvailable { + SettingsCellView(label: UserText.settingsVoiceSearch, + accesory: .toggle(isOn: viewModel.voiceSearchEnabledGeneralBinding)) + } + } + .alert(isPresented: $shouldShowNoMicrophonePermissionAlert) { + Alert(title: Text(UserText.noVoicePermissionAlertTitle), + message: Text(UserText.noVoicePermissionAlertMessage), + dismissButton: .default(Text(UserText.noVoicePermissionAlertOKbutton), + action: { + viewModel.shouldShowNoMicrophonePermissionAlert = false + }) + ) + } + .onChange(of: viewModel.shouldShowNoMicrophonePermissionAlert) { value in + shouldShowNoMicrophonePermissionAlert = value + } + + Section(header: Text(UserText.settingsCustomizeSection), + footer: Text(UserText.settingsAssociatedAppsDescription)) { + // Keyboard + SettingsCellView(label: UserText.settingsKeyboard, + action: { viewModel.presentLegacyView(.keyboard) }, + disclosureIndicator: true, + isButton: true) + + // Long-Press Previews + SettingsCellView(label: UserText.settingsPreviews, + accesory: .toggle(isOn: viewModel.longPressBinding)) + // Open Links in Associated Apps + SettingsCellView(label: UserText.settingsAssociatedApps, + accesory: .toggle(isOn: viewModel.universalLinksBinding)) + } + } + .applySettingsListModifiers(title: UserText.general, + displayMode: .inline, + viewModel: viewModel) + .onForwardNavigationAppear { + Pixel.fire(pixel: .settingsGeneralOpen, + withAdditionalParameters: PixelExperiment.parameters) + } } - } diff --git a/DuckDuckGo/SettingsGeneralViewOld.swift b/DuckDuckGo/SettingsGeneralViewOld.swift new file mode 100644 index 0000000000..fb831cf9fb --- /dev/null +++ b/DuckDuckGo/SettingsGeneralViewOld.swift @@ -0,0 +1,45 @@ +// +// SettingsGeneralViewOld.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 SwiftUI +import UIKit + +struct SettingsGeneralViewOld: View { + + @EnvironmentObject var viewModel: SettingsViewModel + + var body: some View { + Section { + SettingsCellView(label: UserText.settingsSetDefault, + action: { viewModel.setAsDefaultBrowser() }, + isButton: true) + + SettingsCellView(label: UserText.settingsAddToDock, + action: { viewModel.presentLegacyView(.addToDock) }, + isButton: true) + + NavigationLink(destination: WidgetEducationView()) { + SettingsCellView(label: UserText.settingsAddWidget) + } + + } + + } + +} diff --git a/DuckDuckGo/SettingsHostingController.swift b/DuckDuckGo/SettingsHostingController.swift index 72d55985e9..fb22ce2a7b 100644 --- a/DuckDuckGo/SettingsHostingController.swift +++ b/DuckDuckGo/SettingsHostingController.swift @@ -19,6 +19,7 @@ import UIKit import SwiftUI +import Core #if SUBSCRIPTION import Subscription #endif @@ -48,7 +49,11 @@ class SettingsHostingController: UIHostingController { self?.navigationController?.dismiss(animated: true) } - let settingsView = SettingsView(viewModel: viewModel) + let settingsView: AnyView + switch PixelExperiment.cohort { + case .control, .noVariant, .none: settingsView = AnyView(SettingsView(viewModel: viewModel)) + case .newSettings: settingsView = AnyView(SettingsRootView(viewModel: viewModel)) + } self.rootView = AnyView(settingsView) decorate() diff --git a/DuckDuckGo/SettingsLegacyViewProvider.swift b/DuckDuckGo/SettingsLegacyViewProvider.swift index aa7fd200bf..8af9f7b2dc 100644 --- a/DuckDuckGo/SettingsLegacyViewProvider.swift +++ b/DuckDuckGo/SettingsLegacyViewProvider.swift @@ -79,8 +79,8 @@ class SettingsLegacyViewProvider: ObservableObject { var autoclearData: UIViewController { instantiate("AutoClearSettingsViewController", fromStoryboard: "Settings") } var keyboard: UIViewController { instantiate("Keyboard", fromStoryboard: "Settings") } var feedback: UIViewController { instantiate("Feedback", fromStoryboard: "Feedback") } - var about: UIViewController { AboutViewController() } - + var about: UIViewController { AboutViewControllerOld() } + @available(iOS 15, *) var netPWaitlist: UIViewController { VPNWaitlistViewController(nibName: nil, bundle: nil) } diff --git a/DuckDuckGo/SettingsMainSettingsView.swift b/DuckDuckGo/SettingsMainSettingsView.swift new file mode 100644 index 0000000000..b7718e6bd5 --- /dev/null +++ b/DuckDuckGo/SettingsMainSettingsView.swift @@ -0,0 +1,73 @@ +// +// SettingsMainSettingsView.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 SwiftUI +import UIKit +import SyncUI + +struct SettingsMainSettingsView: View { + + @EnvironmentObject var viewModel: SettingsViewModel + + var body: some View { + Section(header: Text(UserText.mainSettings)) { + // General + NavigationLink(destination: SettingsGeneralView().environmentObject(viewModel)) { + SettingsCellView(label: UserText.general, + image: Image("SettingsGeneral")) + } + + // Sync & Backup + let statusIndicator = viewModel.syncStatus == .on ? StatusIndicatorView(status: viewModel.syncStatus, isDotHidden: true) : nil + SettingsCellView(label: SyncUI.UserText.syncTitle, + image: Image("SettingsSync"), + action: { viewModel.presentLegacyView(.sync) }, + statusIndicator: statusIndicator, + disclosureIndicator: true, + isButton: true) + + // Appearance + NavigationLink(destination: SettingsAppearanceView().environmentObject(viewModel)) { + SettingsCellView(label: UserText.settingsAppearanceSection, + image: Image("SettingsAppearance")) + } + + // Passwords + SettingsCellView(label: UserText.settingsLogins, + image: Image("SettingsPasswords"), + action: { viewModel.presentLegacyView(.logins) }, + disclosureIndicator: true, + isButton: true) + + // Accessibility + NavigationLink(destination: SettingsAccessibilityView().environmentObject(viewModel)) { + SettingsCellView(label: UserText.accessibility, + image: Image("SettingsAccessibility")) + } + + // Data Clearing + NavigationLink(destination: SettingsDataClearingView().environmentObject(viewModel)) { + SettingsCellView(label: UserText.dataClearing, + image: Image("SettingsDataClearing")) + } + } + + } + +} diff --git a/DuckDuckGo/SettingsMoreView.swift b/DuckDuckGo/SettingsMoreView.swift index a4b98df27a..663dd4651e 100644 --- a/DuckDuckGo/SettingsMoreView.swift +++ b/DuckDuckGo/SettingsMoreView.swift @@ -19,6 +19,7 @@ import SwiftUI import UIKit +import Core struct SettingsMoreView: View { @@ -28,9 +29,13 @@ struct SettingsMoreView: View { var body: some View { Section(header: Text(UserText.settingsMoreSection)) { - SettingsCellView(label: UserText.settingsEmailProtection, + SettingsCellView(label: UserText.emailProtection, subtitle: UserText.settingsEmailProtectionDescription, - action: { viewModel.openEmailProtection() }, + action: { + viewModel.openEmailProtection() + Pixel.fire(pixel: .settingsEmailProtectionOpen, + withAdditionalParameters: PixelExperiment.parameters) + }, disclosureIndicator: true, isButton: true) diff --git a/DuckDuckGo/SettingsNextStepsView.swift b/DuckDuckGo/SettingsNextStepsView.swift new file mode 100644 index 0000000000..bafa7dd513 --- /dev/null +++ b/DuckDuckGo/SettingsNextStepsView.swift @@ -0,0 +1,56 @@ +// +// SettingsNextStepsView.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 SwiftUI +import UIKit + +struct SettingsNextStepsView: View { + + @EnvironmentObject var viewModel: SettingsViewModel + + var body: some View { + Section(header: Text(UserText.nextSteps)) { + // Add App to Your Dock + SettingsCellView(label: UserText.settingsAddToDock, + image: Image("SettingsAddToDock"), + action: { viewModel.presentLegacyView(.addToDock) }, + isButton: true) + + // Add Widget to Home Screen + NavigationLink(destination: WidgetEducationView()) { + SettingsCellView(label: UserText.settingsAddWidget, + image: Image("SettingsAddWidget")) + } + + // Set Your Address Bar Position + NavigationLink(destination: SettingsAppearanceView().environmentObject(viewModel)) { + SettingsCellView(label: UserText.setYourAddressBarPosition, + image: Image("SettingsAddressBarPosition")) + } + + // Enable Voice Search + NavigationLink(destination: SettingsAccessibilityView().environmentObject(viewModel)) { + SettingsCellView(label: UserText.enableVoiceSearch, + image: Image("SettingsVoiceSearch")) + } + } + + } + +} diff --git a/DuckDuckGo/SettingsOthersView.swift b/DuckDuckGo/SettingsOthersView.swift new file mode 100644 index 0000000000..9194cef3c5 --- /dev/null +++ b/DuckDuckGo/SettingsOthersView.swift @@ -0,0 +1,51 @@ +// +// SettingsOthersView.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 SwiftUI +import UIKit + +struct SettingsOthersView: View { + + @EnvironmentObject var viewModel: SettingsViewModel + + var body: some View { + Section { + // About + NavigationLink(destination: AboutView().environmentObject(viewModel)) { + SettingsCellView(label: UserText.settingsAboutSection, + image: Image("LogoIcon")) + } + + // Share Feedback + SettingsCellView(label: UserText.settingsFeedback, + image: Image("SettingsFeedback"), + action: { viewModel.presentLegacyView(.feedback) }, + isButton: true) + + // DuckDuckGo on Other Platforms + SettingsCellView(label: UserText.duckduckgoOnOtherPlatforms, + image: Image("SettingsOtherPlatforms"), + action: { viewModel.openOtherPlatforms() }, + webLinkIndicator: true, + isButton: true) + } + + } + +} diff --git a/DuckDuckGo/SettingsPrivacyProtectionDescriptionView.swift b/DuckDuckGo/SettingsPrivacyProtectionDescriptionView.swift new file mode 100644 index 0000000000..95bd8b026b --- /dev/null +++ b/DuckDuckGo/SettingsPrivacyProtectionDescriptionView.swift @@ -0,0 +1,64 @@ +// +// SettingsPrivacyProtectionDescriptionView.swift +// DuckDuckGo +// +// Copyright © 2024 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import SwiftUI +import DesignResourcesKit + +struct PrivacyProtectionDescription { + let imageName: String + let title: String + let status: StatusIndicator + let explanation: String +} + +// Universal protection description view +struct PrivacyProtectionDescriptionView: View { + + let content: PrivacyProtectionDescription + @EnvironmentObject var viewModel: SettingsViewModel + + var body: some View { + VStack(spacing: 8) { + Image(content.imageName) + .resizable() + .frame(width: 128, height: 96) + + Text(content.title) + .daxTitle2() + .multilineTextAlignment(.center) + .foregroundColor(.init(designSystemColor: .textPrimary)) + + StatusIndicatorView(status: content.status) + .padding(.top, -4) + + Text(LocalizedStringKey(content.explanation)) + .daxBodyRegular() + .multilineTextAlignment(.center) + .foregroundColor(.init(designSystemColor: .textSecondary)) + .tintIfAvailable(Color(designSystemColor: .accent)) + .padding(.horizontal, 32) + .padding(.top, 8) + + Spacer() + } + .listRowInsets(EdgeInsets(top: -12, leading: -12, bottom: -12, trailing: -12)) + .listRowBackground(Color(designSystemColor: .background).edgesIgnoringSafeArea(.all)) + .frame(maxWidth: .infinity) + } +} diff --git a/DuckDuckGo/SettingsPrivacyProtectionsView.swift b/DuckDuckGo/SettingsPrivacyProtectionsView.swift new file mode 100644 index 0000000000..9b897b5a4f --- /dev/null +++ b/DuckDuckGo/SettingsPrivacyProtectionsView.swift @@ -0,0 +1,79 @@ +// +// SettingsPrivacyProtectionsView.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 SwiftUI +import UIKit +import Core + +struct SettingsPrivacyProtectionsView: View { + + @EnvironmentObject var viewModel: SettingsViewModel + + var body: some View { + Section(header: Text("Privacy Protections")) { + // Default Browser + SettingsCellView(label: UserText.defaultBrowser, + image: Image("SettingsDefaultBrowser"), + action: { viewModel.setAsDefaultBrowser() }, + webLinkIndicator: true, + isButton: true) + + // Private Search + NavigationLink(destination: PrivateSearchView().environmentObject(viewModel)) { + SettingsCellView(label: UserText.privateSearch, + image: Image("SettingsSearch"), + statusIndicator: StatusIndicatorView(status: .on)) + } + + // Web Tracking Protection + NavigationLink(destination: WebTrackingProtectionView().environmentObject(viewModel)) { + SettingsCellView(label: UserText.webTrackingProtection, + image: Image("SettingsWebTrackingProtection"), + statusIndicator: StatusIndicatorView(status: .on)) + } + + // Cookie Pop-Up Protection + NavigationLink(destination: CookiePopUpProtectionView().environmentObject(viewModel)) { + SettingsCellView(label: UserText.cookiePopUpProtection, + image: Image("SettingsCookiePopUpProtection"), + statusIndicator: StatusIndicatorView(status: viewModel.cookiePopUpProtectionStatus)) + } + + // Email Protection + NavigationLink(destination: EmailProtectionView().environmentObject(viewModel)) { + SettingsCellView(label: UserText.emailProtection, + image: Image("SettingsEmailProtection"), + statusIndicator: StatusIndicatorView(status: viewModel.emailProtectionStatus)) + } + + // Network Protection +#if NETWORK_PROTECTION + if viewModel.state.networkProtection.enabled { + SettingsCellView(label: UserText.netPSettingsTitle, + image: Image("SettingsNetworkProtection"), + action: { viewModel.presentLegacyView(.netP) }, + disclosureIndicator: true, + isButton: true) + } +#endif + } + + } + +} diff --git a/DuckDuckGo/SettingsRootView.swift b/DuckDuckGo/SettingsRootView.swift new file mode 100644 index 0000000000..998e8a2ddd --- /dev/null +++ b/DuckDuckGo/SettingsRootView.swift @@ -0,0 +1,183 @@ +// +// SettingsRootView.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 SwiftUI +import UIKit +import DesignResourcesKit + +struct SettingsRootView: View { + + @StateObject var viewModel: SettingsViewModel + @Environment(\.presentationMode) var presentationMode + + @State private var subscriptionNavigationCoordinator = SubscriptionNavigationCoordinator() + @State private var shouldDisplayDeepLinkSheet: Bool = false + @State private var shouldDisplayDeepLinkPush: Bool = false +#if SUBSCRIPTION + @State var deepLinkTarget: SettingsViewModel.SettingsDeepLinkSection? +#endif + + var body: some View { + + // Hidden navigationLink for programatic navigation + if #available(iOS 15.0, *) { + + #if SUBSCRIPTION + if let target = deepLinkTarget { + NavigationLink(destination: deepLinkDestinationView(for: target), + isActive: $shouldDisplayDeepLinkPush) { + EmptyView() + } + } + #endif + } + + List { + SettingsPrivacyProtectionsView() +#if SUBSCRIPTION + if #available(iOS 15, *) { + SettingsSubscriptionView().environmentObject(subscriptionNavigationCoordinator) + } +#endif + SettingsMainSettingsView() + SettingsNextStepsView() + SettingsOthersView() + SettingsDebugView() + } + .navigationBarTitle(UserText.settingsTitle, displayMode: .inline) + .navigationBarItems(trailing: Button(UserText.navigationTitleDone) { + viewModel.onRequestDismissSettings?() + }) + .accentColor(Color(designSystemColor: .textPrimary)) + .environmentObject(viewModel) + .conditionalInsetGroupedListStyle() + + .onAppear { + viewModel.onAppear() + } + + .onAppear { + viewModel.onDissapear() + } + +#if SUBSCRIPTION + // MARK: Deeplink Modifiers + + .sheet(isPresented: $shouldDisplayDeepLinkSheet, + onDismiss: { + viewModel.onAppear() + shouldDisplayDeepLinkSheet = false + }, + content: { + if #available(iOS 15.0, *) { + if let target = deepLinkTarget { + deepLinkDestinationView(for: target) + } + } + }) + + .onReceive(viewModel.$deepLinkTarget, perform: { link in + guard let link else { return } + self.deepLinkTarget = link + + switch link.type { + case .sheet: + DispatchQueue.main.async { + self.shouldDisplayDeepLinkSheet = true + } + case .navigationLink: + DispatchQueue.main.async { + self.shouldDisplayDeepLinkPush = true + } + case.UIKitView: + DispatchQueue.main.async { + triggerLegacyLink(link) + } + } + }) +#endif + } + +#if SUBSCRIPTION + // MARK: DeepLink Views + @available(iOS 15.0, *) + @ViewBuilder + func deepLinkDestinationView(for target: SettingsViewModel.SettingsDeepLinkSection) -> some View { + switch target { + case .dbp: + SubscriptionPIRView() + case .itr: + SubscriptionITPView() + case .subscriptionFlow: + SubscriptionContainerView(currentView: .subscribe).environmentObject(subscriptionNavigationCoordinator) + case .subscriptionRestoreFlow: + SubscriptionContainerView(currentView: .restore).environmentObject(subscriptionNavigationCoordinator) + default: + EmptyView() + } + } + + private func triggerLegacyLink(_ link: SettingsViewModel.SettingsDeepLinkSection) { + switch link { + case .netP: + viewModel.presentLegacyView(.netP) + default: + return + } + } +#endif +} + +struct InsetGroupedListStyleModifier: ViewModifier { + func body(content: Content) -> some View { + if #available(iOS 15, *) { + return AnyView(content.applyInsetGroupedListStyle()) + } else { + return AnyView(content) + } + } +} + +struct SettingsListModifiers: ViewModifier { + @EnvironmentObject var viewModel: SettingsViewModel + let title: String? + let displayMode: NavigationBarItem.TitleDisplayMode + + func body(content: Content) -> some View { + content + .navigationBarTitle(title ?? "", displayMode: displayMode) + .accentColor(Color(designSystemColor: .textPrimary)) + .environmentObject(viewModel) + .conditionalInsetGroupedListStyle() + .onAppear { + viewModel.onAppear() + } + } +} + +extension View { + func conditionalInsetGroupedListStyle() -> some View { + self.modifier(InsetGroupedListStyleModifier()) + } + + func applySettingsListModifiers(title: String? = nil, displayMode: NavigationBarItem.TitleDisplayMode = .inline, viewModel: SettingsViewModel) -> some View { + self.modifier(SettingsListModifiers(title: title, displayMode: displayMode)) + .environmentObject(viewModel) + } +} diff --git a/DuckDuckGo/SettingsStatus.swift b/DuckDuckGo/SettingsStatus.swift new file mode 100644 index 0000000000..fc43b3eff5 --- /dev/null +++ b/DuckDuckGo/SettingsStatus.swift @@ -0,0 +1,69 @@ +// +// SettingsStatus.swift +// DuckDuckGo +// +// Copyright © 2024 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import SwiftUI +import Combine + +enum StatusIndicator: Equatable { + case alwaysOn + case on + case off + + var text: String { + switch self { + case .alwaysOn: + return UserText.settingsAlwaysOn + case .on: + return UserText.settingsOn + case .off: + return UserText.settingsOff + } + } +} + +struct StatusIndicatorView: View { + var status: StatusIndicator + var isDotHidden = false + + var body: some View { + HStack(spacing: 6) { + if !isDotHidden { + Circle() + .frame(width: 8, height: 8) + .foregroundColor(colorForStatus(status)) + .animation(.easeInOut(duration: 0.3), value: status) + } + + Text(status.text) + .daxBodyRegular() + .lineLimit(1) + .foregroundColor(Color(designSystemColor: .textSecondary)) + .animation(.easeInOut(duration: 0.3), value: status) + } + } + + private func colorForStatus(_ status: StatusIndicator) -> Color { + switch status { + case .on, .alwaysOn: + return Color("AlertGreen") + case .off: + return Color(designSystemColor: .textSecondary).opacity(0.33) + } + } +} diff --git a/DuckDuckGo/SettingsSyncView.swift b/DuckDuckGo/SettingsSyncViewOld.swift similarity index 95% rename from DuckDuckGo/SettingsSyncView.swift rename to DuckDuckGo/SettingsSyncViewOld.swift index 0cd75de4fc..41575762de 100644 --- a/DuckDuckGo/SettingsSyncView.swift +++ b/DuckDuckGo/SettingsSyncViewOld.swift @@ -1,5 +1,5 @@ // -// SettingsSyncView.swift +// SettingsSyncViewOld.swift // DuckDuckGo // // Copyright © 2023 DuckDuckGo. All rights reserved. @@ -23,8 +23,8 @@ import UIKit import Core import DDGSync -struct SettingsSyncView: View { - +struct SettingsSyncViewOld: View { + @EnvironmentObject var viewModel: SettingsViewModel @EnvironmentObject var viewProvider: SettingsLegacyViewProvider diff --git a/DuckDuckGo/SettingsView.swift b/DuckDuckGo/SettingsView.swift index 5d4d6d11db..4169b490b1 100644 --- a/DuckDuckGo/SettingsView.swift +++ b/DuckDuckGo/SettingsView.swift @@ -32,7 +32,7 @@ struct SettingsView: View { #if SUBSCRIPTION @State var deepLinkTarget: SettingsViewModel.SettingsDeepLinkSection? #endif - + var body: some View { // Hidden navigationLink for programatic navigation @@ -50,10 +50,10 @@ struct SettingsView: View { // Settings Sections List { - SettingsGeneralView() - SettingsSyncView() + SettingsGeneralViewOld() + SettingsSyncViewOld() SettingsLoginsView() - SettingsAppeareanceView() + SettingsAppeareanceViewOld() SettingsPrivacyView() #if SUBSCRIPTION if #available(iOS 15, *) { @@ -62,9 +62,8 @@ struct SettingsView: View { #endif SettingsCustomizeView() SettingsMoreView() - SettingsAboutView() + SettingsAboutViewOld() SettingsDebugView() - } .navigationBarTitle(UserText.settingsTitle, displayMode: .inline) .navigationBarItems(trailing: Button(UserText.navigationTitleDone) { @@ -152,19 +151,3 @@ struct SettingsView: View { } #endif } - -struct InsetGroupedListStyleModifier: ViewModifier { - func body(content: Content) -> some View { - if #available(iOS 15, *) { - return AnyView(content.applyInsetGroupedListStyle()) - } else { - return AnyView(content) - } - } -} - -extension View { - func conditionalInsetGroupedListStyle() -> some View { - self.modifier(InsetGroupedListStyleModifier()) - } -} diff --git a/DuckDuckGo/SettingsViewModel.swift b/DuckDuckGo/SettingsViewModel.swift index 581a21146a..97c6063941 100644 --- a/DuckDuckGo/SettingsViewModel.swift +++ b/DuckDuckGo/SettingsViewModel.swift @@ -38,8 +38,10 @@ import NetworkExtension import NetworkProtection #endif +// swiftlint:disable type_body_length final class SettingsViewModel: ObservableObject { - +// swiftlint:enable type_body_length + // Dependencies private(set) lazy var appSettings = AppDependencyProvider.shared.appSettings private(set) var privacyStore = PrivacyUserDefaults() @@ -48,6 +50,7 @@ final class SettingsViewModel: ObservableObject { private var legacyViewProvider: SettingsLegacyViewProvider private lazy var versionProvider: AppVersion = AppVersion.shared private let voiceSearchHelper: VoiceSearchHelperProtocol + var emailManager: EmailManager { EmailManager() } #if SUBSCRIPTION private var accountManager: AccountManager @@ -103,6 +106,7 @@ final class SettingsViewModel: ObservableObject { } var shouldShowNoMicrophonePermissionAlert: Bool = false + @Published var shouldShowEmailAlert: Bool = false var autocompleteSubtitle: String? #if SUBSCRIPTION @@ -121,6 +125,7 @@ final class SettingsViewModel: ObservableObject { set: { self.state.appTheme = $0 ThemeManager.shared.enableTheme(with: $0) + Pixel.fire(pixel: .settingsThemeSelectorPressed, withAdditionalParameters: PixelExperiment.parameters) } ) } @@ -138,9 +143,12 @@ final class SettingsViewModel: ObservableObject { } completion: { // no op } + Pixel.fire(pixel: .settingsFireButtonSelectorPressed, + withAdditionalParameters: PixelExperiment.parameters) } ) } + var addressBarPositionBinding: Binding { Binding( get: { @@ -149,6 +157,13 @@ final class SettingsViewModel: ObservableObject { set: { self.appSettings.currentAddressBarPosition = $0 self.state.addressbar.position = $0 + if $0 == .top { + Pixel.fire(pixel: .settingsAddressBarTopSelected, + withAdditionalParameters: PixelExperiment.parameters) + } else { + Pixel.fire(pixel: .settingsAddressBarBottomSelected, + withAdditionalParameters: PixelExperiment.parameters) + } } ) } @@ -159,7 +174,13 @@ final class SettingsViewModel: ObservableObject { set: { self.state.showsFullURL = $0 self.appSettings.showFullSiteAddress = $0 - self.firePixel($0 ? .settingsShowFullSiteAddressEnabled : .settingsShowFullSiteAddressDisabled) + if $0 { + Pixel.fire(pixel: .settingsShowFullSiteAddressEnabled, + withAdditionalParameters: PixelExperiment.parameters) + } else { + Pixel.fire(pixel: .settingsShowFullSiteAddressDisabled, + withAdditionalParameters: PixelExperiment.parameters) + } } ) } @@ -173,39 +194,180 @@ final class SettingsViewModel: ObservableObject { } ) } + var autocompleteBinding: Binding { Binding( get: { self.state.autocomplete }, set: { self.appSettings.autocomplete = $0 self.state.autocomplete = $0 + if $0 { + Pixel.fire(pixel: .settingsAutocompleteOn, + withAdditionalParameters: PixelExperiment.parameters) + } else { + Pixel.fire(pixel: .settingsAutocompleteOff, + withAdditionalParameters: PixelExperiment.parameters) + } + } + ) + } + + // Remove after Settings experiment + var autocompletePrivateSearchBinding: Binding { + Binding( + get: { self.state.autocomplete }, + set: { + self.appSettings.autocomplete = $0 + self.state.autocomplete = $0 + if $0 { + Pixel.fire(pixel: .settingsPrivateSearchAutocompleteOn, + withAdditionalParameters: PixelExperiment.parameters) + } else { + Pixel.fire(pixel: .settingsPrivateSearchAutocompleteOff, + withAdditionalParameters: PixelExperiment.parameters) + } + } + ) + } + + // Remove after Settings experiment + var autocompleteGeneralBinding: Binding { + Binding( + get: { self.state.autocomplete }, + set: { + self.appSettings.autocomplete = $0 + self.state.autocomplete = $0 + if $0 { + Pixel.fire(pixel: .settingsGeneralAutocompleteOn, + withAdditionalParameters: PixelExperiment.parameters) + } else { + Pixel.fire(pixel: .settingsGeneralAutocompleteOff, + withAdditionalParameters: PixelExperiment.parameters) + } + } + ) + } + + var gpcBinding: Binding { + Binding( + get: { self.state.sendDoNotSell }, + set: { + self.appSettings.sendDoNotSell = $0 + self.state.sendDoNotSell = $0 + NotificationCenter.default.post(name: AppUserDefaults.Notifications.doNotSellStatusChange, object: nil) + if $0 { + Pixel.fire(pixel: .settingsGpcOn, + withAdditionalParameters: PixelExperiment.parameters) + } else { + Pixel.fire(pixel: .settingsGpcOff, + withAdditionalParameters: PixelExperiment.parameters) + } + } + ) + } - Pixel.fire(pixel: self.state.autocomplete ? .autocompleteEnabled : .autocompleteDisabled) + var autoconsentBinding: Binding { + Binding( + get: { self.state.autoconsentEnabled }, + set: { + self.appSettings.autoconsentEnabled = $0 + self.state.autoconsentEnabled = $0 + if $0 { + Pixel.fire(pixel: .settingsAutoconsentOn, + withAdditionalParameters: PixelExperiment.parameters) + } else { + Pixel.fire(pixel: .settingsAutoconsentOff, + withAdditionalParameters: PixelExperiment.parameters) + } } ) } + var voiceSearchEnabledBinding: Binding { Binding( get: { self.state.voiceSearchEnabled }, - set: { value in - if value { - self.enableVoiceSearch { [weak self] result in - DispatchQueue.main.async { - self?.state.voiceSearchEnabled = result - self?.voiceSearchHelper.enableVoiceSearch(true) - if !result { - // Permission is denied - self?.shouldShowNoMicrophonePermissionAlert = true - } - } - } + set: { newValue in + self.setVoiceSearchEnabled(to: newValue) + if newValue { + Pixel.fire(pixel: .settingsVoiceSearchOn, + withAdditionalParameters: PixelExperiment.parameters) } else { - self.voiceSearchHelper.enableVoiceSearch(false) - self.state.voiceSearchEnabled = false + Pixel.fire(pixel: .settingsVoiceSearchOff, + withAdditionalParameters: PixelExperiment.parameters) } } ) } + + // Remove after Settings experiment + var voiceSearchEnabledPrivateSearchBinding: Binding { + Binding( + get: { self.state.voiceSearchEnabled }, + set: { newValue in + self.setVoiceSearchEnabled(to: newValue) + if newValue { + Pixel.fire(pixel: .settingsPrivateSearchVoiceSearchOn, + withAdditionalParameters: PixelExperiment.parameters) + } else { + Pixel.fire(pixel: .settingsPrivateSearchVoiceSearchOff, + withAdditionalParameters: PixelExperiment.parameters) + } + } + ) + } + + // Remove after Settings experiment + var voiceSearchEnabledGeneralBinding: Binding { + Binding( + get: { self.state.voiceSearchEnabled }, + set: { newValue in + self.setVoiceSearchEnabled(to: newValue) + if newValue { + Pixel.fire(pixel: .settingsGeneralVoiceSearchOn, + withAdditionalParameters: PixelExperiment.parameters) + } else { + Pixel.fire(pixel: .settingsGeneralVoiceSearchOff, + withAdditionalParameters: PixelExperiment.parameters) + } + } + ) + } + + // Remove after Settings experiment + var voiceSearchEnabledAccessibilityBinding: Binding { + Binding( + get: { self.state.voiceSearchEnabled }, + set: { newValue in + self.setVoiceSearchEnabled(to: newValue) + if newValue { + Pixel.fire(pixel: .settingsAccessibilityVoiceSearchOn, + withAdditionalParameters: PixelExperiment.parameters) + } else { + Pixel.fire(pixel: .settingsAccessibilityVoiceSearchOff, + withAdditionalParameters: PixelExperiment.parameters) + } + } + ) + } + + func setVoiceSearchEnabled(to value: Bool) { + if value { + enableVoiceSearch { [weak self] result in + DispatchQueue.main.async { + self?.state.voiceSearchEnabled = result + self?.voiceSearchHelper.enableVoiceSearch(true) + if !result { + // Permission is denied + self?.shouldShowNoMicrophonePermissionAlert = true + } + } + } + } else { + voiceSearchHelper.enableVoiceSearch(false) + state.voiceSearchEnabled = false + } + } + var longPressBinding: Binding { Binding( get: { self.state.longPressPreviews }, @@ -225,6 +387,19 @@ final class SettingsViewModel: ObservableObject { } ) } + + var cookiePopUpProtectionStatus: StatusIndicator { + return appSettings.autoconsentEnabled ? .on : .off + } + + var emailProtectionStatus: StatusIndicator { + return emailManager.isSignedIn ? .on : .off + } + + var syncStatus: StatusIndicator { + legacyViewProvider.syncService.authState != .inactive ? .on : .off + } + #if SUBSCRIPTION // MARK: Default Init init(state: SettingsState? = nil, @@ -366,10 +541,10 @@ extension SettingsViewModel { return SyncUI.UserText.syncTitle }()) } - - - private func firePixel(_ event: Pixel.Event) { - Pixel.fire(pixel: event) + + private func firePixel(_ event: Pixel.Event, + withAdditionalParameters params: [String: String] = [:]) { + Pixel.fire(pixel: event, withAdditionalParameters: params) } private func enableVoiceSearch(completion: @escaping (Bool) -> Void) { @@ -541,7 +716,8 @@ extension SettingsViewModel { } func setAsDefaultBrowser() { - firePixel(.defaultBrowserButtonPressedSettings) + Pixel.fire(pixel: .settingsSetAsDefault, + withAdditionalParameters: PixelExperiment.parameters) guard let url = URL(string: UIApplication.openSettingsURLString) else { return } UIApplication.shared.open(url) } @@ -556,7 +732,31 @@ extension SettingsViewModel { options: [:], completionHandler: nil) } - + + func openEmailAccountManagement() { + UIApplication.shared.open(URL.emailProtectionAccountLink, + options: [:], + completionHandler: nil) + } + + func openEmailSupport() { + UIApplication.shared.open(URL.emailProtectionSupportLink, + options: [:], + completionHandler: nil) + } + + func openOtherPlatforms() { + UIApplication.shared.open(URL.apps, + options: [:], + completionHandler: nil) + } + + func openMoreSearchSettings() { + UIApplication.shared.open(URL.searchSettings, + options: [:], + completionHandler: nil) + } + @MainActor func openCookiePopupManagement() { pushViewController(legacyViewProvider.autoConsent) } @@ -578,12 +778,20 @@ extension SettingsViewModel { switch view { - case .addToDock: presentViewController(legacyViewProvider.addToDock, modal: true) - case .sync: pushViewController(legacyViewProvider.syncSettings) + case .addToDock: + firePixel(.settingsNextStepsAddAppToDock, + withAdditionalParameters: PixelExperiment.parameters) + presentViewController(legacyViewProvider.addToDock, modal: true) + case .sync: + firePixel(.settingsSyncOpen, + withAdditionalParameters: PixelExperiment.parameters) + pushViewController(legacyViewProvider.syncSettings) case .appIcon: pushViewController(legacyViewProvider.appIcon) case .unprotectedSites: pushViewController(legacyViewProvider.unprotectedSites) case .fireproofSites: pushViewController(legacyViewProvider.fireproofSites) - case .autoclearData: pushViewController(legacyViewProvider.autoclearData) + case .autoclearData: + firePixel(.settingsAutomaticallyClearDataOpen, withAdditionalParameters: PixelExperiment.parameters) + pushViewController(legacyViewProvider.autoclearData) case .keyboard: pushViewController(legacyViewProvider.keyboard) case .about: pushViewController(legacyViewProvider.about) case .debug: pushViewController(legacyViewProvider.debug) @@ -591,12 +799,13 @@ extension SettingsViewModel { case .feedback: presentViewController(legacyViewProvider.feedback, modal: false) case .logins: - firePixel(.autofillSettingsOpened) + firePixel(.autofillSettingsOpened, withAdditionalParameters: PixelExperiment.parameters) pushViewController(legacyViewProvider.loginSettings(delegate: self, selectedAccount: state.activeWebsiteAccount)) case .textSize: - firePixel(.textSizeSettingsShown) + firePixel(.settingsAccessiblityTextSize, + withAdditionalParameters: PixelExperiment.parameters) pushViewController(legacyViewProvider.textSettings) case .gpc: @@ -604,17 +813,16 @@ extension SettingsViewModel { pushViewController(legacyViewProvider.gpc) case .autoconsent: - firePixel(.settingsAutoconsentShown) pushViewController(legacyViewProvider.autoConsent) #if NETWORK_PROTECTION case .netP: if #available(iOS 15, *) { - Pixel.fire(pixel: .privacyProVPNSettings) + firePixel(.privacyProVPNSettings, + withAdditionalParameters: PixelExperiment.parameters) pushViewController(legacyViewProvider.netP) } #endif - } } diff --git a/DuckDuckGo/TabViewControllerBrowsingMenuExtension.swift b/DuckDuckGo/TabViewControllerBrowsingMenuExtension.swift index ad041cf5c3..f96db6140a 100644 --- a/DuckDuckGo/TabViewControllerBrowsingMenuExtension.swift +++ b/DuckDuckGo/TabViewControllerBrowsingMenuExtension.swift @@ -403,7 +403,6 @@ extension TabViewController { } private func onBrowsingSettingsAction() { - Pixel.fire(pixel: .browsingMenuSettings) AppDependencyProvider.shared.userBehaviorMonitor.handleAction(.openSettings) delegate?.tabDidRequestSettings(tab: self) } diff --git a/DuckDuckGo/UserText.swift b/DuckDuckGo/UserText.swift index 7cae3cf279..ef91ca218d 100644 --- a/DuckDuckGo/UserText.swift +++ b/DuckDuckGo/UserText.swift @@ -327,7 +327,8 @@ public struct UserText { public static let noVoicePermissionAlertMessage = NSLocalizedString("voiceSearch.alert.no-permission.message", value: "Please allow Microphone access in iOS System Settings for DuckDuckGo to use voice features.", comment: "Message for alert warning the user about missing microphone permission") public static let noVoicePermissionActionSettings = NSLocalizedString("voiceSearch.alert.no-permission.action.settings", value: "Settings", comment: "No microphone permission alert action button to open the settings app") public static let voiceSearchCancelButton = NSLocalizedString("voiceSearch.cancel", value: "Cancel", comment: "Cancel button for voice search") - public static let voiceSearchFooter = NSLocalizedString("voiceSearch.footer.note", value: "Audio is processed on-device. It's not stored or shared with anyone, including DuckDuckGo.", comment: "Voice-search footer note with on-device privacy warning") + public static let voiceSearchFooterOld = NSLocalizedString("voiceSearch.footer.note.old", value: "Audio is processed on-device. It's not stored or shared with anyone, including DuckDuckGo.", comment: "Voice-search footer note with on-device privacy warning") + public static let voiceSearchFooter = NSLocalizedString("voiceSearch.footer.note", value: "Add Private Voice Search option to the address bar. Audio is not stored or shared with anyone, including DuckDuckGo.", comment: "Voice-search footer note with on-device privacy warning") public static let textSizeDescription = NSLocalizedString("textSize.description", value: "Choose your preferred text size. Websites you view in DuckDuckGo will adjust to it.", comment: "Description text for the text size adjustment setting") public static func textSizeFooter(for percentage: String) -> String { let message = NSLocalizedString("textSize.footer", value: "Text Size - %@", comment: "Replacement string is a current percent value e.g. '120%'") @@ -980,16 +981,58 @@ But if you *do* want a peek under the hood, you can find more information about // MARK: Settings Screeen public static let settingsTitle = NSLocalizedString("settings.title", value: "Settings", comment: "Title for the Settings View") + public static let settingsOn = NSLocalizedString("settings.on", value: "On", comment: "Label describing a feature which is turned on") + public static let settingsOff = NSLocalizedString("settings.off", value: "Off", comment: "Label describing a feature which is turned off") + public static let settingsAlwaysOn = NSLocalizedString("settings.always.on", value: "Always On", comment: "Label describing a feature which is turned on always") - // General Section - public static let settingsSetDefault = NSLocalizedString("settings.default.browser", value: "Set as Default Browser", comment: "Settings screen cell text for setting the app as default browser") + // Privacy Protections + public static let privateSearchExplanation = NSLocalizedString("settings.private.search.explanation", value: "DuckDuckGo Private Search is your default search engine, so you can search the web without being tracked.", comment: "Explanation in Settings how the private search feature works") + public static let webTrackingProtectionExplanation = NSLocalizedString("settings.web.tracking.protection.explanation", value: "DuckDuckGo automatically blocks hidden trackers as you browse the web.\n[Learn More](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)", comment: "Explanation in Settings how the web tracking protection feature works") + public static let cookiePopUpProtectionExplanation = NSLocalizedString("settings.cookie.pop.up.protection.explanation", value: "DuckDuckGo will try to select the most private settings available and hide these pop-ups for you.\n[Learn More](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)", comment: "Explanation in Settings how the cookie pop up protection feature works") + public static let emailProtectionExplanation = NSLocalizedString("settings.email.protection.explanation", value: "Block email trackers and hide your address without switching your email provider.\n[Learn More](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)", comment: "Explanation in Settings how the email protection feature works") + public static let emailProtectionSigningOutAlert = NSLocalizedString("settings.email.protection.signing.out.alert", value: "Signing out of your Email Protection account will disable Duck Address autofill in this browser. You can still use these addresses and receive forwarded email as usual.", comment: "Alert presented to user after clicking on 'Sign out' in Email Protection Settings") + public static let defaultBrowser = NSLocalizedString("settings.default.browser", value: "Default Browser", comment: "The name of Settings category in Privacy Features related to configuration of the default browser") + public static let privateSearch = NSLocalizedString("settings.private.search", value: "Private Search", comment: "The name of Settings category in Privacy Features related to configuration of the search") + public static let searchSettings = NSLocalizedString("settings.search.settings", value: "Search Settings", comment: "Header of settings related to search") + public static let moreSearchSettings = NSLocalizedString("settings.more.search.settings", value: "More Search Settings", comment: "Button navigating to other settings related to search") + public static let moreSearchSettingsExplanation = NSLocalizedString("settings.more.search.settings.explanation", value: "Customize your language, region, and more", comment: "Subtitle of the 'More Search Settings' button") + + public static let webTrackingProtection = NSLocalizedString("settings.web.tracking.protection", value: "Web Tracking Protection", comment: "The name of Settings category in Privacy Features related to configuration of the web tracking protection feature") + public static let cookiePopUpProtection = NSLocalizedString("settings.cookie.pop-up-protection.protection", value: "Cookie Pop-Up Protection", comment: "The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups") + public static let letDuckDuckGoManageCookieConsentPopups = NSLocalizedString("settings.let.duckduckgo.manage.cookie.consent.popups", value: "Let DuckDuckGo manage cookie consent pop-ups", comment: "Switch button label.") + + public static let disableEmailProtectionAutofill = NSLocalizedString("settings.disable.email.protection.autofill", value: "Disable Email Protection Autofill", comment: "Label of a button disabling email protection") + public static let manageAccount = NSLocalizedString("settings.manage.account", value: "Manage Account", comment: "Label of a button managing email protection account") + public static let support = NSLocalizedString("settings.support", value: "Support", comment: "Label of a button navigating to the Support page") + public static let enableEmailProtection = NSLocalizedString("settings.enable.email.protection", value: "Enable Email Protection", comment: "Label of a button enabling the email protection feature") + + // Main Settings + + public static let mainSettings = NSLocalizedString("settings.main.settings", value: "Main Settings", comment: "The name of the settings section containing main settings") + public static let general = NSLocalizedString("settings.general", value: "General", comment: "The name of the settings subsection containing general settings") + public static let settingsAppearanceSection = NSLocalizedString("settings.appearance", value: "Appearance", comment: "Settings screen appearance section title") + public static let accessibility = NSLocalizedString("settings.accessibility", value: "Accessibility", comment: "Settings screen accessibility section title") + public static let dataClearing = NSLocalizedString("settings.data.clearing", value: "Data Clearing", comment: "The name of a settings subsection related to the data clearing") + public static let addressBar = NSLocalizedString("settings.address.bar", value: "Address Bar", comment: "Name of the settings subsection related to the address bar") + + // Next Steps + public static let nextSteps = NSLocalizedString("settings.next.steps", value: "Next Steps", comment: "The name of a settings category listing next steps") public static let settingsAddToDock = NSLocalizedString("settings.add.to.dock", value: "Add App to Your Dock", comment: "Settings screen cell text for adding the app to the dock") public static let settingsAddWidget = NSLocalizedString("settings.add.widget", value: "Add Widget to Home Screen", comment: "Settings screen cell text for add widget to the home screen") + public static let setYourAddressBarPosition = NSLocalizedString("settings.set.your.address.bar.position", value: "Set Your Address Bar Position", comment: "Settings screen cell text for setting address bar position") + public static let enableVoiceSearch = NSLocalizedString("settings.enable.voice.search", value: "Enable Voice Search", comment: "Settings screen cell text for enabling voice search") + + // Others + public static let settingsAboutSection = NSLocalizedString("settings.about.section", value: "About", comment: "Settings section title for About DuckDuckGo") + public static let settingsFeedback = NSLocalizedString("settings.feedback", value: "Share Feedback", comment: "Settings cell for Feedback") + public static let duckduckgoOnOtherPlatforms = NSLocalizedString("settings.duckduckgo.on.other.platforms", value: "DuckDuckGo on Other Platforms", comment: "Settings cell to link users to other products by DuckDuckGo") + + // General Section + public static let settingsSetDefault = NSLocalizedString("settings.default.browser", value: "Set as Default Browser", comment: "Settings screen cell text for setting the app as default browser") public static let settingsSync = NSLocalizedString("settings.sync", value: "Sync & Backup", comment: "Settings screen cell text for sync and backup") public static let settingsLogins = NSLocalizedString("settings.logins", value: "Passwords", comment: "Settings screen cell text for passwords") // Appeareance Section - public static let settingsAppearanceSection = NSLocalizedString("settings.appearance", value: "Appearance", comment: "Settings screen appearance section title") public static let settingsTheme = NSLocalizedString("settings.theme", value: "Theme", comment: "Settings screen cell text for theme") public static let settingsIcon = NSLocalizedString("settings.icon", value: "App Icon", comment: "Settings screen cell text for app icon selection") public static let settingsFirebutton = NSLocalizedString("settings.firebutton", value: "Fire Button Animation", comment: "Settings screen cell text for fire button animation") @@ -1005,7 +1048,7 @@ But if you *do* want a peek under the hood, you can find more information about public static let settingsFireproofSites = NSLocalizedString("settings.fireproof.sites", value: "Fireproof Sites", comment: "Settings screen cell text for Fireproof Sites") public static let settingsClearData = NSLocalizedString("settings.clear.data", value: "Automatically Clear Data", comment: "Settings screen cell text for Automatically Clearing Data") public static let settingsAutolock = NSLocalizedString("settings.autolock", value: "Application Lock", comment: "Settings screen cell text for Application Lock") - public static let settingsAutoLockDescription = NSLocalizedString("settings.autolock.description", value: "If Touch ID, Face ID or a system passcode is set, you’ll be requested to unlock the app when opening.", comment: "Section footer Autolock description") + public static let settingsAutoLockDescription = NSLocalizedString("settings.autolock.description", value: "If Touch ID, Face ID, or a system passcode is enabled, you'll be asked to unlock the app when opening it.", comment: "Section footer Autolock description") // Subscription Section public static let settingsPProSection = NSLocalizedString("settings.ppro", value: "Privacy Pro", comment: "Product name for the subscription bundle") @@ -1031,7 +1074,7 @@ But if you *do* want a peek under the hood, you can find more information about public static let settingsPProActivationPendingTitle = NSLocalizedString("settings.subscription.activation.pending.title", value: "Your Subscription is Being Activated", comment: "Subscription activation pending title") public static let settingsPProActivationPendingDescription = NSLocalizedString("settings.subscription.activation.pending.description", value: "This is taking longer than usual, please check back later.", comment: "Subscription activation pending description") - + // Customize Section public static let settingsCustomizeSection = NSLocalizedString("settings.customize", value: "Customize", comment: "Settings title for the customize section") public static let settingsKeyboard = NSLocalizedString("settings.keyboard", value: "Keyboard", comment: "Settings screen cell for Keyboard") @@ -1046,14 +1089,10 @@ But if you *do* want a peek under the hood, you can find more information about // More Section public static let settingsMoreSection = NSLocalizedString("settings.more", value: "More from DuckDuckGo", comment: "Settings title for the 'More' section") - public static let settingsEmailProtection = NSLocalizedString("settings.emailProtection", value: "Email Protection", comment: "Settings cell for Email Protection") public static let settingsEmailProtectionDescription = NSLocalizedString("settings.emailProtection.description", value: "Block email trackers and hide your address", comment: "Settings cell for Email Protection") - - - public static let settingsAboutSection = NSLocalizedString("settings.about.section", value: "About", comment: "Settings section title for About DuckDuckGo") + public static let settingsAboutDDG = NSLocalizedString("settings.about.ddg", value: "About DuckDuckGo", comment: "Settings cell for About DDG") public static let settingsVersion = NSLocalizedString("settings.version", value: "Version", comment: "Settings cell for Version") - public static let settingsFeedback = NSLocalizedString("settings.feedback", value: "Share Feedback", comment: "Settings cell for Feedback") // MARK: Subscriptions diff --git a/DuckDuckGo/VoiceSearchFeedbackView.swift b/DuckDuckGo/VoiceSearchFeedbackView.swift index 788d65628d..1a8ac63333 100644 --- a/DuckDuckGo/VoiceSearchFeedbackView.swift +++ b/DuckDuckGo/VoiceSearchFeedbackView.swift @@ -82,7 +82,7 @@ extension VoiceSearchFeedbackView { .padding(.bottom, voiceCircleVerticalPadding) .padding(.top, voiceCircleVerticalPadding) - Text(UserText.voiceSearchFooter) + Text(UserText.voiceSearchFooterOld) .font(.footnote) .multilineTextAlignment(.center) .foregroundColor(Colors.footerText) diff --git a/DuckDuckGo/WebTrackingProtectionView.swift b/DuckDuckGo/WebTrackingProtectionView.swift new file mode 100644 index 0000000000..b123e77543 --- /dev/null +++ b/DuckDuckGo/WebTrackingProtectionView.swift @@ -0,0 +1,67 @@ +// +// WebTrackingProtectionView.swift +// DuckDuckGo +// +// Copyright © 2017 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 Core +import SwiftUI +import DesignResourcesKit + +struct WebTrackingProtectionView: View { + + @EnvironmentObject var viewModel: SettingsViewModel + + var description: PrivacyProtectionDescription { + PrivacyProtectionDescription(imageName: "SettingsWebTrackingProtectionContent", + title: UserText.webTrackingProtection, + status: .alwaysOn, + explanation: UserText.webTrackingProtectionExplanation) + } + + var body: some View { + List { + PrivacyProtectionDescriptionView(content: description) + WebTrackingProtectionViewSettings() + } + .applySettingsListModifiers(title: UserText.webTrackingProtection, + displayMode: .inline, + viewModel: viewModel) + .onForwardNavigationAppear { + Pixel.fire(pixel: .settingsWebTrackingProtectionOpen, + withAdditionalParameters: PixelExperiment.parameters) + } + } +} + +struct WebTrackingProtectionViewSettings: View { + + @EnvironmentObject var viewModel: SettingsViewModel + + var body: some View { + Section { + // Global Privacy Control + SettingsCellView(label: UserText.settingsGPC, + accesory: .toggle(isOn: viewModel.gpcBinding)) + + // Unprotected Sites + SettingsCellView(label: UserText.settingsUnprotectedSites, + action: { viewModel.presentLegacyView(.unprotectedSites) }, + disclosureIndicator: true, + isButton: true) + } + } +} diff --git a/DuckDuckGo/WidgetEducationView.swift b/DuckDuckGo/WidgetEducationView.swift index 3a3b3bcd71..7314a03d47 100644 --- a/DuckDuckGo/WidgetEducationView.swift +++ b/DuckDuckGo/WidgetEducationView.swift @@ -19,6 +19,7 @@ import SwiftUI import DesignResourcesKit +import Core extension Font { init(uiFont: UIFont) { @@ -47,6 +48,10 @@ struct WidgetEducationView: View { .padding(.top, Const.Padding.top) } }.navigationBarTitle(UserText.settingsAddWidget, displayMode: .inline) + .onForwardNavigationAppear { + Pixel.fire(pixel: .settingsNextStepsAddWidget, + withAdditionalParameters: PixelExperiment.parameters) + } } private var secondParagraphText: Text { diff --git a/DuckDuckGo/bg.lproj/Autocomplete.strings b/DuckDuckGo/bg.lproj/Autocomplete.strings index 7293ba8759..c13c1eb60b 100644 --- a/DuckDuckGo/bg.lproj/Autocomplete.strings +++ b/DuckDuckGo/bg.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Етикет"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Етикет"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Няма предложения"; diff --git a/DuckDuckGo/bg.lproj/Localizable.strings b/DuckDuckGo/bg.lproj/Localizable.strings index 5bb85e5355..00053cf3a6 100644 --- a/DuckDuckGo/bg.lproj/Localizable.strings +++ b/DuckDuckGo/bg.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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" = "Редактиране"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Управление"; +/* Button label for OK action */ +"action.ok" = "ОК"; + /* Add action - button shown in alert */ "action.title.add" = "Добавяне"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "URL адресът е копиран"; /* Delete action - button shown in alert */ -"action.title.delete" = "Изтриване"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Деактивиране на защита на поверителността"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Данните на сървъра не могат да бъдат изтрити."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "За да сдвоите тези устройства, изключете функцията „Синхронизиране и архивиране“ на едното устройство, а след това на другото устройство изберете „Синхронизиране с друго устройство“."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Това устройство не може да бъде премахнато от Синхронизиране и архивиране."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Вчера"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Управление на прозорци за бисквитки"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Не, благодаря"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Изглежда, че този сайт има изскачащ прозорец за съгласие за бисквитки👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Искате ли да се справя с това вместо Вас? Мога да се опитам да намаля бисквитките до минимум, да увелича поверителността и да скрия подобни изскачащи прозорци."; - /* No comment provided by engineer. */ "dax.hide.button" = "Скрий съветите за постоянно"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo за iOS"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "Защита на имейл"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Вземете DuckDuckGo за Mac!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "DuckDuckGo VPN"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Политика за поверителност"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Приемам и продължавам"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Мрежовата защита е безплатна в периода за ранен достъп."; +"network-protection.waitlist.availability-disclaimer" = "VPN услугата на DuckDuckGo е безплатна в периода за ранен достъп."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Приемам и продължавам"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Възползвайте се от допълнителен слой защита онлайн с бърза и опростена VPN функция. Криптирайте интернет връзката за всички приложения в устройството и скрийте местоположението и IP адреса си от сайтовете, които посещавате."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Каним Ви да изпробвате \n мрежовата защита чрез ранен достъп!"; +"network-protection.waitlist.invited.title" = "Каним Ви да изпробвате \nDuckDuckGo VPN чрез ранен достъп!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Сигурна връзка навсякъде и по всяко време с мрежова защита - VPN функцията на DuckDuckGo."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Включете се в списъка с чакащи и ще Ви уведомим, когато дойде Вашият ред."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "Ранен достъп до VPN"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Включени сте в списъка с чакащи!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Ще Ви уведомим, когато поканата Ви стане готова."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Ще Ви изпратим известие, когато поканата Ви за изпробване на мрежовата защита стане готова."; +"network-protection.waitlist.notification-alert.description" = "Ще Ви изпратим известие, когато поканата Ви за изпробване на DuckDuckGo VPN стане готова."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Ще получите известие, когато Вашето копие за ранен достъп до мрежовата защита стане готово."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Отворете поканата"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Мрежовата защита е готова!"; +"network-protection.waitlist.notification.title" = "Приложението DuckDuckGo VPN е готово!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Вашата покана е готова!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Включване в списък с чакащи за личен адрес"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Неуспешно свързване на мрежовата защита. Моля, опитайте отново по-късно."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "Често задавани въпроси за DuckDuckGo VPN"; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Мрежовата защита е прекъсната. Извършва се опит за повторно свързване..."; + /* 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" = "Каним Ви да изпробвате мрежовата защита"; +"network.protection.invite.dialog.title" = "Каним Ви да изпробвате DuckDuckGo VPN"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Отваряне на VPN"; /* 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 - %@"; +"network.protection.status.connected.format" = "Свързан · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Свържете се, за да защитите всичките си устройства\nИнтернет трафик."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Целият интернет трафик на устройството е защитен\nчрез VPN."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "DuckDuckGo VPN е изключен"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "DuckDuckGo VPN е включен"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Управление"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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" = "Трафикът на устройството се маршрутизира през %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Включване на известията"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Разрешете на DuckDuckGo да Ви уведомява, ако връзката бъде прекъсната или състоянието на VPN се промени."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "За нас"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Получавайте известия при прекъсване на връзката или промяна на състоянието на VPN."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "Известия за VPN"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Обем от данни"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Можете да разрешите локалният трафик да заобикаля VPN услугата при свързване с устройства в локалната мрежа, като принтер например."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Свързано местоположение"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "%d града"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Най-близко)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Автоматично се свързваме с най-близкия сървър, който можем да намерим."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Избрано местоположение"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "Известия за VPN"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Най-близко местоположение"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "Нашата VPN функция използва Secure DNS, за да запази поверителността на Вашата онлайн дейност, така че вашият интернет доставчик да не може да види какви уебсайтове посещавате."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Често задавани въпроси"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Споделяне на отзив за VPN"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "Настройки на VPN"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "ОК"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Защита на поверителността"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "Лого на DuckDuckGo"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "DuckDuckGo е независима компания, основана през 2008 г., за защита на личните данни в интернет за всеки, на когото му е омръзнало да бъде проследяван онлайн и иска лесно решение на проблема. Ние сме доказателство, че можете да получите реална и безкомпромисна защита на личните данни онлайн.\n\nБраузърът DuckDuckGo притежава функциите, които очаквате от един основен браузър, като отметки, раздели, пароли и много други, както и [редица мощни защити на поверителността](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/), които не се предлагат в повечето популярни браузъри по подразбиране. Този уникален и комплексен набор от защити на поверителността предлага сигурност при онлайн дейностите – търсене, сърфиране, изпращане на имейли и др.\n\nЗа да работят, нашите защити на поверителността не изискват да имате технически познания или да се извършвате сложни настройки. Необходимо е да използвате браузъра DuckDuckGo на всички Ваши устройства и ще получите поверителност по подразбиране.\n\nНо ако *наистина* искате да надникнете зад кулисите, и да разберете как работят защитите на поверителността на DuckDuckGo, можете да намерите повече информация на нашите [страници за помощ](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Достъпност"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Добавяне на приложението към панела"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Добавяне на приспособлението към началния екран"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Позиция на адресната лента"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Адресна лента"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Показване на пълния адрес на сайта"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Заключване на приложение"; /* Section footer Autolock description */ -"settings.autolock.description" = "Ако сте задали пръстов отпечатък, лицево разпознаване или системна парола, ще бъдете приканени да отключите приложението при отваряне."; +"settings.autolock.description" = "Ако сте активирали пръстов отпечатък, лицево разпознаване или системна парола, ще бъдете приканени да отключите приложението при отваряне."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Автоматично изчистване на данните"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Защита от изскачащи прозорци за бисквитки"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo ще се опита да избере най-поверителните възможни настройки и ще скрие тези изскачащи прозорци вместо Вас.\n[Научете повече](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Управление на прозорци за бисквитки"; /* Settings title for the customize section */ "settings.customize" = "Персонализиране"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Задаване като браузър по подразбиране"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Изчистване на данни"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "Защита на имейл"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Браузър по подразбиране"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Деактивиране на автоматично попълване с Email Protection"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo на други платформи"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Блокирайте имейл тракерите и скрийте своя адрес, без да променяте имейл доставчика си.\n[Научете повече](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Ако излезете от своя акаунт за Email Protection, автоматичното попълване на Duck Address в този браузър ще бъде деактивирано. Все още можете да използвате тези адреси и да получавате препратени имейли както обикновено."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Блокирайте имейл тракерите и скрийте своя адрес"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Активиране на Email Protection"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Активиране на гласово търсене"; + /* Settings cell for Feedback */ "settings.feedback" = "Споделяне на отзив"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Огнеустойчиви сайтове"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Общо"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Глобален контрол на поверителността (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Клавиатура"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Позволете на DuckDuckGo да управлява изскачащите прозорци за съгласие за бисквитки"; + /* Settings screen cell text for passwords */ "settings.logins" = "Пароли"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Основни настройки"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Управление на акаунта"; + /* Settings title for the 'More' section */ "settings.more" = "Още от DuckDuckGo"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Още настройки за търсене"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Персонализирайте езика, региона и др."; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Следващи стъпки"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Поверителност"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "поверително търсене"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "DuckDuckGo Private Search е търсачката по подразбиране, затова можете да търсите в мрежата, без да бъдете проследявани."; + +/* Header of settings related to search */ +"settings.search.settings" = "Настройки за търсене"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Задайте позицията на адресната лента"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Поддръжка"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Синхронизиране и архивиране"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Поверително гласово търсене"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Защита от проследяване в мрежата"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo автоматично блокира скритите тракери, докато сърфирате в мрежата.\n[Научете повече](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Изпращане на доклад"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Кой уебсайт е повреден?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Активиране на абонамент"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Достъп до Вашия абонамент за Privacy Pro чрез имейл адрес."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Използвайте абонамента си на други устройства"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Вашият абонамент е закупен през Google Play Store. За да подновите абонамента си, отворете настройките за абонамент в Google Play Store на устройство, вписано в същия акаунт в Google, който е използван при първоначално закупуване на абонамента."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Абонаментни планове"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Назад към Настройки"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Имаме проблеми със свързването. Моля, опитайте отново по-късно."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Възникна някаква грешка"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Кодът за възстановяване и копиран в клипборда"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Изключване на синхронизирането?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Съжаляваме, но функцията за синхронизиране и архивиране в момента не е достъпна. Моля, опитайте отново по-късно."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Деактивирана защита на поверителността за %@"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Деактивирана защита на поверителността за %@ и изпратен отчет."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Активирана защита на поверителността за %@"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Отмени"; /* Voice-search footer note with on-device privacy warning */ -"voiceSearch.footer.note" = "Аудиото се обработва на устройството. То не се съхранява или споделя с никого, включително DuckDuckGo."; +"voiceSearch.footer.note" = "Добавете опция за поверително гласово търсене към адресната лента. Звукът не се съхранява и не се споделя с никого, включително с DuckDuckGo."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "Аудиото се обработва на устройството. То не се съхранява или споделя с никого, включително DuckDuckGo."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "ОК"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Благодарим Ви, че бяхте тестер! За да продължите да използвате VPN услугата, се абонирайте за DuckDuckGo Privacy Pro и вземете 40% отстъпка с промоционалния код THANKYOU\n\nОфертата може да бъде използвана за ограничен период от време само в десктоп версията на браузъра DuckDuckGo от американски тестери, които инсталират от duckduckgo.com/app"; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "Ранният достъп до DuckDuckGo VPN приключи"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Разрешаване на известия"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Добре дошли на наша страна!"; -/* 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"; diff --git a/DuckDuckGo/cs.lproj/Autocomplete.strings b/DuckDuckGo/cs.lproj/Autocomplete.strings index 390778bb9f..ba2a8f82ed 100644 --- a/DuckDuckGo/cs.lproj/Autocomplete.strings +++ b/DuckDuckGo/cs.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Štítek"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Štítek"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Žádné návrhy"; diff --git a/DuckDuckGo/cs.lproj/Localizable.strings b/DuckDuckGo/cs.lproj/Localizable.strings index 92bdbe66f6..5e519e844d 100644 --- a/DuckDuckGo/cs.lproj/Localizable.strings +++ b/DuckDuckGo/cs.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Spravovat"; +/* Button label for OK action */ +"action.ok" = "DOBŘE"; + /* Add action - button shown in alert */ "action.title.add" = "Přidat"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "Adrese URL zkopírována"; /* Delete action - button shown in alert */ -"action.title.delete" = "Smazat"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Zakázat ochranu soukromí"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Data na serveru se nedají smazat."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Pokud chceš tahle zařízení spárovat, vypni na jednom z nich synchronizaci a zálohování a na druhém klepni na Synchronizovat s jiným zařízením."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Tohle zařízení nejde ze synchronizace a zálohování odebrat."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Včera"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Správa vyskakovacích oken ohledně cookies"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Ne, děkuji"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Vypadá to, že tenhle web má vyskakovací okno pro souhlas se soubory cookie 👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Mám ho vyřešit za tebe? Můžu zkusit vybrat jen nezbytné soubory cookie, maximalizovat ochranu soukromí a podobná vyskakovací okna odteď skrývat."; - /* No comment provided by engineer. */ "dax.hide.button" = "Navždy skrýt tipy"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo pro iOS"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "Ochrana e-mailu"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Pořiď si DuckDuckGo pro Mac!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "VPN DuckDuckGo"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Zásady ochrany osobních údajů"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Přijmout a pokračovat"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Ochrana sítě je k dispozici zadarmo v rámci předběžného přístupu."; +"network-protection.waitlist.availability-disclaimer" = "VPN DuckDuckGo lze v rámci předběžného přístupu používat zdarma."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Přijmout a pokračovat"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "VPN vytvořená pro rychlost a jednoduchost ti zajistí další vrstvu ochrany na internetu. Při všech aktivitách na zařízení využívej šifrované připojení k internetu a skrývej svou polohu a IP adresu před navštěvovanými weby."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Přišla ti pozvánka – vyzkoušej ochranu sítě v předběžném přístupu!"; +"network-protection.waitlist.invited.title" = "Přišla vám pozvánka – vyzkoušejte předběžný přístup k VPN DuckDuckGo!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Zabezpeč své připojení pomocí ochrany sítě – kdykoli a kdekoli s VPN od DuckDuckGo."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Zapiš se na čekací listinu a my tě upozorníme, až budeš na řadě."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "Předběžný přístup k VPN"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Jsi v pořadníku!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Až bude tvoje pozvánka připravená, dáme ti vědět."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Až bude tvoje pozvánka k otestování funkce ochrany sítě připravená, dáme ti vědět."; +"network-protection.waitlist.notification-alert.description" = "Jakmile bude vaše pozvánka k otestování VPN DuckDuckGo připravená, dáme vám vědět."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Nech si poslat upozornění, až pro tebe bude funkce ochrany sítě dostupná v předběžném přístupu."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Otevřít pozvánku"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Ochrana sítě je připravená!"; +"network-protection.waitlist.notification.title" = "VPN DuckDuckGo VPN připravená!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Tvoje pozvánka je připravená!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Připojte se k soukromému pořadníku"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "Nejčastější dotazy ohledně VPN DuckDuckGo"; + +/* 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í..."; + /* 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" = "Přišla ti pozvánka k vyzkoušení ochrany sítě"; +"network.protection.invite.dialog.title" = "Zveme vás k vyzkoušení VPN DuckDuckGo"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Otevřít VPN"; /* 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 - %@"; +"network.protection.status.connected.format" = "Připojeno · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Připojte se a zabezpečte všechna svá zařízení\nInternetový provoz."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Veškerý internetový provoz zařízení je zabezpečený\n pomocí VPN."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "VPN DuckDuckGo je vypnutá"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "VPN DuckDuckGo je zapnutá"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Spravovat"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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 %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Zapnout oznámení"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Nech si od DuckDuckGo poslat upozornění, když se přeruší připojení nebo se změní stav VPN."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "O společnosti"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Nech si poslat upozornění, když se přeruší připojení nebo se změní stav VPN."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "Upozornění VPN"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Objem dat"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Místní provoz může obejít síť VPN a připojit se k zařízením v místní síti, třeba k tiskárně."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Připojené umístění"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "Měst: %d"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(nejbližší)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Automatické připojení k nejbližšímu nalezenému serveru."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Vybrané umístění"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "Oznámení sítě VPN"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Nejbližší umístění"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "Naše VPN používá systém Secure DNS, aby tvoje online aktivity zůstaly soukromé a tvůj poskytovatel internetu neviděl, jaké webové stránky navštěvuješ."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Často kladené otázky"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Podělte se o zpětnou vazbu k VPN"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "Nastavení sítě VPN"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "DOBŘE"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Ochrana osobních údajů"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "Logo DuckDuckGo"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "DuckDuckGo je nezávislá společnost založená v roce 2008, která se zabývá ochranou soukromí pro všechny, kdo už mají dost sledování na internetu a chtějí snadné řešení. Jsme důkazem, že skutečná ochrana soukromí na internetu nemusí mít kompromisy.\n\nProhlížeč DuckDuckGo má všechno, co od prohlížeče očekáváš, jako jsou záložky, karty, hesla a další funkce. A k tomu má víc než [desítku účinných funkcí na ochranu soukromí](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/), které většina oblíbených prohlížečů ve výchozím nastavení nenabízí. Tahle jedinečná komplexní sada na ochranu soukromí pomáhá chránit tvoje aktivity na internetu, ať už zrovna něco vyhledáváš, jen tak surfuješ, nebo posíláš e-maily.\n\nAby naše ochrana soukromí fungovala, nemusíš znát technické detaily ani řešit žádná složitá nastavení. Stačí přejít na prohlížeč DuckDuckGo ve všech zařízeních a dostaneš soukromí pro všechny své aktivity.\n\nJestli chceš nahlédnout pod pokličku, víc informací o tom, jak ochrana soukromí DuckDuckGo funguje, najdeš v naší [nápovědě](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Usnadnění"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Přidat aplikaci do docku"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Přidat widget na domovskou obrazovku"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Pozice adresního řádku"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Adresní řádek"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Zobrazovat celou adresu webu"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Zámek aplikace"; /* Section footer Autolock description */ -"settings.autolock.description" = "Pokud je nastaveno Touch ID, Face ID nebo přístupový kód k systému, budete při otevírání požádáni o odemknutí aplikace."; +"settings.autolock.description" = "Pokud je zapnuté Touch ID nebo Face ID, případně nastavený přístupový kód k systému, zobrazí se při otevírání aplikace výzva k jejímu odemknutí."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Automaticky vymazat data"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Ochrana před vyskakovacími okny ohledně cookies"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo se pokusí zvolit nastavení s maximálním zachováním soukromí a tato vyskakovací okna bude skrývat.\n[Více informací](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Správa vyskakovacích oken ohledně cookies"; /* Settings title for the customize section */ "settings.customize" = "Přizpůsobit"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Nastavit jako výchozí prohlížeč"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Vymazání dat"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "Ochrana e-mailu"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Výchozí prohlížeč"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Vypnout automatické vyplnění ve službě Email Protection"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo na jiných platformách"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Blokuje e-mailové trackery a skryje tvou adresu bez nutnosti přepínat poskytovatele e-mailu.\n[Další informace](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Odhlášením z účtu Email Protection vypneš automatické vyplňování Duck Address v tomhle prohlížeči. Tyhle adresy budeš moct nadále používat a dostávat na ně přeposílané e-maily jako obvykle."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Blokování trackerů v e-mailu a skrytí adresy"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Povol funkci Email Protection"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Povolit hlasové vyhledávání"; + /* Settings cell for Feedback */ "settings.feedback" = "Podělte se o zpětnou vazbu"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Stránky s ochranou"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Hlavní"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Globální kontrola ochrany osobních údajů (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Klávesnice"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Nechat správu oken pro souhlas s cookies na DuckDuckGo"; + /* Settings screen cell text for passwords */ "settings.logins" = "Hesla"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Hlavní nastavení"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Správa účtu"; + /* Settings title for the 'More' section */ "settings.more" = "Další od DuckDuckGo"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Další nastavení vyhledávání"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Přizpůsobte si jazyk, region a další"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Další kroky"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Soukromí"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Soukromé vyhledávání"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "DuckDuckGo Private Search je tvůj výchozí vyhledávač, takže můžeš hledat na webu, aniž by tě někdo sledoval."; + +/* Header of settings related to search */ +"settings.search.settings" = "Nastavení vyhledávání"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Nastavte pozici adresního řádku"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Podpora"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Synchronizace a zálohování"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Soukromé hlasové vyhledávání"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Ochrana před sledováním na webu"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo automaticky blokuje skryté trackery při procházení webu.\n[Více informací](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Odešlete zprávu"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Které webové stránky jsou poškozené?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Aktivace předplatného"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Získejte přístup k předplatnému Privacy Pro prostřednictvím e-mailové adresy."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Používání předplatného na jiných zařízeních"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Předplatné bylo zakoupeno prostřednictvím obchodu Google Play. Předplatné se dá obnovit tak, že otevřeš nastavení předplatného obchodu Google Play na zařízení přihlášeném ke stejnému účtu Google, který byl původně použit k nákupu předplatného."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Plány předplatného"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Zpět do nastavení"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Máme potíže s připojením. Zkus to znovu později."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Něco se pokazilo"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Kód pro obnovení je zkopírovaný do schránky"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Vypnout synchronizaci?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Omlouváme se, ale funkce synchronizace a zálohování teď není dostupná. Zkus to znovu později."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Ochrana deaktivována u domény %@"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "U domény %@ byla deaktivována ochrana osobních údajů a byla odeslána zpráva."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Ochrana aktivována u domény %@"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Zrušit"; /* 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."; +"voiceSearch.footer.note" = "Přidej si na adresní řádek funkci soukromého hlasového vyhledávání. Zvuk nikde neukládáme a s nikým ho nesdílíme. Ani DuckDuckGo se k němu nedostane."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "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."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "DOBŘE"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Děkujeme za ochotu pomoct nám s testováním! Pokud chceš používat VPN i nadále, předplať si službu DuckDuckGo Privacy Pro. S akčním kódem THANKYOU získáš 40% slevu.\n\nTesteři z USA, kteří instalují z webu duckduckgo.com/app, můžou nabídku uplatnit omezenou dobu pouze ve verzi prohlížeče DuckDuckGo pro počítače."; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "Předběžný přístup k VPN DuckDuckGo skončil"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Povolit oznámení"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Vítejte na Kačeří straně!"; -/* 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"; diff --git a/DuckDuckGo/da.lproj/Autocomplete.strings b/DuckDuckGo/da.lproj/Autocomplete.strings index b512fc0ad2..3ddfbc3908 100644 --- a/DuckDuckGo/da.lproj/Autocomplete.strings +++ b/DuckDuckGo/da.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Etiket"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Etiket"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Ingen forslag"; diff --git a/DuckDuckGo/da.lproj/Localizable.strings b/DuckDuckGo/da.lproj/Localizable.strings index 7f2cbec02e..3f7cc6948c 100644 --- a/DuckDuckGo/da.lproj/Localizable.strings +++ b/DuckDuckGo/da.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Administrer"; +/* Button label for OK action */ +"action.ok" = "Okay"; + /* Add action - button shown in alert */ "action.title.add" = "Tilføj"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "URL kopieret"; /* Delete action - button shown in alert */ -"action.title.delete" = "Slet"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Deaktiver Beskyttelse af privatlivet"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Kan ikke slette data på serveren."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "For at parre disse enheder skal du slå synkronisering og sikkerhedskopiering fra på den ene enhed og derefter trykke på \"Synkroniser med en anden enhed\" på den anden enhed."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Denne enhed kunne ikke fjernes fra synkronisering og sikkerhedskopiering."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "I går"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Administrer cookie pop op-vinduer"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Nej tak."; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Det ser ud til, at dette websted har et pop op-vindue med samtykke til brug af cookies👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Skal jeg tage mig af dem for dig? Jeg kan forsøge at minimere cookies, maksimere privatlivets fred og skjule pop op-vinduer som disse."; - /* No comment provided by engineer. */ "dax.hide.button" = "Skjul tip for evigt"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo til iOS"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "E-mailbeskyttelse"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Prøv DuckDuckGo til Mac!"; -/* 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" = "Leder du efter Windows-versionen?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "DuckDuckGo VPN"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Privatlivspolitik"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Accepter og fortsæt"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Netværksbeskyttelse er gratis at bruge under den tidlige adgang."; +"network-protection.waitlist.availability-disclaimer" = "DuckDuckGo VPN er gratis at bruge under den tidlige adgang."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Acceptér og fortsæt"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Få et ekstra lag af beskyttelse online med en VPN, der er bygget til hastighed og enkelhed. Kryptér din internetforbindelse på hele din enhed, og skjul din placering og IP-adresse fra websteder, du besøger."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Du er inviteret til at prøve \n Network Protection med tidlig adgang!"; +"network-protection.waitlist.invited.title" = "Du er inviteret til at prøve\nDuckDuckGo VPN med tidlig adgang!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Beskyt din forbindelse når som helst og hvor som helst med Network Protection, VPN'en fra DuckDuckGo."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Tilmeld dig ventelisten – vi giver dig besked, når det er din tur."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "Tidlig adgang til VPN"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Du er på listen!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Vi giver dig besked, når din invitation er klar."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Vi sender dig en besked, når din invitation til at teste Network Protection er klar."; +"network-protection.waitlist.notification-alert.description" = "Vi sender dig en besked, når din invitation til at teste DuckDuckGo VPN er klar."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Få besked, når dit eksemplar af Network Protection med tidlig adgang er klar."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Åbn din invitation"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Network Protection er klar!"; +"network-protection.waitlist.notification.title" = "DuckDuckGo VPN er klar!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Din invitation er klar!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Slut dig til den private venteliste"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "Ofte stillede spørgsmål om DuckDuckGo VPN"; + +/* 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 ..."; + /* 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" = "Du er inviteret til at prøve Network Protection"; +"network.protection.invite.dialog.title" = "Du er inviteret til at prøve DuckDuckGo VPN"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Åbn VPN"; /* 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 - %@"; +"network.protection.status.connected.format" = "Forbundet · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Opret forbindelse for at sikre al din enheds\ninternettrafik."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Al internettrafik på enheden er sikret\ngennem VPN-forbindelsen."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "DuckDuckGo VPN er slået fra"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "DuckDuckGo VPN er tændt"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Administrer"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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 %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Slå notifikationer til"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Tillad DuckDuckGo at give dig besked, hvis din forbindelse falder ud, eller VPN-status ændres."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "Omkring"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Få besked, hvis din forbindelse falder ud, eller VPN-status ændres."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "VPN-advarsler"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Datamængde"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Lad lokal trafik omgå VPN'en og oprette forbindelse til enheder på dit lokale netværk, f.eks. en printer."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Tilsluttet placering"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "%d byer"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Nærmeste)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Opret automatisk forbindelse til den nærmeste server, vi kan finde."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Valgt placering"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "VPN-meddelelser"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Nærmeste placering"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "Vores VPN bruger Secure DNS til at holde din onlineaktivitet privat, så din internetudbyder ikke kan se, hvilke hjemmesider du besøger."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Ofte stillede spørgsmål"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Giv feedback om VPN"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "VPN-indstillinger"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "Okay"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Beskyttelse af privatlivet"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "DuckDuckGo-logo"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "DuckDuckGo er en uafhængig virksomhed, grundlagt i 2008, der beskytter privatlivet på internettet for alle, der er trætte af at blive sporet online og ønsker en nem løsning. Vi er bevis på, at du kan få ægte beskyttelse af privatlivet online uden at gå på kompromis.\n\nDuckDuckGo-browseren kommer med de funktioner, du forventer af en standardbrowser, som bogmærker, faner, adgangskoder og meget mere, plus over [et dusin kraftfulde beskyttelser af privatlivet](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/), som ikke tilbydes i de fleste populære browsere som standard. Dette unikke og omfattende sæt af beskyttelsesfunktioner hjælper med at beskytte dine onlineaktiviteter, fra søgning til browsing, e-mailing og meget mere.\n\nVores beskyttelse af privatlivet fungerer, uden at du behøver at vide noget om de tekniske detaljer eller håndtere komplicerede indstillinger. Det eneste, du skal gøre, er at skifte din browser til DuckDuckGo på alle dine enheder, så får du privatliv som standard.\n\nMen hvis du gerne vil have et kig under motorhjelmen, kan du finde flere oplysninger om, hvordan DuckDuckGos beskyttelse af privatlivet fungerer, på vores [hjælpesider](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Tilgængelighed"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Føj appen til din dock"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Tilføj widget til startskærmen"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Placering af adresselinje"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Adresselinje"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Vis hele webstedsadressen"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Applikationslås"; /* Section footer Autolock description */ -"settings.autolock.description" = "Hvis Touch ID, Face ID eller en systemadgangskode er indstillet, bliver du bedt om at låse appen op, når du åbner."; +"settings.autolock.description" = "Hvis Touch ID, Face ID eller en systemadgangskode er aktiveret, bliver du bedt om at låse appen op, når du åbner den."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Ryd data automatisk"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Beskyttelse mod pop op-beskeder om cookies"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo vil forsøge at vælge de mest private indstillinger og skjule disse pop op-vinduer for dig.\n[Læs mere](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Administrer cookie pop op-vinduer"; /* Settings title for the customize section */ "settings.customize" = "Tilpas"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Angiv som standardbrowser"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Datarydning"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "E-mailbeskyttelse"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Standardbrowser"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Deaktiver automatisk udfyldning med Email Protection"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo på andre platforme"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Blokér e-mailtrackere, og skjul din adresse uden at ændre din e-mailudbyder.\n[Læs mere](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Hvis du logger af din Email Protection-konto, deaktiveres automatisk udfyldning af Duck Address i denne browser. Du kan stadig bruge disse adresser og modtage videresendte e-mails som normalt."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Bloker e-mailtrackere, og skjul din adresse"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Aktivér Email Protection"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Aktivér stemmesøgning"; + /* Settings cell for Feedback */ "settings.feedback" = "Del feedback"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Brandsikre websteder"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Generelt"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Global Privacy Control (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Tastatur"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Lad DuckDuckGo administrere pop op-vinduer med samtykke til brug af cookies"; + /* Settings screen cell text for passwords */ "settings.logins" = "Adgangskoder"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Generelle indstillinger"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Administrer konto"; + /* Settings title for the 'More' section */ "settings.more" = "Mere fra DuckDuckGo"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Flere indstillinger for søgning"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Tilpas sprog, område med mere"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Næste trin"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Privatliv"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Privat søgning"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "DuckDuckGo Private Search er din standardsøgemaskine, så du kan søge på nettet uden at blive sporet."; + +/* Header of settings related to search */ +"settings.search.settings" = "Indstillinger for søgning"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Angiv placeringen af adresselinjen"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Hjælp"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Synkronisering og sikkerhedskopiering"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Privat stemmesøgning"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Beskyttelse mod sporing på nettet"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo blokerer automatisk skjulte trackere, når du surfer på nettet.\n[Læs mere](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Indsend rapport"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Hvilket websted er ødelagt?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Aktivér abonnement"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Få adgang til dit Privacy Pro-abonnement via en e-mailadresse."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Brug dit abonnement på andre enheder"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Dit abonnement blev købt gennem Google Play-butikken. Hvis du vil forny dit abonnement, skal du åbne abonnementsindstillingerne for Google Play-butikken på en enhed, der er logget ind på den samme Google-konto, som oprindeligt blev brugt til at købe dit abonnement."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Abonnementer"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Tilbage til indstillinger"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Vi har problemer med at få forbindelse. Prøv igen senere."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Noget gik galt"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Gendannelseskode kopieret til udklipsholder"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Slå synkronisering fra?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Beklager, men synkronisering og sikkerhedskopiering er ikke tilgængelig i øjeblikket. Prøv igen senere."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Beskyttelse af privatlivet deaktiveret for %@"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Beskyttelse af privatlivet er deaktiveret for %@, og rapport sendt."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Beskyttelse af privatlivet aktiveret for %@"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Annullér"; /* Voice-search footer note with on-device privacy warning */ -"voiceSearch.footer.note" = "Lyden behandles på enheden. Den hverken gemmes eller deles med nogen, inklusive DuckDuckGo."; +"voiceSearch.footer.note" = "Tilføj privat stemmesøgningsmulighed til adresselinjen Lyden bliver ikke gemt eller delt med nogen, heller ikke DuckDuckGo."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "Lyden behandles på enheden. Den hverken gemmes eller deles med nogen, inklusive DuckDuckGo."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "Okay"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Tak, fordi du vil være tester! For at fortsætte med at bruge VPN'en skal du abonnere på DuckDuckGo Privacy Pro og få 40 % rabat med kampagnekoden THANKYOU\n\nTilbuddet kan kun indløses i en begrænset periode i desktopversionen af DuckDuckGo-browseren af testere i USA, der installerer fra duckduckgo.com/app"; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "Tidlig adgang til DuckDuckGo VPN er slut"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Tillad meddelelser"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Velkommen til Duck siden"; -/* Title for the Windows waitlist notification */ -"windows-waitlist.available.notification.title" = "Prøv DuckDuckGo til Windows!"; - -/* Description on the invite screen */ -"windows-waitlist.invite-screen.step-1.description" = "Besøg denne URL på din Windows-computer for at downloade:"; - -/* Description on the invite screen */ -"windows-waitlist.invite-screen.step-2.description" = "Åbn DuckDuckGo Installer i mappen Overførsler, vælg Installer, og indtast derefter din invitationskode."; - -/* Subtitle for the Windows Waitlist Invite screen */ -"windows-waitlist.invite-screen.subtitle" = "Er du klar til at bruge DuckDuckGo på Windows?"; - /* Title for the Windows waitlist button redirecting to Mac waitlist */ "windows-waitlist.join-waitlist-screen.mac-waitlist" = "Leder du efter Mac-versionen?"; -/* Title for the Join Windows Waitlist screen */ -"windows-waitlist.join-waitlist-screen.try-duckduckgo-for-windows" = "Få tidlig adgang til at prøve DuckDuckGo til Windows!"; - -/* Message for the alert to confirm enabling notifications */ -"windows-waitlist.joined.no-notification.get-notification-confirmation-message" = "Vi sender dig en meddelelse, når dit eksemplar af DuckDuckGo til Windows er klar til download. "; - -/* Label text for the Joined Waitlist state with notifications declined */ -"windows-waitlist.joined.notifications-declined" = "Din invitation til at prøve DuckDuckGo til Windows sendes hertil. Kom snart tilbage. Vi kan også sende dig en meddelelse, når det er din tur."; - -/* Label text for the Joined Waitlist state with notifications enabled */ -"windows-waitlist.joined.notifications-enabled" = "Vi sender dig en meddelelse, når dit eksemplar af DuckDuckGo til Windows er klar til download."; - /* Title for the settings subtitle */ "windows-waitlist.settings.browse-privately" = "Browse privat med vores app til Windows"; -/* Message used when sharing to iMessage. Parameter is an eight digit invite code. */ -"windows-waitlist.share-sheet.invite-code-message" = "Du er inviteret!\n\nEr du klar til at bruge DuckDuckGo på Windows?\n\nTrin 1\nBesøg denne URL på din Windows-computer for at downloade:\nhttps://duckduckgo.com/windows\n\nTrin 2\nÅbn DuckDuckGo Installer i mappen Overførsler, vælg Installer, og indtast derefter din invitationskode.\n\nInvitationskode: %@"; - /* Message used when sharing to iMessage */ "windows-waitlist.share-sheet.message" = "Er du klar til at begynde at browse privat på Windows?\n\nBesøg denne URL på din Windows-computer for at downloade:\nduckduckgo.com/windows"; diff --git a/DuckDuckGo/de.lproj/Autocomplete.strings b/DuckDuckGo/de.lproj/Autocomplete.strings index be98057b10..4621e113a5 100644 --- a/DuckDuckGo/de.lproj/Autocomplete.strings +++ b/DuckDuckGo/de.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Label"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Label"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Keine Vorschläge"; diff --git a/DuckDuckGo/de.lproj/Localizable.strings b/DuckDuckGo/de.lproj/Localizable.strings index daaf603fec..7adf30eaa1 100644 --- a/DuckDuckGo/de.lproj/Localizable.strings +++ b/DuckDuckGo/de.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Verwalten"; +/* Button label for OK action */ +"action.ok" = "OK"; + /* Add action - button shown in alert */ "action.title.add" = "Hinzufügen"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "URL wurde kopiert"; /* Delete action - button shown in alert */ -"action.title.delete" = "Löschen"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Datenschutz deaktivieren"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Daten auf dem Server können nicht gelöscht werden."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Um diese Geräte zu koppeln, deaktiviere „Synchronisieren und sichern“ auf einem Gerät und tippe dann auf dem anderen Gerät auf „Mit anderem Gerät synchronisieren“."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Dieses Gerät kann nicht aus „Synchronisieren und sichern“ entfernt werden."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Gestern"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Cookie-Pop-ups verwalten"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Nein, danke"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Sieht so aus, als hätte diese Website ein Cookie-Zustimmungs-Pop-up👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Soll ich das für dich erledigen? Ich kann versuchen, Cookies zu minimieren, den Datenschutz zu maximieren und Pop-ups wie diese auszublenden."; - /* No comment provided by engineer. */ "dax.hide.button" = "Tipps für immer ausblenden"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo für iOS"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "E-Mail-Schutz"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Hole dir DuckDuckGo für Mac!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "DuckDuckGo-VPN"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Datenschutzrichtlinie"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Zustimmen und fortfahren"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Die Nutzung von Network Protection ist während der Early-Access-Phase kostenlos."; +"network-protection.waitlist.availability-disclaimer" = "Die Nutzung von DuckDuckGo-VPN ist während der Early-Access-Phase kostenlos."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Zustimmen und fortfahren"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Erhalte einen zusätzlichen Schutz im Internet mit einem VPN, das auf Geschwindigkeit und Einfachheit ausgelegt ist. Verschlüssle deine Internetverbindung über dein gesamtes Gerät und verstecke deinen Standort und deine IP-Adresse vor den Websites, die du besuchst."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Du bist eingeladen, Network Protection frühzeitig zu testen!"; +"network-protection.waitlist.invited.title" = "Du bist eingeladen, DuckDuckGo-VPN frühzeitig zu testen!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Sichere deine Verbindung jederzeit und überall mit Network Protection, dem VPN von DuckDuckGo."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Trage dich in die Warteliste ein, und wir benachrichtigen dich, wenn du an der Reihe bist."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "Frühzeitiger VPN-Zugang"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Du stehst auf der Liste!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Wir werden dich benachrichtigen, wenn deine Einladung vorliegt."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Wir schicken dir eine Benachrichtigung, wenn deine Einladung zum Testen von Network Protection bereit ist."; +"network-protection.waitlist.notification-alert.description" = "Wir schicken dir eine Benachrichtigung, wenn deine Einladung zum Testen von DuckDuckGo-VPN bereit ist."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Erhalte eine Benachrichtigung, wenn dein Exemplar von Network Protection Early Access fertig ist."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Öffne deine Einladung"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Network Protection ist bereit!"; +"network-protection.waitlist.notification.title" = "DuckDuckGo-VPN ist da!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Deine Einladung liegt vor!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Auf die private Warteliste setzen"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "Häufig gestellte Fragen zu DuckDuckGo-VPN"; + +/* 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 ..."; + /* 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" = "Du bist herzlich eingeladen, Network Protection auszuprobieren"; +"network.protection.invite.dialog.title" = "Du bist herzlich eingeladen, DuckDuckGo-VPN auszuprobieren"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "VPN öffnen"; /* 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 - %@"; +"network.protection.status.connected.format" = "Verbunden · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Stell eine Verbindung her, um den gesamten Internetverkehr deines Geräts zu sichern."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Der gesamte Internetverkehr des Geräts wird über das VPN gesichert."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "DuckDuckGo-VPN ist Aus"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "DuckDuckGo-VPN ist An"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Verwalten"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Benachrichtigungen aktivieren"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Erlaube DuckDuckGo, dich zu benachrichtigen, wenn deine Verbindung abbricht oder sich dein VPN-Status ändert."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "Über"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Lass dich benachrichtigen, wenn deine Verbindung abbricht oder sich der VPN-Status ändert."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "VPN-Benachrichtigungen"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Datenvolumen"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Lass den lokalen Datenverkehr das VPN umgehen und dich mit Geräten in deinem lokalen Netzwerk verbinden, beispielsweise einem Drucker."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Verbundener Standort"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "%d Städte"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Nächstgelegen)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Verbinde dich automatisch mit dem nächstgelegenen Server, den wir finden können."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Ausgewählter Standort"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "VPN-Benachrichtigungen"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Nächstgelegener Standort"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "Unser VPN nutzt Secure DNS, um deine Online-Aktivitäten geheim zu halten, damit dein Internetanbieter nicht sehen kann, welche Websites du besuchst."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Häufig gestellte Fragen"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "VPN-Feedback teilen"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "VPN-Einstellungen"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "OK"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Datenschutz"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "DuckDuckGo-Logo"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "DuckDuckGo ist die unabhängige Firma für Internet-Datenschutz, die 2008 für alle gegründet wurde, die es leid sind, online getrackt zu werden, und eine einfache Lösung suchen. Wir sind der Beweis, dass du echten Online-Datenschutz ohne Kompromisse erhalten kannst.\n\nDer DuckDuckGo-Browser bietet die Funktionen, die von einem alltagstauglichen Browser erwartet werden, wie Lesezeichen, Tabs, Passwörter und mehr, sowie über [ein Dutzend leistungsstarke Datenschutzmaßnahmen](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/), die in den meisten gängigen Browsern nicht standardmäßig angeboten werden. Dieser einzigartige, umfassende Datenschutz hilft dir, deine Online-Aktivitäten zu schützen – von der Suche über das Browsen bis hin zu E-Mails und vielem mehr.\n\nUnser Datenschutz funktioniert, ohne dass du etwas über die technischen Details wissen oder dich mit komplizierten Einstellungen auseinandersetzen musst. Du musst lediglich den Browser auf allen deinen Geräten auf DuckDuckGo umstellen und schon erhältst du echte Privatsphäre als Standard.\n\nWenn du jedoch einen Blick unter die Haube werfen möchtest, findest du auf unseren [Hilfeseiten](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/) weitere Informationen darüber, wie der Datenschutz bei DuckDuckGo funktioniert."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Barrierefreiheit"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "App zum Dock hinzufügen"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Widget zum Startbildschirm hinzufügen"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Position der Adressleiste"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Adresszeile"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Vollständige Website-Adresse anzeigen"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Anwendungssperre"; /* Section footer Autolock description */ -"settings.autolock.description" = "Wenn Touch ID, Face ID oder ein Systempasswort eingestellt sind, wirst du aufgefordert, die App beim Öffnen zu entsperren."; +"settings.autolock.description" = "Wenn Touch ID, Face ID oder ein Systempasswort aktiviert ist, wirst du aufgefordert, die App beim Öffnen zu entsperren."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Daten automatisch löschen"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Cookie-Pop-up-Schutz"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo wird versuchen, die privatesten Einstellungen zu wählen und diese Pop-ups für dich auszublenden.\n[Mehr erfahren](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Cookie-Pop-ups verwalten"; /* Settings title for the customize section */ "settings.customize" = "Anpassen"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Als Standard-Browser festlegen"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Datenlöschung"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "E-Mail-Schutz"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Standard-Browser"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Autovervollständigen für den E-Mail-Schutz deaktivieren"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo auf anderen Plattformen"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "E-Mail-Tracker blockieren und deine Adresse verbergen, ohne dafür den E-Mail-Anbieter wechseln zu müssen.\n[Mehr erfahren](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Wenn du dich von deinem Email Protection Konto abmeldest, wird das automatische Ausfüllen der Duck Address in diesem Browser deaktiviert. Du kannst diese Adressen weiterhin verwenden und wie gewohnt weitergeleitete E-Mails erhalten."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "E-Mail-Tracker blockieren und deine Adresse verbergen"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Email Protection aktivieren"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Sprachsuche aktivieren"; + /* Settings cell for Feedback */ "settings.feedback" = "Feedback teilen"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Feuerfeste Seiten"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Allgemein"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Global Privacy Control (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Tastatur"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Lasse Cookie-Zustimmungs-Popups von DuckDuckGo verwalten"; + /* Settings screen cell text for passwords */ "settings.logins" = "Passwörter"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Haupteinstellungen"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Konto verwalten"; + /* Settings title for the 'More' section */ "settings.more" = "Mehr von DuckDuckGo"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Weitere Sucheinstellungen"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Pass deine Sprache, Region und mehr an"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Nächste Schritte"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Privatsphäre"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Private Suche"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "DuckDuckGo Private Search ist deine Standardsuchmaschine – du kannst also das Web durchsuchen, ohne getrackt zu werden."; + +/* Header of settings related to search */ +"settings.search.settings" = "Sucheinstellungen"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Position deiner Adressleiste festlegen"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Unterstützung"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Synchronisieren und sichern"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Private Sprachsuche"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Web Tracking Protection"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo blockiert beim Durchsuchen des Internets automatisch ausgeblendete Tracker.[Mehr erfahren](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Bericht senden"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Welche Website ist fehlerhaft?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Abonnement aktivieren"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Greife über eine E-Mail-Adresse auf dein Privacy Pro Abonnement zu."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Nutze dein Abonnement auf anderen Geräten"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Dein Abonnement wurde über den Google Play Store erworben. Um dein Abonnement zu verlängern, öffne bitte die Abonnementeinstellungen im Google Play Store auf einem Gerät, das mit demselben Google-Konto angemeldet ist, mit dem du dein Abonnement ursprünglich gekauft hast."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Abonnementpläne"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Zurück zu den Einstellungen"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Wir haben Probleme mit der Verbindung. Bitte versuche es zu einem späteren Zeitpunkt erneut."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Etwas ist schiefgelaufen"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Wiederherstellungscode in Zwischenablage kopiert"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Synchronisierung deaktivieren?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Leider ist Synchronisieren und sichern derzeit nicht verfügbar. Bitte versuche es zu einem späteren Zeitpunkt erneut."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Datenschutz für %@ deaktivieren"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Datenschutz für %@ deaktiviert und Bericht gesendet."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Datenschutz für %@ aktivieren"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Abbrechen"; /* 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."; +"voiceSearch.footer.note" = "Füge die Option „Private Sprachsuche“ zur Adressleiste hinzu.Audio wird weder gespeichert noch an Dritte weitergegeben, auch nicht an DuckDuckGo."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "Audio wird auf dem Gerät verarbeitet. Es wird weder gespeichert noch an Dritte weitergegeben, auch nicht an DuckDuckGo."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "OK"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Danke, dass du ein Tester bist! Um das VPN weiter zu nutzen, abonniere DuckDuckGo Privacy Pro und erhalte 40 % Rabatt mit dem Promo-Code THANKYOU\n\nDas Angebot gilt nur für begrenzte Zeit in der Desktop-Version des DuckDuckGo-Browsers für US-Tester, die über die URL duckduckgo.com/app installieren"; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "Der DuckDuckGo VPN-Vorabzugang ist vorbei"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Benachrichtigungen zulassen"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Willkommen auf der Duck-len Seite!"; -/* 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"; diff --git a/DuckDuckGo/el.lproj/Autocomplete.strings b/DuckDuckGo/el.lproj/Autocomplete.strings index d2a3528d1a..6990a6f6b6 100644 --- a/DuckDuckGo/el.lproj/Autocomplete.strings +++ b/DuckDuckGo/el.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Label"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Label"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Δεν υπάρχουν προτάσεις"; diff --git a/DuckDuckGo/el.lproj/Localizable.strings b/DuckDuckGo/el.lproj/Localizable.strings index 0e20aaf0f8..0e456044e2 100644 --- a/DuckDuckGo/el.lproj/Localizable.strings +++ b/DuckDuckGo/el.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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" = "Επεξεργασία"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Διαχείριση"; +/* Button label for OK action */ +"action.ok" = "Εντάξει"; + /* Add action - button shown in alert */ "action.title.add" = "Προσθήκη"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "Η διεύθυνση URL αντιγράφτηκε"; /* Delete action - button shown in alert */ -"action.title.delete" = "Διαγραφή"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Απενεργοποίηση Προστασίας προσωπικών δεδομένων"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Δεν είναι δυνατή η διαγραφή δεδομένων στον διακομιστή."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Για να αντιστοιχίσετε τις συσκευές αυτές, απενεργοποιήστε τη λειτουργία Συγχρονισμός και δημιουργία αντιγράφων ασφαλείας στη μία συσκευή και έπειτα πατήστε «Συγχρονισμός με άλλη συσκευή» στην άλλη συσκευή."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Δεν είναι δυνατή η κατάργηση αυτής της συσκευής από τη λειτουργία Συγχρονισμός και δημιουργία αντιγράφων ασφαλείας."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Χθες"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Διαχείριση αναδυόμενων παραθύρων cookies"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Όχι, ευχαριστώ"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Φαίνεται ότι αυτός ο ιστότοπος έχει ένα αναδυόμενο παράθυρο συναίνεσης για cookies👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Θέλετε να τα διαχειριστώ αυτά για εσάς; Μπορώ να προσπαθήσω να ελαχιστοποιήσω τα cookies, να μεγιστοποιήσω το απόρρητο και να αποκρύψω αναδυόμενα παράθυρα όπως αυτά."; - /* No comment provided by engineer. */ "dax.hide.button" = "Απόκρυψη συμβουλών για πάντα"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo για iOS"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "Προστασία email"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Αποκτήστε το DuckDuckGo για Mac!"; -/* 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;"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "DuckDuckGo VPN"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Πολιτική ιδιωτικού απορρήτου"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Συμφωνώ και συνεχίζω"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Η Προστασία δικτύου παρέχεται δωρεάν για χρήση κατά την πρώιμη πρόσβαση."; +"network-protection.waitlist.availability-disclaimer" = "Το DuckDuckGo VPN παρέχεται δωρεάν προς χρήση κατά τη διάρκεια της πρώιμης πρόσβασης."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Συμφωνώ και συνεχίζω"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Αποκτήστε ένα επιπλέον επίπεδο προστασίας στο διαδίκτυο με το VPN που δημιουργήθηκε για ταχύτητα και απλότητα. Κρυπτογραφήστε τη σύνδεσή σας στο διαδίκτυο στο σύνολο της συσκευής σας και αποκρύψτε την τοποθεσία και τη διεύθυνση IP σας από τους ιστότοπους που επισκέπτεστε."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Έχετε προσκληθεί να δοκιμάσετε\nπρώιμη πρόσβαση στην Προστασία δικτύου!"; +"network-protection.waitlist.invited.title" = "Έχετε προσκληθεί να δοκιμάσετε την \nπρώιμη πρόσβαση στο DuckDuckGo VPN!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Ασφαλίστε τη σύνδεσή σας οποτεδήποτε και οπουδήποτε με την Προστασία δικτύου, το VPN της DuckDuckGo."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Εγγραφείτε στη λίστα αναμονής και θα σας ειδοποιήσουμε όταν έρθει η σειρά σας."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "Πρώιμη πρόσβαση στο VPN"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Βρίσκεστε στη λίστα!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Θα σας ειδοποιήσουμε όταν είναι έτοιμη η πρόσκλησή σας."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Θα σας στείλουμε ειδοποίηση όταν είναι έτοιμη η πρόσκλησή σας για δοκιμή της Προστασίας δικτύου."; +"network-protection.waitlist.notification-alert.description" = "Θα σας στείλουμε ειδοποίηση όταν θα είναι έτοιμη η πρόσκλησή σας, για να δοκιμάσετε το DuckDuckGo VPN."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Λάβετε ειδοποίηση όταν το αντίγραφο της πρώιμης πρόσβασης της Προστασίας δικτύου είναι έτοιμο."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Ανοίξτε την πρόσκλησή σας"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Η Προστασία δικτύου είναι έτοιμη!"; +"network-protection.waitlist.notification.title" = "Το DuckDuckGo VPN είναι έτοιμο!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Η πρόσκλησή σας είναι έτοιμη!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Εγγραφείτε στην Ιδιωτική λίστα αναμονής"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Η σύνδεση της Προστασίας δικτύου απέτυχε. Ξαναδοκιμάστε αργότερα."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "Συχνές ερωτήσεις DuckDuckGo VPN"; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Η Προστασία δικτύου διακόπηκε. Γίνεται προσπάθεια επανασύνδεσης τώρα..."; + /* 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" = "Έχετε προσκληθεί να δοκιμάσετε την Προστασία δικτύου"; +"network.protection.invite.dialog.title" = "Έχετε προσκληθεί να δοκιμάσετε το DuckDuckGo VPN"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Ανοικτό VPN"; /* 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 - %@"; +"network.protection.status.connected.format" = "Συνδέθηκε · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Συνδεθείτε για να διασφαλίσετε όλη την επισκεψιμότητά σας στο διαδίκτυο\nαπό τη συσκευή σας."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Όλη η επισκεψιμότητα στο διαδίκτυο από τη συσκευή διασφαλίζεται\n μέσω του VPN."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "Το DuckDuckGo VPN είναι απενεργοποιημένο"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "Το DuckDuckGo VPN είναι ενεργοποιημένο"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Διαχείριση"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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" = "Δρομολόγηση κυκλοφορίας της συσκευής μέσω %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Ενεργοποίηση ειδοποιήσεων"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Επιτρέψτε στο DuckDuckGo να σας ειδοποιεί εάν η ισχύς της σύνδεσή σας μειωθεί ή αλλάξει η κατάσταση του VPN."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "Σχετικά"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Ειδοποιηθείτε εάν η ισχύς της σύνδεσής σας μειωθεί ή αλλάξει η κατάσταση του VPN."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "Ειδοποιήσεις VPN"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Όγκος δεδομένων"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Επιτρέψτε στην τοπική κυκλοφορία να παρακάμψει το VPN και να συνδεθεί σε συσκευές του τοπικού δικτύου σας, όπως ένας εκτυπωτής."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Συνδεδεμένη τοποθεσία"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "%d πόλεις"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Πλησιέστερο)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Αυτόματη σύνδεση στον εγγύτερο διακομιστή που μπορούμε να βρούμε."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Επιλεγμένη τοποθεσία"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "Ειδοποιήσεις VPN"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Πλησιέστερη τοποθεσία"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "Το VPN μας χρησιμοποιεί Ασφαλές DNS για να κρατήσει τη διαδικτυακή δραστηριότητά σας ιδιωτική, ώστε ο πάροχος υπηρεσιών Διαδικτύου που χρησιμοποιείτε να μην μπορεί να δει ποιους ιστότοπους επισκέπτεστε."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Συχνές ερωτήσεις"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Κοινοποίηση σχολίου VPN"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "Ρυθμίσεις VPN"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "Εντάξει"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Προστασία προσωπικών δεδομένων"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "Λογότυπο DuckDuckGo"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "Το DuckDuckGo αποτελεί την ανεξάρτητη εταιρεία προστασίας προσωπικών δεδομένων στο διαδίκτυο που ιδρύθηκε το 2008 για όσους έχουν βαρεθεί να παρακολουθούνται στο διαδίκτυο και επιθυμούν μια εύκολη λύση. Αποτελούμε τρανή απόδειξη ότι μπορείτε να αποκτήσετε πραγματική προστασία του απορρήτου σας στο διαδίκτυο χωρίς συμβιβασμούς.\n\nο πρόγραμμα περιήγησης DuckDuckGo διαθέτει τις λειτουργίες που περιμένετε από ένα πρόγραμμα περιήγησης, όπως σελιδοδείκτες, καρτέλες, κωδικούς πρόσβασης και πολλά άλλα, καθώς και πάνω από [δώδεκα ισχυρές λειτουργίες προστασίες απορρήτου](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/) που δεν προσφέρονται από τα περισσότερα δημοφιλή προγράμματα περιήγησης βάσει προεπιλογής. Αυτό το μοναδικά ολοκληρωμένο σύνολο προστασίας του απορρήτου συμβάλλει στην προστασία των διαδικτυακών δραστηριοτήτων σας, από αναζήτηση έως περιήγηση, αποστολή email και πολλά άλλα.\n\nΗ προστασία απορρήτου μας λειτουργεί χωρίς να χρειάζεται να γνωρίζετε τις τεχνικές λεπτομέρειες ή να ασχολείστε με περίπλοκες ρυθμίσεις. Το μόνο που έχετε να κάνετε είναι να αλλάξετε το πρόγραμμα περιήγησής σας σε DuckDuckGo σε όλες τις συσκευές σας και θα έχετε ιδιωτικότητα βάσει προεπιλογής.\n\nΑλλά αν *θέλετε* να ρίξετε μια αναλυτική ματιά, μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με το πώς λειτουργούν οι προστασίες απορρήτου του DuckDuckGo στις [σελίδες της ενότητας Βοήθεια](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Προσβασιμότητα"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Προσθήκη εφαρμογής στο Dock σας"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Προσθήκη μικροεφαρμογής στην Αρχική οθόνη"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Θέση γραμμής διευθύνσεων"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Γραμμή διευθύνσεων"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Εμφάνιση πλήρους διεύθυνσης ιστότοπου"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Κλείδωμα εφαρμογής"; /* Section footer Autolock description */ -"settings.autolock.description" = "Εάν έχει οριστεί Touch ID, Face ID ή κωδικός πρόσβασης συστήματος, θα σας ζητηθεί να ξεκλειδώσετε την εφαρμογή κατά το άνοιγμά της."; +"settings.autolock.description" = "Εάν έχει ενεργοποιηθεί το Touch ID, το Face ID ή ο κωδικός πρόσβασης συστήματος, θα σας ζητηθεί να ξεκλειδώσετε την εφαρμογή κατά το άνοιγμά της."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Αυτόματη απαλοιφή δεδομένων"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Προστασία αναδυόμενων παραθύρων για cookies"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "Το DuckDuckGo θα προσπαθήσει να επιλέξει τις πιο ιδιωτικές ρυθμίσεις που υπάρχουν διαθέσιμες και να αποκρύψει αυτά τα αναδυόμενα παράθυρα για εσάς.\n[Μάθετε περισσότερα](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Διαχείριση αναδυόμενων παραθύρων cookies"; /* Settings title for the customize section */ "settings.customize" = "Προσαρμογή"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Ορισμός ως προεπιλεγμένο πρόγραμμα περιήγησης"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Διαγραφή δεδομένων"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "Προστασία email"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Προεπιλεγμένο πρόγραμμα περιήγησης"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Απενεργοποίηση αυτόματης συμπλήρωσης Email Protection"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "Το DuckDuckGo σε άλλες πλατφόρμες"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Αποκλείστε εφαρμογές παρακολούθησης email και αποκρύψτε τη διεύθυνσή σας, χωρίς να αλλάξετε πάροχο email.\n[Μάθετε περισσότερα](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Η αποσύνδεση από τον λογαριασμό Email Protection θα απενεργοποιήσει την αυτόματη συμπλήρωση της Duck Address σε αυτό το πρόγραμμα περιήγησης. Μπορείτε να συνεχίσετε να χρησιμοποιείτε αυτές τις διευθύνσεις και να λαμβάνετε προωθούμενα email, όπως συνήθως."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Αποκλείστε εφαρμογές παρακολούθησης email και αποκρύψτε τη διεύθυνσή σας"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Ενεργοποίηση Email Protection"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Ενεργοποίηση φωνητικής αναζήτησης"; + /* Settings cell for Feedback */ "settings.feedback" = "Κοινοποίηση σχολίου"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Ασφαλείς ιστότοποι"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Γενικά"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Παγκόσμιος έλεγχος απορρήτου (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Πληκτρολόγιο"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Επιτρέψτε στο DuckDuckGo να διαχειρίζεται τα αναδυόμενα παράθυρα συναίνεσης για cookies"; + /* Settings screen cell text for passwords */ "settings.logins" = "Κωδικός πρόσβασης"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Κύριες ρυθμίσεις"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Διαχείριση λογαριασμού"; + /* Settings title for the 'More' section */ "settings.more" = "Περισσότερα από το DuckDuckGo"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Περισσότερες ρυθμίσεις αναζήτησης"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Προσαρμόστε τη γλώσσα σας, την περιοχή και πολλά άλλα"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Επόμενα βήματα"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Ιδιωτικότητα"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "ιδιωτική αναζήτηση"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "Το DuckDuckGo Private Search αποτελεί την προεπιλεγμένη μηχανή αναζήτησης, ώστε να μπορείτε να πραγματοποιείτε αναζήτηση στο διαδίκτυο χωρίς να σας παρακολουθούν."; + +/* Header of settings related to search */ +"settings.search.settings" = "Ρυθμίσεις αναζήτησης"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Ορίστε τη θέση της γραμμής διευθύνσεών σας"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Υποστήριξη"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Συγχρονισμός και δημιουργία αντιγράφων ασφαλείας"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Ιδιωτική φωνητική αναζήτηση"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Προστασία παρακολούθησης ιστού"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "Το DuckDuckGo αποκλείει αυτόματα κρυφές εφαρμογές παρακολούθησης καθώς περιηγείστε στο διαδίκτυο.\n[Μάθετε περισσότερα](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Υποβολή αναφοράς"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Ποιος ιστότοπος είναι κατεστραμμένος;"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Ενεργοποίηση συνδρομής"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Αποκτήστε πρόσβαση στη συνδρομή σας Privacy Pro μέσω διεύθυνσης email."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Χρησιμοποιήστε τη συνδρομή σας σε άλλες συσκευές"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Η συνδρομή σας αγοράστηκε μέσω του Google Play Store. Για να ανανεώσετε τη συνδρομή σας, ανοίξτε τις ρυθμίσεις συνδρομής στο Google Play Store σε συσκευή που είναι συνδεδεμένη στον ίδιο λογαριασμό Google που χρησιμοποιήθηκε για την αρχική αγορά της συνδρομής σας."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Προγράμματα συνδρομής"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Επιστροφή στις Ρυθμίσεις"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Αντιμετωπίζουμε κάποιο πρόβλημα σύνδεσης. Ξαναδοκιμάστε αργότερα."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Κάτι πήγε λάθος"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Ο κωδικός ανάκτησης αντιγράφηκε στο πρόχειρο"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Απενεργοποίηση συγχρονισμού;"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Δυστυχώς, η λειτουργία Συγχρονισμός και δημιουργία αντιγράφων ασφαλείας δεν είναι διαθέσιμη προς το παρόν. Ξαναδοκιμάστε αργότερα."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Η Προστασία προσωπικών δεδομένων απενεργοποιήθηκε για το %@"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Η Προστασία προσωπικών δεδομένων απενεργοποιήθηκε για τον τομέα %@ και η αναφορά στάλθηκε."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Η Προστασία προσωπικών δεδομένων ενεργοποιήθηκε για το %@"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Ακύρωση"; /* Voice-search footer note with on-device privacy warning */ -"voiceSearch.footer.note" = "Η επεξεργασία του ήχου πραγματοποιείται στη συσκευή. Δεν αποθηκεύεται ούτε κοινοποιείται σε οποιονδήποτε, συμπεριλαμβανομένου του DuckDuckGo."; +"voiceSearch.footer.note" = "Προσθήκη της επιλογής Ιδιωτική φωνητική αναζήτηση στη γραμμή διευθύνσεων. Ο ήχος δεν αποθηκεύεται ούτε κοινοποιείται σε οποιονδήποτε, συμπεριλαμβανομένου του DuckDuckGo."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "Η επεξεργασία του ήχου πραγματοποιείται στη συσκευή. Δεν αποθηκεύεται ούτε κοινοποιείται σε οποιονδήποτε, συμπεριλαμβανομένου του DuckDuckGo."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "Εντάξει"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Σας ευχαριστούμε που δοκιμάσατε την εφαρμογή! Για να συνεχίσετε να χρησιμοποιείτε το VPN, εγγραφείτε στο DuckDuckGo Privacy Pro και κερδίστε 40% έκπτωση με τον κωδικό προσφοράς THANKYOU\n\nΗ προσφορά μπορεί να εξαργυρωθεί για περιορισμένο χρονικό διάστημα μόνο στην έκδοση για υπολογιστές του προγράμματος περιήγησης DuckDuckGo, από άτομα που θα δοκιμάσουν τη εφαρμογή από τις ΗΠΑ και θα πραγματοποιήσουν εγκατάσταση από τη διεύθυνση duckduckgo.com/app"; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "Η πρώιμη πρόσβαση στο DuckDuckGo VPN τελείωσε"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Επιτρέψτε ειδοποιήσεις"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Καλωσορίσατε στην πλευρά της Πάπιας!"; -/* 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"; diff --git a/DuckDuckGo/en.lproj/Localizable.strings b/DuckDuckGo/en.lproj/Localizable.strings index b01c6c8879..3aef9d64e7 100644 --- a/DuckDuckGo/en.lproj/Localizable.strings +++ b/DuckDuckGo/en.lproj/Localizable.strings @@ -1822,18 +1822,25 @@ Our privacy protections work without having to know anything about the technical But if you *do* want a peek under the hood, you can find more information about how DuckDuckGo privacy protections work on our [help pages](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Accessibility"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Add App to Your Dock"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Add Widget to Home Screen"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Address Bar Position"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Address Bar"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Show Full Site Address"; +/* Label describing a feature which is turned on always */ +"settings.always.on" = "Always On"; + /* Settings screen appearance section title */ "settings.appearance" = "Appearance"; @@ -1850,26 +1857,51 @@ But if you *do* want a peek under the hood, you can find more information about "settings.autolock" = "Application Lock"; /* Section footer Autolock description */ -"settings.autolock.description" = "If Touch ID, Face ID or a system passcode is set, you’ll be requested to unlock the app when opening."; +"settings.autolock.description" = "If Touch ID, Face ID, or a system passcode is enabled, you'll be asked to unlock the app when opening it."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Automatically Clear Data"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Cookie Pop-Up Protection"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo will try to select the most private settings available and hide these pop-ups for you.\n[Learn More](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Manage Cookie Pop-ups"; /* Settings title for the customize section */ "settings.customize" = "Customize"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Set as Default Browser"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Data Clearing"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "Email Protection"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Default Browser"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Disable Email Protection Autofill"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo on Other Platforms"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Block email trackers and hide your address without switching your email provider.\n[Learn More](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Signing out of your Email Protection account will disable Duck Address autofill in this browser. You can still use these addresses and receive forwarded email as usual."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Block email trackers and hide your address"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Enable Email Protection"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Enable Voice Search"; + /* Settings cell for Feedback */ "settings.feedback" = "Share Feedback"; @@ -1879,6 +1911,9 @@ But if you *do* want a peek under the hood, you can find more information about /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Fireproof Sites"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "General"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Global Privacy Control (GPC)"; @@ -1888,12 +1923,36 @@ But if you *do* want a peek under the hood, you can find more information about /* Settings screen cell for Keyboard */ "settings.keyboard" = "Keyboard"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Let DuckDuckGo manage cookie consent pop-ups"; + /* Settings screen cell text for passwords */ "settings.logins" = "Passwords"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Main Settings"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Manage Account"; + /* Settings title for the 'More' section */ "settings.more" = "More from DuckDuckGo"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "More Search Settings"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Customize your language, region, and more"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Next Steps"; + +/* Label describing a feature which is turned off */ +"settings.off" = "Off"; + +/* Label describing a feature which is turned on */ +"settings.on" = "On"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1903,6 +1962,18 @@ But if you *do* want a peek under the hood, you can find more information about /* Settings title for the privacy section */ "settings.privacy" = "Privacy"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Private Search"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "DuckDuckGo Private Search is your default search engine, so you can search the web without being tracked."; + +/* Header of settings related to search */ +"settings.search.settings" = "Search Settings"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Set Your Address Bar Position"; + /* Subscription activation pending description */ "settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; @@ -1944,6 +2015,9 @@ But if you *do* want a peek under the hood, you can find more information about /* VPN cell title for privacy pro */ "settings.subscription.VPN.title" = "VPN"; +/* Label of a button navigating to the Support page */ +"settings.support" = "Support"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Sync & Backup"; @@ -1965,6 +2039,12 @@ But if you *do* want a peek under the hood, you can find more information about /* Settings screen cell for voice search */ "settings.voice.search" = "Private Voice Search"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Web Tracking Protection"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo automatically blocks hidden trackers as you browse the web.\n[Learn More](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Submit Report"; @@ -2338,7 +2418,10 @@ But if you *do* want a peek under the hood, you can find more information about "voiceSearch.cancel" = "Cancel"; /* Voice-search footer note with on-device privacy warning */ -"voiceSearch.footer.note" = "Audio is processed on-device. It's not stored or shared with anyone, including DuckDuckGo."; +"voiceSearch.footer.note" = "Add Private Voice Search option to the address bar. Audio is not stored or shared with anyone, including DuckDuckGo."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "Audio is processed on-device. It's not stored or shared with anyone, including DuckDuckGo."; /* Cancel action for the alert when the subscription expires */ "vpn.access-revoked.alert.action.cancel" = "Dismiss"; diff --git a/DuckDuckGo/es.lproj/Autocomplete.strings b/DuckDuckGo/es.lproj/Autocomplete.strings index 0f6cb4b89a..8364cbc3f0 100644 --- a/DuckDuckGo/es.lproj/Autocomplete.strings +++ b/DuckDuckGo/es.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Etiqueta"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Etiqueta"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "No hay sugerencias"; diff --git a/DuckDuckGo/es.lproj/Localizable.strings b/DuckDuckGo/es.lproj/Localizable.strings index 0143355c1d..20258678ba 100644 --- a/DuckDuckGo/es.lproj/Localizable.strings +++ b/DuckDuckGo/es.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Gestionar"; +/* Button label for OK action */ +"action.ok" = "De acuerdo"; + /* Add action - button shown in alert */ "action.title.add" = "Añadir"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "URL copiada"; /* Delete action - button shown in alert */ -"action.title.delete" = "Eliminar"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Desactivar la protección de privacidad"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "No se pueden eliminar los datos en el servidor."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Para emparejar estos dispositivos, desactiva Sincronización y copia de seguridad en un dispositivo y luego toca «Sincronizar con otro dispositivo» en el otro dispositivo."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "No se puede eliminar este dispositivo de Sincronización y copia de seguridad."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Ayer"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Administrar ventanas emergentes de cookies"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "No, gracias"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Parece que este sitio tiene una ventana emergente de consentimiento para cookies👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "¿Quieres que me encargue de ella por ti? Puedo intentar minimizar las cookies, maximizar la privacidad y ocultar ventanas emergentes como estas."; - /* No comment provided by engineer. */ "dax.hide.button" = "Ocultar consejos para siempre"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo para iOS"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "Protección del correo electrónico"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "¡Consigue DuckDuckGo para Mac!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "DuckDuckGo VPN"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Política de privacidad"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Aceptar y continuar"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Network Protection es gratuito durante el acceso anticipado."; +"network-protection.waitlist.availability-disclaimer" = "DuckDuckGo VPN es gratuito durante el acceso anticipado."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Aceptar y continuar"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Obtén una capa adicional de protección en línea con la VPN diseñada para ofrecer velocidad y simplicidad. Cifra tu conexión a Internet en todo tu dispositivo y oculta tu ubicación y dirección IP en los sitios que visitas."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "¡Estás invitado a probar el acceso anticipado a \n Network Protection!"; +"network-protection.waitlist.invited.title" = "¡Te invitamos a probar el acceso anticipado a \n DuckDuckGo VPN!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Protege tu conexión en cualquier momento y lugar con Network Protection, la VPN de DuckDuckGo."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Únete a la lista de espera y te avisaremos cuando sea tu turno."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "Acceso anticipado a VPN"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "¡Estás en la lista!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Te avisaremos cuando tu invitación esté lista."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Te enviaremos una notificación cuando esté lista tu invitación para probar Network Protection."; +"network-protection.waitlist.notification-alert.description" = "Te enviaremos una notificación cuando esté lista tu invitación para probar DuckDuckGo VPN."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Recibe una notificación cuando esté lista tu copia de acceso anticipado a Network Protection."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Abrir tu invitación"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "¡Network Protection está listo!"; +"network-protection.waitlist.notification.title" = "¡DuckDuckGo VPN está listo!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "¡Tu invitación está lista!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Unirse a la lista de espera privada"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "Preguntas frecuentes sobre DuckDuckGo VPN"; + +/* 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..."; + /* 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" = "Estás invitado a probar Network Protection"; +"network.protection.invite.dialog.title" = "Te invitamos a probar DuckDuckGo VPN"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Abrir VPN"; /* 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 - %@"; +"network.protection.status.connected.format" = "Conectado · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Conéctate para proteger todo el tráfico de Internet\nde tu dispositivo."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Todo el tráfico de Internet del dispositivo está protegido\n a través de VPN."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "DuckDuckGo VPN está desactivado"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "DuckDuckGo VPN está activado"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Gestionar"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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 %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Activar notificaciones"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Permite que DuckDuckGo te notifique si tu conexión se cae o si cambia el estado de la VPN."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "Acerca de"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Recibe notificaciones si tu conexión se cae o cambia el estado de la VPN."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "Alertas de VPN"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Volumen de datos"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Deja que el tráfico local sortee la VPN y conéctate a dispositivos de tu red local, como una impresora."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Ubicación conectada"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "%d ciudades"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Más cercano)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Conectarte automáticamente al servidor más cercano que encontremos."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Ubicación seleccionada"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "Notificaciones de VPN"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Ubicación más cercana"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "Nuestra VPN utiliza DNS seguro para mantener la privacidad de tu actividad en línea, de modo que tu proveedor de Internet no pueda ver qué sitios web visitas."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Preguntas frecuentes"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Compartir comentarios de VPN"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "Configuración de VPN"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "De acuerdo"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Protecciones de privacidad"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "Logotipo de DuckDuckGo"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "DuckDuckGo es la empresa de privacidad en internet independiente fundada en 2008 para quienes estén cansados de ser rastreados en línea y quieran una solución sencilla. Somos la prueba de que es posible obtener protección de privacidad real en línea sin concesiones.\n\nEl navegador DuckDuckGo incluye las funciones que esperas de un navegador de referencia, como marcadores, pestañas, contraseñas y más, así como más de [una docena de potentes funciones de protección de privacidad](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/) no se ofrece en la mayoría de los navegadores populares de forma predeterminada. Este conjunto completo de funciones de protección de privacidad ayuda a proteger tu actividad en línea, desde la búsqueda hasta la navegación, el correo electrónico y mucho más.\n\nNuestra protección de privacidad funciona sin necesidad de conocimientos técnicos y sin tener que lidiar con configuraciones complicadas. Lo único que tienes que hacer es cambiar el navegador a DuckDuckGo en todos tus dispositivos y obtener privacidad de forma predeterminada.\n\nSin embargo, si quieres conocer los entresijos, puedes encontrar más información sobre cómo funcionan las protecciones de privacidad de DuckDuckGo en nuestras [páginas de ayuda](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Accesibilidad"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Añadir una aplicación a tu Dock"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Añadir widget a la pantalla de inicio"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Posición de la barra de direcciones"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Barra de direcciones"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Mostrar dirección completa del sitio"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Bloqueo de aplicación"; /* Section footer Autolock description */ -"settings.autolock.description" = "Si se establece Touch ID, Face ID o una contraseña del sistema, deberás desbloquear la aplicación al abrirla."; +"settings.autolock.description" = "Si se habilita Touch ID, Face ID o un código de acceso del sistema, se te pedirá que desbloquees la aplicación al abrirla."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Borrar datos automáticamente"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Protección contra ventanas emergentes de cookies"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo intentará seleccionar la configuración más privada disponible y ocultar estas ventanas emergentes por ti.[Más información](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Administrar ventanas emergentes de cookies"; /* Settings title for the customize section */ "settings.customize" = "Personalizar"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Definir como navegador predeterminado"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Eliminación de datos"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "Protección del correo electrónico"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Navegador predeterminado"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Desactivar Autocompletar Email Protection"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo en otras plataformas"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Bloquea los rastreadores de correo electrónico y oculta tu dirección sin cambiar de proveedor de correo electrónico.\n[Más información](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Al cerrar sesión en tu cuenta de Email Protection, se desactivará el autocompletado de Duck Address en este navegador. Aún puedes usar estas direcciones y recibir correos electrónicos reenviados como de costumbre."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Bloquea los rastreadores de correo electrónico y oculta tu dirección"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Activar Email Protection"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Habilitar búsqueda por voz"; + /* Settings cell for Feedback */ "settings.feedback" = "Compartir opiniones"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Sitios web a prueba de fuego"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "General"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Control Global de Privacidad (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Teclado"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Deja que DuckDuckGo gestione las ventanas emergentes de consentimiento de cookies"; + /* Settings screen cell text for passwords */ "settings.logins" = "Contraseñas"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Ajustes principales"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Gestionar cuenta"; + /* Settings title for the 'More' section */ "settings.more" = "Más sobre DuckDuckGo"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Más opciones de búsqueda"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Personaliza tu idioma, región y más"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Próximos pasos"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Privacidad"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Búsqueda Privada"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "La búsqueda privada de DuckDuckGo es tu motor de búsqueda predeterminado para que puedas buscar en la web sin que te rastreen."; + +/* Header of settings related to search */ +"settings.search.settings" = "Configuración de búsqueda"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Establece la posición de la barra de direcciones"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Ayuda"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Sincronización y copia de seguridad"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Búsqueda privada por voz"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Protección de rastreo en la web"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo bloquea automáticamente los rastreadores ocultos mientras navegas por la web.\n[Más información](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Enviar informe"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "¿Qué sitio web no funciona?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Activar suscripción"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Accede a tu suscripción a Privacy Pro a través de una dirección de correo electrónico."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Usar la suscripción en otros dispositivos"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Has adquirido tu suscripción a través de Google Play Store. Para renovar tu suscripción, abre la configuración de suscripción de Google Play Store en un dispositivo que haya iniciado sesión en la misma cuenta de Google que usaste para comprar originalmente tu suscripción."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Planes de suscripción"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Volver a Ajustes"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Tenemos problemas para conectarnos. Inténtalo de nuevo más tarde."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Se ha producido un error"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Código de recuperación copiado en el portapapeles"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "¿Desactivar sincronización?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Lo sentimos, pero la sincronización y la copia de seguridad no están disponibles en este momento. Inténtalo de nuevo más tarde."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Protección de privacidad desactivada para %@"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Protecciones de privacidad deshabilitadas para %@ e informe enviado."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Protección de privacidad activada para %@"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Cancelar"; /* 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."; +"voiceSearch.footer.note" = "Añadir la opción de búsqueda privada por voz a la barra de direcciones. El audio no se almacena ni se comparte con nadie, incluyendo DuckDuckGo."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "El audio se procesa en el dispositivo. No se almacena ni comparte con nadie, incluyendo DuckDuckGo."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "De acuerdo"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "¡Gracias por ser probador/a! Para seguir utilizando la VPN, suscríbete a DuckDuckGo Privacy Pro y consigue un 40 % de descuento con el código promocional THANKYOU\n\nOferta canjeable por tiempo limitado solo en la versión de escritorio del navegador DuckDuckGo para los probadores de EE. UU. que la instalen desde duckduckgo.com/app"; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "Se ha acabado el acceso anticipado a DuckDuckGo VPN"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Permitir notificaciones"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Bienvenidas al \"Lado Pato\"!"; -/* 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"; diff --git a/DuckDuckGo/et.lproj/Autocomplete.strings b/DuckDuckGo/et.lproj/Autocomplete.strings index 122abefbd3..a7f037e623 100644 --- a/DuckDuckGo/et.lproj/Autocomplete.strings +++ b/DuckDuckGo/et.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Label"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Silt"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Ettepanekud puuduvad"; diff --git a/DuckDuckGo/et.lproj/Localizable.strings b/DuckDuckGo/et.lproj/Localizable.strings index dc0785392f..e1f77b5e53 100644 --- a/DuckDuckGo/et.lproj/Localizable.strings +++ b/DuckDuckGo/et.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Halda"; +/* Button label for OK action */ +"action.ok" = "OK"; + /* Add action - button shown in alert */ "action.title.add" = "Lisa"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "URL on kopeeritud"; /* Delete action - button shown in alert */ -"action.title.delete" = "Kustuta"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Keela privaatsuse kaitse"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Serveris olevaid andmeid ei saa kustutada."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Nende seadmete sidumiseks lülita sünkroonimine ja varundus ühes seadmes välja ning puuduta siis teises seadmes suvandit „Sünkrooni teise seadmega“."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Seda seadet ei saa sünkroonimisest ja varundamisest eemaldada."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Eile"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Halda küpsiste hüpikaknaid"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Ei aitäh"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Paistab, et sellel saidil on küpsiste nõusoleku hüpikaken👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Kas soovid, et ma need sinu eest lahendaksin? Ma võin proovida minimeerida küpsiseid, maksimeerida privaatsust ja sellised hüpikaknad peita."; - /* No comment provided by engineer. */ "dax.hide.button" = "Peida näpunäited igaveseks"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo iOS-ile"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "E-posti kaitse"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Hangi DuckDuckGo for Mac!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "DuckDuckGo VPN"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Privaatsuspoliitika"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Nõustun ja jätkan"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Network Protection on varajase juurdepääsu ajal tasuta kasutamiseks."; +"network-protection.waitlist.availability-disclaimer" = "DuckDuckGo VPN-i saab varajase juurdepääsu ajal tasuta kasutada."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Nõustun ja jätkan"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Täiendava võrguturvalisuse kaitse tagab VPN, mille loomisel on silmas peetud kiirust ja kasutushõlpsust. Krüpti oma internetiühendus kogu seadmes ning varja oma asukohta ja IP-aadressi külastatavate veebisaitide eest."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Oled kutsutud proovima\nNetwork Protectioni varajast juurdepääsu!"; +"network-protection.waitlist.invited.title" = "Oled kutsutud proovima\nDuckDuckGo VPN-i varajast juurdepääsu!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Kaitse oma ühendust igal pool ja igal ajal, kasutades DuckDuckGo VPN-lahendust Network Protection."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Liitu ootenimekirjaga ja me anname teada, kui on sinu kord."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "VPN varajane juurdepääs"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Oled ootenimekirjas!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Anname teada, kui sinu kutse on valmis."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Saadame sulle teate, kui sinu kutse Network Protectioni testimiseks on valmis."; +"network-protection.waitlist.notification-alert.description" = "Saadame sulle teate, kui kutse DuckDuckGo VPN-i testimiseks on valmis."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Saad teate, kui sinu Network Protectioni varajane juurdepääs on saadaval."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Ava oma kutse"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Network Protection on valmis!"; +"network-protection.waitlist.notification.title" = "DuckDuckGo VPN on valmis!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Sinu kutse on valmis!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Liituge privaatse ootenimekirjaga"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "DuckDuckGo VPN-i KKK"; + +/* 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 ..."; + /* 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" = "Oled kutsutud proovima Network Protectionit"; +"network.protection.invite.dialog.title" = "Oled kutsutud proovima DuckDuckGo VPN-i"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Ava VPN"; /* 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 - %@"; +"network.protection.status.connected.format" = "Ühendatud · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Ühendage kõigi oma seadme kaitsmiseks\n Internetiliiklus."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Kogu seadme internetiliiklus on turvatud\nläbi VPN-i."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "DuckDuckGo VPN on välja lülitatud"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "DuckDuckGo VPN on sisse lülitatud"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Halda"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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 %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Lülita teavitused sisse"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Lubab DuckDuckGol sulle teada anda, kui sinu ühendus katkeb või VPN-i olek muutub."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "Teave"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Saad teate, kui sinu ühendus katkeb või VPN-i olek muutub."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "VPN-i hoiatused"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Andmemaht"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Suuna kohalik võrguliiklus VPN-ist mööda ja loo ühendus kohtvõrgu seadmete, nt printeriga."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Ühendatud asukoht"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "Linnad riigis %d"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Lähim)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Loob automaatselt ühenduse lähima leitud serveriga."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Valitud asukoht"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "VPN-i teavitused"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Lähim asukoht"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "Meie VPN kasutab turvalist DNS-i, et kaitsta sinu veebitegevuse privaatsust, nii et sinu internetiteenuse pakkuja ei näe, milliseid veebisaite sa külastad."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Korduma kippuvad küsimused"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Jaga VPN-i tagasisidet"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "VPN-i seaded"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "OK"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Privaatsuskaitsed"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "DuckDuckGo logo"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "DuckDuckGo on 2008. aastal asutatud sõltumatu internetiprivaatsuse ettevõte igaühele, kellel on kõrini varjatud jälgimisest internetis ja kes soovib lihtsat lahendust selle vältimiseks. Me oleme tõestuseks, et internetis on võimalik saada tõelist privaatsuskaitset ilma kompromisse tegemata.\n\nDuckDuckGo brauseril on kõik funktsioonid, mida sa brauserilt ootad, nagu järjehoidjad, vahekaardid, paroolid ja palju muud, lisaks sellele aga ka üle [tosina võimsa privaatsuskaitse funktsiooni](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/), mida enamik populaarsemaid brausereid vaikimisi ei paku. See ainulaadselt terviklik privaatsuskaitse aitab kaitsta sinu tegevust internetis alates otsingutest kuni sirvimiseni, meilide saatmiseni ja palju muuni.\n\nMeie privaatsuskaitse toimib ilma, et peaksid teadma midagi tehnilistest nüanssidest või tegelema keeruliste seadistustega. Ainus, mis sa pead tegema, on vahetada oma brauser kõigis seadmetes DuckDuckGo vastu – ja vaikeprivaatsus ongi tagatud.\n\nKui aga *soovid* piiluda kapoti alla, leiate lisateavet DuckDuckGo privaatsuskaitse tööpõhimõtete kohta meie [abilehtedelt](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Hõlpsus"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Lisa rakendus oma dokki"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Lisa vidin avakuvale"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Aadressiriba asukoht"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Aadressiriba"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Näita kogu saidi aadressi"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Rakenduse lukk"; /* Section footer Autolock description */ -"settings.autolock.description" = "Kui on määratud Touch ID, Face ID või süsteemi pääsukood, palutakse avamisel rakendus avada."; +"settings.autolock.description" = "Kui on lubatud Touch ID, Face ID või süsteemi pääsukood, palutakse selle avamisel rakendus avada."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Kustuta andmed automaatselt"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Küpsiste hüpikakna kaitse"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo proovib valida kõige privaatsemad saadaolevad seaded ja peidab need hüpikaknad sinu eest.\n[Lisateave](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Halda küpsiste hüpikaknaid"; /* Settings title for the customize section */ "settings.customize" = "Kohanda"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Määrake vaikebrauseriks"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Andmete kustutamine"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "E-posti kaitse"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Vaikebrauser"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Keela Email Protection automaatne täitmine"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo muudel platvormidel"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Blokeerige e-posti jälgijad ja peitke oma aadress ilma oma e-posti teenuse pakkujat vahetamata.\n[Lisateave](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Email Protection kontolt väljalogimine keelab selles brauseris Duck Address automaatse täitmise. Saad neid aadresse endiselt kasutada ja saada edastatud e-kirju nagu tavaliselt."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Blokeeri meilijälgurid ja peida oma aadress"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Luba Email Protection"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Luba häälotsing"; + /* Settings cell for Feedback */ "settings.feedback" = "Jaga tagasisidet"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Tulekindlad veebisaidid"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Üldine"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Üleilmne privaatsuskontroll (Global Privacy Control (GPC))"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Klaviatuur"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Luba DuckDuckGo'l hallata küpsiste nõusoleku hüpikaknaid"; + /* Settings screen cell text for passwords */ "settings.logins" = "Paroolid"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Peamised seaded"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Halda kontot"; + /* Settings title for the 'More' section */ "settings.more" = "Veel DuckDuckGo'lt"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Rohkem otsinguseadeid"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Kohanda oma keelt, piirkonda ja muud"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Järgmised sammud"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Privaatsus"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Privaatne otsing"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "DuckDuckGo Private Search on sinu vaikeotsimootor, mille abil saad veebis otsida ilma, et sind jälgitaks."; + +/* Header of settings related to search */ +"settings.search.settings" = "Otsingu seaded"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Määra aadressiriba asukoht"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Tugi"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Sünkroonimine ja varundamine"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Privaatne häälotsing"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Veebijälgimise kaitse"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo blokeerib automaatselt peidetud jälgijaid, kui sa veebis sirvid.\n[Lisateave](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Saada aruanne"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Milline veebisait on katki?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Aktiveeri püsitellimus"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Pääse oma Privacy Pro püsitellimusele juurde e-posti aadressi kaudu."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Kasuta oma püsitellimust teistes seadmetes"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Sinu püsitellimus osteti Google Play poe kaudu. Püsitellimuse pikendamiseks ava Google Play poe tellimuse seaded seadmes, mis on sisse logitud samasse Google'i kontosse, mida kasutati algselt püsitellimuse ostmiseks."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Püsitellimuse plaanid"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Tagasi seadete juurde"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Meil on probleeme ühenduse loomisega. Proovi hiljem uuesti."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Midagi läks valesti"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Taastamiskood kopeeriti lõikelauale"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Kas lülitada sünkroonimine välja?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Kahjuks pole sünkroonimine ja varundamine praegu saadaval. Proovi hiljem uuesti."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "%@ privaatsuse kaitse on keelatud"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Privaatsuskaitsed on %@ jaoks keelatud ja teavitus saadetud."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "%@ privaatsuse kaitse on lubatud"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Tühista"; /* Voice-search footer note with on-device privacy warning */ -"voiceSearch.footer.note" = "Heli töödeldakse seadmes. Seda ei salvestata ega jagata kellegagi, sealhulgas DuckDuckGoga."; +"voiceSearch.footer.note" = "Lisa aadressiribale privaatse häälotsingu valik. Heli ei salvestata ega jagata kellegagi, sealhulgas DuckDuckGoga."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "Heli töödeldakse seadmes. Seda ei salvestata ega jagata kellegagi, sealhulgas DuckDuckGoga."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "OK"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Aitäh, et oled testija! VPN-i kasutamise jätkamiseks telli DuckDuckGo Privacy Pro ja saa 40% allahindlust sooduskoodiga THANKYOU\n\nPakkumine on lunastatav piiratud aja jooksul ainult DuckDuckGo brauseri arvutiversioonis USA testijatele, kes paigaldavad selle veebilehelt duckduckgo.com/app"; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "DuckDuckGo VPN-i varajane juurdepääs on lõppenud"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Luba teavitused"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Tere tulemast Pardipoolele!"; -/* 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"; diff --git a/DuckDuckGo/fi.lproj/Autocomplete.strings b/DuckDuckGo/fi.lproj/Autocomplete.strings index 56cabbb2bb..e737717174 100644 --- a/DuckDuckGo/fi.lproj/Autocomplete.strings +++ b/DuckDuckGo/fi.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Label"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Label"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Ei ehdotuksia"; diff --git a/DuckDuckGo/fi.lproj/Localizable.strings b/DuckDuckGo/fi.lproj/Localizable.strings index e5a467e25a..4e462459a1 100644 --- a/DuckDuckGo/fi.lproj/Localizable.strings +++ b/DuckDuckGo/fi.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Hallitse"; +/* Button label for OK action */ +"action.ok" = "OK"; + /* Add action - button shown in alert */ "action.title.add" = "Lisää"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "URL kopioitu"; /* Delete action - button shown in alert */ -"action.title.delete" = "Poista"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Poista yksityisyyden suoja käytöstä"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Tietojen poisto palvelimelta epäonnistui."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Jos haluat yhdistää laitteet, poista yhdeltä laitteelta käytöstä Synkronointi ja varmuuskopiointi, ja napauta toisessa laitteessa \"Synkronoi toisen laitteen kanssa\"."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Tätä laitetta ei voida poistaa synkronoinnista ja varmuuskopioinnista."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Eilen"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Evästeiden hallinnan ponnahdusikkunat"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Ei kiitos"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Näyttää siltä, että tällä sivustolla on evästeiden hallinnan ponnahdusikkuna👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Haluatko, että hoidan nämä puolestasi? Voin yrittää minimoida evästeet, maksimoida yksityisyyden ja piilottaa tällaiset ponnahdusikkunat."; - /* No comment provided by engineer. */ "dax.hide.button" = "Piilota vinkit ikuisesti"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo iOS:lle"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "Sähköpostisuojaus"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Kokeile Macin DuckDuckGota!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "DuckDuckGo VPN"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Tietosuojakäytäntö"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Hyväksy ja jatka"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Network Protection on ilmainen ennakkokäytön aikana."; +"network-protection.waitlist.availability-disclaimer" = "DuckDuckGo VPN on ilmainen kokeilun aikana."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Hyväksy ja jatka"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Hanki lisäsuojaa verkossa VPN:llä, joka on suunniteltu nopeutta ja yksinkertaisuutta silmällä pitäen. Salaa verkkoyhteytesi koko laitteellasi ja piilota sijaintisi ja IP-osoitteesi sivustoilta, joilla käyt."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Sinut on kutsuttu kokeilemaan\nNetwork Protectionia varhaiskäytössä!"; +"network-protection.waitlist.invited.title" = "Sinut on kutsuttu kokeilemaan\nDuckDuckGo VPN:ää varhaiskäytössä!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Suojaa yhteytesi missä ja milloin vain DuckDuckGon VPN:n, Network Protectionin avulla."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Tule odotuslistalle, niin ilmoitamme milloin on sinun vuorosi."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "VPN:n kokeilu"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Olet odotuslistalla!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Ilmoitamme, kun sinun kutsusi on valmis."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Lähetämme sinulle ilmoituksen, kun kutsusi kokeilla Network Protectionia on valmis."; +"network-protection.waitlist.notification-alert.description" = "Lähetämme sinulle ilmoituksen, kun kutsusi kokeilla DuckDuckGo VPN:ää on valmis."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Saat ilmoituksen, kun Network Protectionin ennakkokäyttö on valmis."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Avaa kutsusi"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Network Protection on käytössä!"; +"network-protection.waitlist.notification.title" = "DuckDuckGo VPN on valmis!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Kutsusi on valmis!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Liity yksityiselle odotuslistalle"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "DuckDuckGo VPN – usein kysytyt kysymykset"; + +/* 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..."; + /* 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" = "Sinut on kutsuttu kokeilemaan Network Protectionia"; +"network.protection.invite.dialog.title" = "Sinut on kutsuttu kokeilemaan DuckDuckGo VPN:ää"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Avaa VPN"; /* 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 - %@"; +"network.protection.status.connected.format" = "Yhdistetty · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Yhdistä suojataksesi laitteesi\nkoko verkkoliikenne."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Laitteen koko verkkoliikenne suojataan\n VPN:n kautta."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "DuckDuckGo VPN on pois päältä"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "DuckDuckGo VPN on päällä"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Hallitse"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Ota ilmoitukset käyttöön"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Anna DuckDuckGon ilmoittaa sinulle, jos yhteys katkeaa tai VPN:n tila muuttuu."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "Tietoja"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Saat ilmoituksen, jos yhteytesi katkeaa tai VPN:n tila muuttuu."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "VPN-ilmoitukset"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Datamäärä"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Anna paikallisen liikenteen ohittaa VPN ja muodosta yhteys lähiverkkosi laitteisiin, kuten tulostimeen."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Yhteyteen käytetty sijainti"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "%d kaupunkia"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Lähin)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Muodostaa yhteyden automaattisesti lähimpään löytämäämme palvelimeen."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Valittu sijainti"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "VPN-ilmoitukset"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Lähin sijainti"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "VPN käyttää Secure DNS:ää pitääkseen verkkotoimintasi yksityisenä, jotta internetpalveluntarjoajasi ei näe, millä sivustoilla käyt."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Usein kysytyt kysymykset"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Anna palautett VPN:stä"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "VPN-asetukset"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "OK"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Yksityisyyden suoja"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "DuckDuckGo-logo"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "DuckDuckGo on vuonna 2008 perustettu riippumaton internetissä tietosuojaa tarjoava yritys niille, jotka ovat kyllästyneet siihen, että heitä seurataan netissä, ja haluavat yksinkertaisen ratkaisun. Olemme todiste siitä, että voit saada todellista tietosuojaa verkossa ilman kompromisseja.\n\nDuckDuckGo-selaimessa on kaikki parhaiden selainten ominaisuudet, kuten kirjanmerkit, välilehdet, salasanat ja paljon muuta, sekä yli [kymmenkunta tehokasta tietosuojausta](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/) ei tarjolla oletuksena suosituimmissa selaimissa. Tämä ainutlaatuisen kattava tietosuoja auttaa turvaamaan haut, selaamisen, sähköpostin lähettämiseen ja muun toimintasi verkossa.\n\nTietosuojamme toimivat, vaikka et tietäisi mitään teknisistä yksityiskohdista tai osaisi käsitellä monimutkaisia asetuksia. Sinun tarvitsee vain vaihtaa selaimesi DuckDuckGohon kaikilla laitteillasi, ja saat tietosuojan oletuksena.\n\nJos kuitenkin haluat kurkistaa konepellin alle, lisätietoja DuckDuckGon tietosuojan toiminnasta on [ohjesivuillamme](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Käytettävyys"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Lisää sovellus telakkaasi"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Lisää widget aloitusnäyttöön"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Osoitepalkin sijainti"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Osoitekenttä"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Näytä sivuston osoite kokonaan"; @@ -1837,21 +1877,46 @@ /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Tyhjennä tiedot automaattisesti"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Evästeiden ponnahdusikkuna -suojaus"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo yrittää valita valittavissa olevista asetuksista yksityisimmät ja piilottaa nämä ponnahdusikkunat puolestasi.\n[Lue lisää](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Evästeiden hallinnan ponnahdusikkunat"; /* Settings title for the customize section */ "settings.customize" = "Mukauta"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Aseta oletusselaimeksi"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Datan tyhjentäminen"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "Sähköpostisuojaus"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Oletusselain"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Poista Email Protectionin automaattinen täyttö käytöstä"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo muilla alustoilla"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Estä sähköpostiseuranta ja piilota osoitteesi vaihtamatta sähköpostintarjoajaa.\n[Lisätietoja](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Kun kirjaudut ulos Email Protection -tililtäsi, Duck Addressin automaattinen täyttö poistetaan käytöstä tässä selaimessa. Voit silti käyttää näitä osoitteita ja vastaanottaa edelleenlähetettyä sähköpostia tavalliseen tapaan."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Estä sähköpostiseuraajat ja piilota osoitteesi"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Ota Email Protection käyttöön"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Ota käyttöön äänihaku"; + /* Settings cell for Feedback */ "settings.feedback" = "Jaa palaute"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Tee sivustoista palonkestäviä"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Yleiset"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Global Privacy Control (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Näppäimistö"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Anna DuckDuckGon hallinnoida evästeiden hallinnan ponnahdusikkunoita"; + /* Settings screen cell text for passwords */ "settings.logins" = "Salasanat"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Pääasetukset"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Tilin hallinta"; + /* Settings title for the 'More' section */ "settings.more" = "Lisää DuckDuckGolta"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Lisää hakuasetuksia"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Mukauta kieli, alue ja muuta"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Seuraavat vaiheet"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Tietosuoja"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Yksityinen haku"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "DuckDuckGo Private Search on oletushakukoneesi, ja sen avulla voit hakea netistä ilman, että sinua seurataan."; + +/* Header of settings related to search */ +"settings.search.settings" = "Hakuasetukset"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Aseta osoitekentän sijainti"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Tuki"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Synkronoi ja varmuuskopioi"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Yksityinen äänihaku"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Verkkoseurannan suojaus"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo estää piilotetut seurantalaitteet automaattisesti, kun selaat verkkoa.\n[Lue lisää] (ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Lähetä raportti"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Mikä verkkosivusto on viallinen?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Aktivoi tilaus"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Käytä Privacy Pro -tilaustasi sähköpostiosoitteen kautta."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Käytä tilaustasi muilla laitteilla"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Tilauksesi on ostettu Google Play Kaupasta. Jos haluat uusia tilauksesi, avaa Google Play Kaupan tilausasetukset laitteella, jolla olet kirjautunut samalle Google-tilille, jolla alun perin ostit tilauksesi."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Tilaussopimukset"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Takaisin asetuksiin"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Yhteyden muodostamisessa on ongelmia. Yritä myöhemmin uudelleen."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Jokin meni pieleen"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Palautuskoodi kopioitu leikepöydälle"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Poistetaanko synkronointi käytöstä?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Sync & Backup ei valitettavasti ole tällä hetkellä käytettävissä. Yritä myöhemmin uudelleen."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Yksityisyydensuoja poistettu käytöstä osoitteessa %@"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Yksityisyyden suoja poistettu käytöstä osoitteessa %@ ja raportti lähetetty."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Yksityisyydensuoja otettu käyttöön osoitteessa %@"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Peruuta"; /* 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."; +"voiceSearch.footer.note" = "Lisää yksityinen äänihakuvaihtoehto osoitepalkkiin. Ääntä ei tallenneta eikä jaeta kenellekään, edes DuckDuckGolle."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "Ääni käsitellään laitteella. Sitä ei tallenneta eikä jaeta kenellekään, edes DuckDuckGolle."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "OK"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Kiitos, kun haluat testata! Jos haluat jatkaa VPN:n käyttöä, tilaa DuckDuckGo Privacy Pro, niin saat 40 % alennusta tarjouskoodilla THANKYOU.\n\nTarjous on lunastettavissa rajoitetun ajan vain DuckDuckGo-selaimen työpöytäversiossa yhdysvaltalaisille testaajille, jotka asentavat sen osoitteesta duckduckgo.com/app."; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "DuckDuckGo VPN:n kokeliu on ohi"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Salli ilmoitukset"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Tervetuloa Duckin puolelle!"; -/* 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"; diff --git a/DuckDuckGo/fr.lproj/Autocomplete.strings b/DuckDuckGo/fr.lproj/Autocomplete.strings index c66742b4bb..be60c7e41b 100644 --- a/DuckDuckGo/fr.lproj/Autocomplete.strings +++ b/DuckDuckGo/fr.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Label"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Label"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Aucune suggestion"; diff --git a/DuckDuckGo/fr.lproj/Localizable.strings b/DuckDuckGo/fr.lproj/Localizable.strings index 2f8e4e4f7d..5dd2f16fa4 100644 --- a/DuckDuckGo/fr.lproj/Localizable.strings +++ b/DuckDuckGo/fr.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Gérer"; +/* Button label for OK action */ +"action.ok" = "OK"; + /* Add action - button shown in alert */ "action.title.add" = "Ajouter"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "URL copiée"; /* Delete action - button shown in alert */ -"action.title.delete" = "Supprimer"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Désactiver la protection de la confidentialité"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Impossible de supprimer les données du serveur."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Pour jumeler ces appareils, désactivez Synchronisation et sauvegarde sur un appareil, puis appuyez sur « Synchroniser avec un autre appareil » sur l'autre appareil."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Impossible de supprimer cet appareil de Synchronisation et sauvegarde."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Hier"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Gérer les fenêtres contextuelles (cookies)"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Non merci"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Il semble que ce site ait une fenêtre contextuelle de consentement aux cookies👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Voulez-vous que je m'en charge ? Je peux essayer de minimiser les cookies, de maximiser la confidentialité et de masquer les fenêtres contextuelles comme celles-ci."; - /* No comment provided by engineer. */ "dax.hide.button" = "Masquer les conseils définitivement"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo pour iOS"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "Protection des e-mails"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Procurez-vous DuckDuckGo pour Mac !"; -/* 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 ?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "VPN DuckDuckGo"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Politique de confidentialité"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Accepter et continuer"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "La Network Protection est gratuite pendant l'accès anticipé."; +"network-protection.waitlist.availability-disclaimer" = "DuckDuckGo VPN est gratuit pendant l'accès anticipé."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Accepter et continuer"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Bénéficiez d'une protection supplémentaire en ligne grâce au VPN conçu pour la vitesse et la simplicité. Chiffrez votre connexion Internet sur l'ensemble de votre appareil et masquez votre emplacement et votre adresse IP sur les sites que vous consultez."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Vous êtes invité à essayer la Network Protection en avant-première !"; +"network-protection.waitlist.invited.title" = "Vous êtes invité à essayer DuckDuckGo VPN pendant l'accès anticipé !"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Sécurisez votre connexion à tout moment, où que vous soyez grâce à la Network Protection, le VPN de DuckDuckGo."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Inscrivez-vous sur la liste d'attente et nous vous informerons quand viendra votre tour."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "Accès anticipé au VPN"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Vous êtes sur liste d'attente !"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Nous vous informerons lorsque votre invitation sera prête."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Nous vous enverrons une notification lorsque votre invitation à tester la Network Protection sera prête."; +"network-protection.waitlist.notification-alert.description" = "Nous vous enverrons une notification lorsque votre invitation à tester DuckDuckGo VPN sera prête."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Recevez une notification lorsque votre copie de l'accès anticipé à la Network Protection sera prête."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Ouvrez votre invitation"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "La Network Protection est prête !"; +"network-protection.waitlist.notification.title" = "Votre VPN DuckDuckGo est prêt !"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Votre invitation est prête !"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Rejoindre la liste d'attente privée"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "FAQ VPN DuckDuckGo"; + +/* 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…"; + /* 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" = "Vous êtes invité à essayer la Network Protection"; +"network.protection.invite.dialog.title" = "Vous êtes invité à essayer DuckDuckGo VPN"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Ouvrir le VPN"; /* 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 - %@"; +"network.protection.status.connected.format" = "Connecté · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Connectez-vous pour sécuriser tout le trafic\ntrafic Internet de votre appareil."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Le trafic Internet de tous les appareils est sécurisé\nvia le VPN."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "Le VPN DuckDuckGo est désactivé"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "Le VPN DuckDuckGo est activé"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Gérer"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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 %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Activer les notifications"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Autorisez DuckDuckGo à vous avertir si votre connexion échoue ou si l'état de votre VPN change."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "À propos"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Recevez une notification si votre connexion échoue ou si l'état de votre VPN change."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "Alertes VPN"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Volume de données"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Permettez au trafic local de contourner le VPN et connectez-vous aux appareils de votre réseau local, tels qu'une imprimante."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Localisation connectée"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "%d cities"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(La plus proche)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Connectez-vous automatiquement au serveur le plus proche que nous trouvons."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Emplacement sélectionné"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "Notifications VPN"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Emplacement le plus proche"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "Notre VPN utilise Secure DNS pour préserver la confidentialité de votre activité en ligne, afin que votre fournisseur d'accès Internet ne puisse pas voir les sites Web que vous consultez."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Foire aux questions"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Partagez vos commentaires sur le VPN"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "Paramètres VPN"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "OK"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Protections de la confidentialité"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "Logo DuckDuckGo"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "DuckDuckGo est une société indépendante de confidentialité sur internet fondée en 2008, destinée à tous ceux qui en ont assez d'être suivis en ligne et qui veulent une solution simple. Nous sommes la preuve que vous pouvez bénéficier d'une véritable protection de la confidentialité en ligne, sans avoir à faire de compromis.\n\nLe navigateur DuckDuckGo est doté des fonctionnalités que vous attendez d'un navigateur de référence, comme les signets, les onglets et les mots de passe, entre autres, auxquels s'ajoutent plus d'[une douzaine de protections puissantes de la confidentialité](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/) que la plupart des navigateurs populaires ne proposent pas par défaut. Cet ensemble unique et complet de protections de la confidentialité permet de préserver vos activités en ligne, de la recherche à la navigation, en passant par l'envoi d'e-mails, etc.\n\nInutile de s'y connaître en détails techniques ou de gérer des paramètres complexes pour faire fonctionner nos protections de la confidentialité. Il vous suffit d'opter pour le navigateur DuckDuckGo sur tous vos appareils afin de pouvoir bénéficier de la confidentialité par défaut.\n\nMais si vous voulez vous faire une idée, vous trouverez plus d'informations sur le fonctionnement des protections de la confidentialité DuckDuckGo sur nos [pages d'aide](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Accessibilité"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Ajouter l'application à votre Dock"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Ajouter le widget à l'écran d'accueil"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Position de la barre d'adresse"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Barre d'adresse"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Afficher l'adresse complète du site"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Verrouillage de l'application"; /* Section footer Autolock description */ -"settings.autolock.description" = "Si Touch ID, Face ID ou un code d'accès au système est mis en place, il vous sera demandé de déverrouiller l'application lors de l'ouverture."; +"settings.autolock.description" = "Si Touch ID, Face ID ou un code d'accès au système est activé, il vous sera demandé de déverrouiller l'application lors de son ouverture."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Effacer automatiquement les données"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Protection contre les fenêtres contextuelles des cookies"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo essaiera de sélectionner les paramètres de confidentialité les plus élevés et de masquer ces fenêtres contextuelles pour vous.\n[En savoir plus](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Gérer les fenêtres contextuelles (cookies)"; /* Settings title for the customize section */ "settings.customize" = "Personnaliser"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Définir comme navigateur par défaut"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Effacement des données"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "Protection des e-mails"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Navigateur par défaut"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Désactiver la saisie automatique Email Protection"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo sur d'autres plateformes"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Bloquez les traqueurs d'e-mails et masquez votre adresse, sans changer de fournisseur de messagerie.\n[En savoir plus](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "La déconnexion de votre compte Email Protection désactivera la saisie automatique Duck Address dans ce navigateur. Vous pouvez toujours utiliser ces adresses et recevoir les e-mails transférés comme d'habitude."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Bloquez les traqueurs d'e-mails et masquez votre adresse"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Activez Email Protection"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Activez la recherche vocale"; + /* Settings cell for Feedback */ "settings.feedback" = "Partagez vos commentaires"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Sites coupe-feu"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Général"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Global Privacy Control (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Clavier"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Autoriser DuckDuckGo à gérer les fenêtres contextuelles de consentement aux cookies"; + /* Settings screen cell text for passwords */ "settings.logins" = "Mots de passe"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Réglages principaux"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Gérer le compte"; + /* Settings title for the 'More' section */ "settings.more" = "Plus de la part de DuckDuckGo"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Autres paramètres de recherche"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Personnalisez votre langue, votre région et plus encore"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Étapes suivantes"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Confidentialité"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Recherche privée"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "DuckDuckGo Private Search est votre moteur de recherche par défaut, qui vous permet d'effectuer des recherches sur le Web sans être suivi(e)."; + +/* Header of settings related to search */ +"settings.search.settings" = "Paramètres de recherche"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Définissez la position de votre barre d'adresse"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Aide"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Synchronisation et sauvegarde"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Recherche vocale privée"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Protection contre le pistage sur le Web"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo bloque automatiquement les traqueurs cachés lorsque vous naviguez sur le Web.\n[En savoir plus](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Envoyer le rapport"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Quel site Web pose problème ?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Activez l'abonnement"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Accédez à votre abonnement Privacy Pro via une adresse e-mail."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Utilisez votre abonnement sur d’autres appareils"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Votre abonnement a été acheté via le Google Play Store. Pour renouveler votre abonnement, ouvrez les paramètres d'abonnement du Google Play Store sur un appareil connecté au même compte Google que celui utilisé lors de l'achat initial de votre abonnement."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Forfaits d'abonnement"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Retour aux paramètres"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Nous avons du mal à nous connecter. Veuillez réessayer plus tard."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Une erreur s'est produite"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Code de récupération copié dans le presse-papiers"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Désactiver la synchronisation ?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Désolés, mais la synchronisation et la sauvegarde sont actuellement indisponibles. Veuillez réessayer ultérieurement."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Protection de la confidentialité désactivée pour %@"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Protections de la confidentialité désactivées pour %@ et rapport envoyé."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Protection de la confidentialité activée pour %@"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Annuler"; /* 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."; +"voiceSearch.footer.note" = "Ajoutez l'option Recherche vocale privée à la barre d'adresse. L'audio n'est ni stocké ni partagé avec qui que ce soit, y compris DuckDuckGo."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "L'audio est traité directement sur l'appareil. Il n'est ni stocké ni partagé avec qui que ce soit, y compris DuckDuckGo."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "OK"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Merci d'avoir testé notre solution ! Pour continuer à utiliser le VPN, abonnez-vous à DuckDuckGo Privacy Pro et bénéficiez de 40 % de réduction avec le code promo MERCI\n\n Offre valable pour une durée limitée uniquement dans la version de bureau du navigateur DuckDuckGo par les testeurs américains qui installent depuis duckduckgo.com/app"; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "L'accès anticipé au VPN DuckDuckGo est terminé"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Autoriser les notifications"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Bienvenue du côté Duck !"; -/* 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"; diff --git a/DuckDuckGo/hr.lproj/Autocomplete.strings b/DuckDuckGo/hr.lproj/Autocomplete.strings index a48328ba33..a7c09203da 100644 --- a/DuckDuckGo/hr.lproj/Autocomplete.strings +++ b/DuckDuckGo/hr.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Label"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Label"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Nema prijedloga"; diff --git a/DuckDuckGo/hr.lproj/Localizable.strings b/DuckDuckGo/hr.lproj/Localizable.strings index 523b20f99b..e9db353d37 100644 --- a/DuckDuckGo/hr.lproj/Localizable.strings +++ b/DuckDuckGo/hr.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Upravljanje"; +/* Button label for OK action */ +"action.ok" = "U redu"; + /* Add action - button shown in alert */ "action.title.add" = "Dodaj"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "URL je kopiran"; /* Delete action - button shown in alert */ -"action.title.delete" = "Izbriši"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Onemogući zaštitu privatnosti"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Nije moguće izbrisati podatke na poslužitelju."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Za uparivanje tih uređaja, isključi Sinkronizaciju i sigurnosno kopiranje na jednom uređaju, a zatim dodirni \"Sinkroniziraj s drugim uređajem\" na drugom uređaju."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Nije moguće ukloniti ovaj uređaj iz Sinkronizacije i sigurnosnog kopiranja."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Jučer"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Upravljanje skočnim prozorima kolačića"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Ne, hvala"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Čini se da ova stranica ima skočni prozor za pristanak na kolačiće👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Da se ja pobrinem za to umjesto tebe? Mogu pokušati minimizirati kolačiće, maksimalno povećati privatnost i sakriti skočne prozore poput ovih."; - /* No comment provided by engineer. */ "dax.hide.button" = "Sakrij savjete zauvijek"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo za iOS"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "Zaštita e-pošte"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Nabavi DuckDuckGo za Mac!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "DuckDuckGo VPN"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Pravila o zaštiti privatnosti"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Prihvati i nastavi"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Zaštita je besplatna za korištenje tijekom ranog pristupa."; +"network-protection.waitlist.availability-disclaimer" = "DuckDuckGo VPN je besplatan za korištenje tijekom ranog pristupa."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Prihvati i nastavi"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Za tebe smo pripremili dodatni sloj mrežne zaštite, s VPN-om dizajniranim za brzinu i jednostavnost. Šifriraj svoju internetsku vezu na cijelom uređaju i sakrij svoju lokaciju i IP adresu od stranica koje posjećuješ."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Pozivamo te da isprobaš rani pristup\nNetwork Protectionu!"; +"network-protection.waitlist.invited.title" = "Pozivamo te da isprobaš rani pristup\nDuckDuckGo VPN-u!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Osiguraj svoju vezu bilo kada i bilo gdje uz Network Protection, VPN tvrtke DuckDuckGo."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Pridruži se listi čekanja, a mi ćemo te obavijestiti kada dođeš na red."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "VPN - rani pristup"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Na popisu ste!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Obavijestit ćemo te kada tvoja pozivnica bude spremna."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Poslat ćemo ti obavijest kada tvoja pozivnica za testiranje Network Protectiona bude spremna."; +"network-protection.waitlist.notification-alert.description" = "Poslat ćemo ti obavijest kada tvoja pozivnica za testiranje DuckDuckGo VPN-a bude spremna."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Primi obavijest kada tvoj primjerak Network Protectiona uz rani pristup bude spreman."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Otvori svoju pozivnicu"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Network Protection je spreman!"; +"network-protection.waitlist.notification.title" = "DuckDuckGo VPN je spreman!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Tvoja pozivnica je spremna!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Pridružite se privatnoj listi čekanja"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "Česta pitanja o DuckDuckGo VPN-u"; + +/* 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..."; + /* 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" = "Imaš poziv za isprobavanje Network Protectiona"; +"network.protection.invite.dialog.title" = "Imaš poziv da isprobaš DuckDuckGo VPN"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Otvori VPN"; /* 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 - %@"; +"network.protection.status.connected.format" = "Povezano · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Poveži se i osiguraj internetski promet\nna svim svojim uređajima."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Sav internetski promet uređaja osiguran je\nputem VPN-a."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "DuckDuckGo VPN je isključen"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "DuckDuckGo VPN je uključen"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Upravljanje"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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 %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Uključi obavijesti"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Dopusti DuckDuckGou da te obavijesti ako se tvoja veza prekine ili se status VPN-a promijeni."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "O nama"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Primaj obavijesti ako se tvoja veza prekine ili se status VPN-a promijeni."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "VPN upozorenja"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Količina podataka"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Neka lokalni promet zaobiđe VPN i poveže se s uređajima na tvojoj lokalnoj mreži, poput pisača."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Povezana lokacija"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "%d gradova"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Najbliža)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Automatski se poveži s najbližim poslužiteljem koji možemo pronaći."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Odabrana lokacija"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "VPN obavijesti"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Najbliža lokacija"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "Naš VPN koristi Secure DNS kako bi tvoje mrežne aktivnosti bile privatne, tako da tvoj davatelj internetskih usluga ne može vidjeti koje web stranice posjećuješ."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Najčešća pitanja"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Podijeli povratne informacije o VPN-u"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "VPN postavke"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "U redu"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Zaštita privatnosti"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "Logotip DuckDuckGo"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "DuckDuckGo neovisna je tvrtka za privatnost na internetu osnovana 2008. godine. Namijenjena je svakome tko je umoran od toga da ga prate na internetu i želi jednostavno rješenje za to. Mi smo dokaz da je prava zaštita privatnosti na internetu moguća bez kompromisa.\n\nPreglednik DuckDuckGo dolazi sa značajkama koje očekujete od preglednika, kao što su oznake, kartice, lozinke i još mnogo toga, plus više od [desetak moćnih zaštita privatnosti](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/) nije ponuđeno u većini popularnih preglednika prema zadanim postavkama. Ovaj jedinstveno sveobuhvatan skup zaštita privatnosti pomaže u zaštiti tvojih mrežnih aktivnosti, od pretraživanja do pregledavanja, slanja e-pošte i još mnogo toga.\n\nNaša zaštita privatnosti funkcionira bez potrebe da znamo bilo što o tehničkim detaljima ili da se bavimo kompliciranim postavkama. Sve što trebaš učiniti jest prebaciti svoj preglednik na DuckDuckGo na svim svojim uređajima i prema zadanim postavkama dobivaš našu zaštitu privatnosti.\n\nAli ako *želite* zaviriti \"ispod haube\", više o tome kako DuckDuckGo zaštita privatnosti funkcionira možeš pronaći na našim [stranicama pomoći](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Pristupačnost"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Dodajte aplikaciju na Dock"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Dodajte widget na početni zaslon"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Položaj adresne trake"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Adresna traka"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Pokaži cijelu adresu web-mjesta"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Zaključavanje aplikacije"; /* Section footer Autolock description */ -"settings.autolock.description" = "Ako su postavljeni Touch ID, Face ID ili pristupni kôd sustava, od tebe će se tražiti da otključaš aplikaciju prilikom otvaranja."; +"settings.autolock.description" = "Ako su omogućeni Touch ID, Face ID ili pristupna šifra sustava, od tebe će se tražiti da otključaš aplikaciju prilikom otvaranja."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Automatsko brisanje podataka"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Zaštita od kolačića i skočnih prozora"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo će pokušati odabrati najprivatnije dostupne postavke i sakriti skočne prozore za tebe.\n[Saznaj više](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Upravljanje skočnim prozorima kolačića"; /* Settings title for the customize section */ "settings.customize" = "Prilagodba"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Postavi kao zadani preglednik"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Brisanje podataka"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "Zaštita e-pošte"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Zadani preglednik"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Onemogući automatsko popunjavanje podataka za zaštitu e-pošte Email protection"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo na drugim platformama"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Blokiraj programe za praćenje e-pošte i sakrij svoju adresu bez promjene pružatelja usluga e-pošte.\n[Saznaj više](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Odjava s računa za Email Protection onemogućit će automatsko popunjavanje Duck Address u ovom pregledniku. I dalje možeš koristiti ove adrese i primati proslijeđenu e-poštu kao i obično."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Blokiraj programe za praćenje e-pošte i sakrij svoju adresu"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Omogući Email Protection"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Omogući glasovno pretraživanje"; + /* Settings cell for Feedback */ "settings.feedback" = "Podijeli povratne informacije"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Zaštićena web-mjesta"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Općenito"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Globalna kontrola privatnosti (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Tipkovnica"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Neka DuckDuckGo upravlja skočnim prozorima za pristanak na kolačiće"; + /* Settings screen cell text for passwords */ "settings.logins" = "Lozinke"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Glavne postavke"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Upravljanje računom"; + /* Settings title for the 'More' section */ "settings.more" = "Više od DuckDuckGoa"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Dodatne postavke pretraživanja"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Prilagodi svoj jezik, regiju i još mnogo toga"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Sljedeći koraci"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Zaštita privatnosti"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Privatno pretraživanje"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "DuckDuckGo Private Search tvoja je zadana tražilica, tako da možeš pretraživati web bez praćenja."; + +/* Header of settings related to search */ +"settings.search.settings" = "Postavke pretraživanja"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Postavi položaj adresne trake"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Podrška"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Sinkronizacija i sigurnosno kopiranje"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Privatno glasovno pretraživanje"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Zaštita od praćenja na webu"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo automatski blokira skrivene alate za praćenje dok pregledavaš web.\n[Saznaj više](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Pošalji izvješće"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Koje je web-mjesto neispravno?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Aktiviraj pretplatu"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Pristupi svojoj pretplati na Privacy Pro putem adrese e-pošte."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Koristi svoju pretplatu na drugim uređajima"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Tvoja pretplata kupljena je putem trgovine Google Play. Za obnavljanje pretplate, otvori postavke pretplate na Google Play Storeu na uređaju koji je prijavljen na isti Google račun koji je upotrijebljen za prvobitnu kupnju pretplate."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Pretplatnički paketi"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Povratak na postavke"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Imamo problema s povezivanjem. Pokušaj ponovno nešto kasnije."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Nešto nije bilo kako treba"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Šifra za oporavak kopirana je u međuspremnik"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Želiš li isključiti sinkronizaciju?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Nažalost, Sync & Backup (sinkronizacija i sigurnosno kopiranje) trenutno nisu dostupni. Pokušaj ponovno nešto kasnije."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Zaštita privatnosti je onemogućena za %@"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Zaštita privatnosti je onemogućena za %@ i izvještaj je poslan."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Zaštita privatnosti je omogućena za %@"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Otkaži"; /* 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."; +"voiceSearch.footer.note" = "Dodaj opciju privatnog glasovnog pretraživanja na adresnu traku. Zvuk se ne pohranjuje i ne dijeli ni s kim, uključujući DuckDuckGo."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "Zvuk se obrađuje na uređaju. Ne pohranjuje se i ne dijeli ni s kim, uključujući DuckDuckGo."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "U redu"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Hvala ti što sudjeluješ u testiranju! Za nastavak korištenja VPN-a, pretplati se na DuckDuckGo Privacy Pro i ostvari 40 % popusta uz promotivni kôd THANKYOU\n\nPonudu mogu iskoristiti na ograničeno vrijeme i samo u stolnoj verziji preglednika DuckDuckGo američki testeri koji instaliraju s duckduckgo.com/app"; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "Rani pristup DuckDuckGo VPN-u je završen"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Dopusti obavijesti"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Dobrodošli na našu stranu!"; -/* 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"; diff --git a/DuckDuckGo/hu.lproj/Autocomplete.strings b/DuckDuckGo/hu.lproj/Autocomplete.strings index a0bb374271..2e992007a1 100644 --- a/DuckDuckGo/hu.lproj/Autocomplete.strings +++ b/DuckDuckGo/hu.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Címke"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Címke"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Nincs javaslat"; diff --git a/DuckDuckGo/hu.lproj/Localizable.strings b/DuckDuckGo/hu.lproj/Localizable.strings index c8035891c5..661fa3fe17 100644 --- a/DuckDuckGo/hu.lproj/Localizable.strings +++ b/DuckDuckGo/hu.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Kezelés"; +/* Button label for OK action */ +"action.ok" = "OK"; + /* Add action - button shown in alert */ "action.title.add" = "Hozzáadás"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "URL lemásolva"; /* Delete action - button shown in alert */ -"action.title.delete" = "Törlés"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Adatvédelem letiltása"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Nem sikerült adatokat törölni a szerveren."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Az eszközök párosításához kapcsold ki a Szinkronizálás és biztonsági mentés funkciót az egyik eszközön, majd koppints a „Szinkronizálás másik eszközzel” lehetőségre a másik eszközön."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Az eszközt nem sikerült eltávolítani a Szinkronizálás és biztonsági mentés funkcióból."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Tegnap"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Felugró sütiablakok kezelése"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Nem, köszönöm"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Úgy tűnik, hogy az oldalon sütik elfogadására szolgáló felugró ablak van👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Elintézzem helyetted? Megpróbálhatom minimalizálni a sütiket, maximalizálni az adatvédelmet, illetve elrejteni az ilyen felugró ablakokat."; - /* No comment provided by engineer. */ "dax.hide.button" = "Ötletek elrejtése örökre"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck-cím"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo iOS verzió"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "E-mail védelem"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Töltsd le a DuckDuckGo Mac verzióját!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "DuckDuckGo VPN"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Adatvédelmi szabályzat"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Elfogadás és folytatás"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "A hálózatvédelem a korai hozzáférés során ingyenesen használható."; +"network-protection.waitlist.availability-disclaimer" = "A DuckDuckGo VPN a korai hozzáférés során ingyenesen használható."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Elfogadás és folytatás"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Tegyél szert extra online védelemre a gyors és egyszerű VPN segítségével. Titkosítsd a teljes eszközöd internetkapcsolatát, és rejtsd el a tartózkodási helyed, illetve az IP-címed a meglátogatott webhelyek elől."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Meghívót kaptál a hálózatvédelem\nkorai hozzáférésének kipróbálására!"; +"network-protection.waitlist.invited.title" = "Meghívót kaptál a DuckDuckGo VPN korai hozzáférésének kipróbálására!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "A DuckDuckGo VPN-megoldásának, a hálózatvédelmi funkciónak a segítségével bármikor és bárhol biztonságosabbá teheted a kapcsolatod."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Iratkozz fel a várólistára, és értesítést kapsz, ha rád kerül a sor."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "VPN korai hozzáférés"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Felkerültél a listára!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Értesítünk, ha elkészült a meghívód."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Értesítést küldünk, ha a hálózatvédelem tesztelésére szóló meghívód elkészült."; +"network-protection.waitlist.notification-alert.description" = "Értesítést küldünk, ha a DuckDuckGo VPN tesztelésére szóló meghívód elkészült."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Értesítést kapsz, ha a hálózatvédelmi funkció korai hozzáférésű változata elérhetővé válik."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Meghívó megnyitása"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "A hálózatvédelem elérhető!"; +"network-protection.waitlist.notification.title" = "Elkészült a DuckDuckGo VPN!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "A meghívód elkészült!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Csatlakozz a privát várólistához"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "DuckDuckGo VPN – gyakori kérdések"; + +/* 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…"; + /* 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" = "Meghívót kaptál a hálózatvédelem kipróbálására"; +"network.protection.invite.dialog.title" = "Meghívót kaptál a DuckDuckGo VPN kipróbálására"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "VPN megnyitása"; /* 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 - %@"; +"network.protection.status.connected.format" = "Csatlakoztatva · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Csatlakozz az összes eszköz internetes\nforgalmának védelméhez."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "A VPN védi az összes eszköz\ninternetes forgalmát."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "A DuckDuckGo VPN ki van kapcsolva"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "A DuckDuckGo VPN be van kapcsolva"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Kezelés"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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: %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Értesítések bekapcsolása"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Engedélyezd, hogy a DuckDuckGo értesítsen, ha a kapcsolat megszakad vagy a VPN állapota megváltozik."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "Rólunk"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Kapj értesítést, ha a kapcsolat megszakad vagy a VPN állapota megváltozik."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "VPN-figyelmeztetések"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Adatmennyiség"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Engedd, hogy a helyi forgalom megkerülje a VPN-t, és csatlakozz a helyi hálózaton található eszközökhöz úgy, mint egy nyomtatóhoz."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Csatlakoztatott hely"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "%d város"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Legközelebbi)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Automatikus csatlakozás az általunk talált legközelebbi szerverhez."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Kiválasztott hely"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "VPN-értesítések"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Legközelebbi hely"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "A VPN-ünk biztonságos DNS használatával tartja titokban az online tevékenységedet, így az internetszolgáltatód nem láthatja, hogy milyen webhelyeket látogatsz meg."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Gyakori kérdések"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "VPN-visszajelzés megosztása"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "VPN-beállítások"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "OK"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Adatvédelem"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "DuckDuckGo logó"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "A 2008-ban alapított független internetes adatvédelmi cég, a DuckDuckGo egyszerű megoldást kínál azoknak, akiknek elegük van abból, hogy állandóan nyomon követik őket az interneten. Mi vagyunk annak a bizonyítéka, hogy kompromisszumok nélkül is lehet valódi online adatvédelmet biztosítani.\n\nA DuckDuckGo böngésző rendelkezik a böngészőktől elvárt funkciókkal, mint például könyvjelzők, lapok, jelszavak és egyéb funkciók, valamint több mint [egy tucat olyan hatékony adatvédelmi megoldással](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/), amelyet a legtöbb népszerű böngésző nem kínál alapértelmezés szerint. Ezek az egyedülállóan átfogó adatvédelmi megoldások segítenek megvédeni online tevékenységeid, legyen szó keresésről, böngészésről, e-mailezésről vagy sok minden másról.\n\nAdatvédelmi megoldásaink anélkül működnek, hogy bármit is tudnod kellene a technikai részletekről vagy bonyolult beállításokkal kellene foglalkoznod. Mindössze annyit kell tenned, hogy minden eszközödön a DuckDuckGo böngészőre váltasz, és máris igénybe veheted az alapértelmezés szerinti adatvédelmet.\n\nHa azonban *igazán* szeretnél bepillantani a motorháztető alá is, a [súgóoldalainkon](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/) további információkat találhatsz a DuckDuckGo adatvédelmi megoldásainak működéséről."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Kisegítő lehetőségek"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Alkalmazás hozzáadása a dokkodhoz"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Minialkalmazás hozzáadása a kezdőképernyőhöz"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Címsor elhelyezkedése"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Címsor"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Teljes webhelycím megjelenítése"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Alkalmazás zárolás"; /* Section footer Autolock description */ -"settings.autolock.description" = "Ha be van állítva ujjlenyomat- vagy arcfelismerés, illetve rendszerjelszó, megnyitásakor fel kell oldanod az alkalmazást."; +"settings.autolock.description" = "Ha az ujjlenyomat- vagy az arcfelismerés, illetve rendszerjelszó engedélyezve van, az alkalmazást annak megnyitásakor fel kell oldanod."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Adatok automatikus törlése"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Felugró sütiablak elleni védelem"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "A DuckDuckGo megpróbálja kiválasztani a rendelkezésre álló leginkább privát beállításokat, és elrejteni az ilyen felugró ablakokat.\n[További részletek](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Felugró sütiablakok kezelése"; /* Settings title for the customize section */ "settings.customize" = "Testreszabás"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Beállítás alapértelmezett böngészőként"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Adattörlés"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "E-mail védelem"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Alapértelmezett böngésző"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Email Protection automatikus kitöltésének letiltása"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo más platformokhoz"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Tiltsd le az e-mail-nyomkövetőket, és rejtsd el a címedet anélkül, hogy e-mail-szolgáltatót váltanál.\n[További információ](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Az Email Protection-fiókból való kijelentkezés letiltja a Duck Address automatikus kitöltését ebben a böngészőben. Továbbra is használhatod ezeket a címeket, és a szokásos módon megkaphatod a továbbított e-maileket."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "E-mail nyomkövetők letiltása, és a cím elrejtése"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "E-mail-védelem engedélyezése"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Beszédhangalapú keresés engedélyezése"; + /* Settings cell for Feedback */ "settings.feedback" = "Visszajelzés megosztása"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Tűzálló weboldalak"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Általános"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Nemzetközi adatvédelmi szabályozás (Global Privacy Control, GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Billentyűzet"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "A DuckDuckGo kezelheti a sütik elfogadására szolgáló felugró ablakokat"; + /* Settings screen cell text for passwords */ "settings.logins" = "Jelszavak"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Főbeállítások"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Fiók kezelése"; + /* Settings title for the 'More' section */ "settings.more" = "Továbbiak a DuckDuckGo-tól"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "További keresési beállítások"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Szabd személyre a nyelvet, a régiót és egyebeket"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Következő lépések"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Adatvédelem"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "privát keresés"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "A DuckDuckGo Private Search az alapértelmezett keresőmotor, így nyomon követés nélkül kereshetsz az interneten."; + +/* Header of settings related to search */ +"settings.search.settings" = "Keresési beállítások"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Állítsd be a címsor elhelyezkedését"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Támogatás"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Szinkronizálás és biztonsági mentés"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Privát beszédhangalapú keresés"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Webes követés elleni védelem"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "A DuckDuckGo böngészés közben automatikusan blokkolja a rejtett nyomkövetőket.\n[További információ](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Jelentés beküldése"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Melyik weboldal nem működik?”"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Előfizetés aktiválása"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Hozzáférés a Privacy Pro előfizetéshez egy e-mail címen keresztül."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Használd az előfizetésedet más eszközökön"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Előfizetésed a Google Play áruházban lett megvásárolva. Az előfizetés megújításához nyisd meg a Google Play áruház előfizetési beállításait egy olyan eszközön, amely ugyanabba a Google-fiókba van bejelentkezve, amellyel eredetileg megvásároltad az előfizetést."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Előfizetési csomagok"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Vissza a Beállításokhoz"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Hiba történt a csatlakozáskor. Próbálkozz újra később."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Hiba történt"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Helyreállítási kód a vágólapra másolva"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Szinkronizálás kikapcsolása?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "A szinkronizálás és biztonsági mentés jelenleg sajnos nem érhető el. Próbálkozz újra később."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Adatvédelem letiltva a következőhöz: %@"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "A(z) %@ tartománynév adatvédelme le lett tiltva, és el lett küldve egy jelentés."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Adatvédelem engedélyezve a következőhöz: %@"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Mégsem"; /* 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."; +"voiceSearch.footer.note" = "Privát beszédhangalapú keresési opció hozzáadása a címsorhoz. A hangot nem tároljuk és nem osztjuk meg senkivel, még a DuckDuckGóval sem."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "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."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "OK"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Köszönjük, hogy tesztelő voltál! A VPN további használatához fizess elő a DuckDuckGo Privacy Pro csomagra, és a THANKYOU kóddal 40%-os kedvezményt kapsz.\n\nAz ajánlat csak a DuckDuckGo böngésző asztali verziójában váltható be korlátozott ideig, azon amerikai tesztelők számára, akik a duckduckgo.com/app címről végezték a telepítést."; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "A DuckDuckGo VPN korai hozzáférése véget ért"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Értesítések engedélyezése"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Isten hozott a Kacsa oldalon!"; -/* 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"; diff --git a/DuckDuckGo/it.lproj/Autocomplete.strings b/DuckDuckGo/it.lproj/Autocomplete.strings index 1f9039ef83..fc86e7818a 100644 --- a/DuckDuckGo/it.lproj/Autocomplete.strings +++ b/DuckDuckGo/it.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Etichetta"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Etichetta"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Nessun suggerimento"; diff --git a/DuckDuckGo/it.lproj/Localizable.strings b/DuckDuckGo/it.lproj/Localizable.strings index dd137438ee..92f3696bf9 100644 --- a/DuckDuckGo/it.lproj/Localizable.strings +++ b/DuckDuckGo/it.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Gestisci"; +/* Button label for OK action */ +"action.ok" = "OK"; + /* Add action - button shown in alert */ "action.title.add" = "Aggiungi"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "URL copiato"; /* Delete action - button shown in alert */ -"action.title.delete" = "Cancella"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Disattiva la tutela della privacy"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Impossibile eliminare i dati sul server."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Per accoppiare questi dispositivi, disattiva la sincronizzazione e il backup su un dispositivo e tocca \"Sincronizza con un altro dispositivo\" sull'altro dispositivo."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Impossibile rimuovere questo dispositivo da Sincronizzazione e backup."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Ieri"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"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"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Sembra che su questo sito sia presente un popup per il consenso ai cookie👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Vuoi che me ne occupi io? Posso cercare di ridurre al minimo i cookie, massimizzare la privacy e nascondere i popup come questo."; - /* No comment provided by engineer. */ "dax.hide.button" = "Nascondi suggerimenti per sempre"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo per iOS"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "Protezione email"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Scarica DuckDuckGo per Mac."; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "VPN DuckDuckGo"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Privacy policy"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Accetta e continua"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Network Protection è gratuito durante l'accesso anticipato."; +"network-protection.waitlist.availability-disclaimer" = "DuckDuckGo VPN è gratuito durante l'accesso anticipato."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Accetta e continua"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Ottieni un ulteriore livello di protezione online con la VPN creata per la velocità e la semplicità. Crittografa la tua connessione internet su tutto il dispositivo e nascondi la tua posizione e il tuo indirizzo IP ai siti che visiti."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Ti invitiamo a provare\nNetwork Protection in accesso anticipato!"; +"network-protection.waitlist.invited.title" = "Ti invitiamo a provare\nDuckDuckGo VPN in anteprima!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Proteggi la tua connessione sempre e ovunque con Network Protection, la VPN di DuckDuckGo."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Iscriviti alla lista d'attesa e ti avviseremo quando sarà il tuo turno."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "Accesso anticipato VPN"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Sei in lista d'attesa."; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Ti informeremo quando l'invito sarà pronto."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Ti informeremo quando l'invito a testare Network Protection sarà pronto."; +"network-protection.waitlist.notification-alert.description" = "Ti invieremo una notifica quando il tuo invito a testare DuckDuckGo VPN sarà pronto."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Ricevi una notifica quando la tua copia dell'accesso anticipato a Network Protection sarà pronta."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Apri il tuo invito"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Network Protection è pronto!"; +"network-protection.waitlist.notification.title" = "VPN DuckDuckGo è adesso disponibile."; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Il tuo invito è pronto!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Iscriviti alla lista d'attesa privata"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "Domande frequenti su DuckDuckGo VPN"; + +/* 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..."; + /* 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" = "Ti abbiamo invitato a provare Network Protection"; +"network.protection.invite.dialog.title" = "Hai ricevuto un invito a provare DuckDuckGo VPN"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Apri VPN"; /* 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 - %@"; +"network.protection.status.connected.format" = "Connesso · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Connetti per proteggere tutto il traffico\nInternet del tuo dispositivo."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Tutto il traffico Internet del dispositivo è protetto\n tramite la VPN."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "DuckDuckGo VPN è disattivata"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "DuckDuckGo VPN è attiva"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Gestisci"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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 %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Attiva le notifiche"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Consenti a DuckDuckGo di inviarti notifiche se la tua connessione si interrompe o lo stato della VPN cambia."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "Informazioni"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Ricevi una notifica se la tua connessione si interrompe o lo stato della VPN cambia."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "Avvisi VPN"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Volume dati"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Consenti al traffico locale di bypassare la VPN e connettersi ai dispositivi sulla tua rete locale, come una stampante."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Posizione connessa"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "%d città"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Più vicino)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Connettiti automaticamente al server più vicino che riusciamo a trovare."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Posizione selezionata"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "Notifiche VPN"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Posizione più vicina"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "La nostra VPN utilizza il DNS protetto per mantenere privata la tua attività online, in modo che il tuo provider internet non possa vedere quali siti web visiti."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Domande frequenti"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Condividi feedback sulla VPN"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "Impostazioni VPN"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "OK"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Protezioni della Privacy"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "Logo DuckDuckGo"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "Fondata nel 2008, DuckDuckGo è un'azienda indipendente che tutela la privacy online per tutti coloro che sono stanchi di essere tracciati online e vogliono una soluzione semplice. Siamo la dimostrazione che si può garantire una vera protezione della privacy online senza compromessi.\n\nIl browser DuckDuckGo è ricco di funzioni essenziali come i segnalibri, le schede, le password e molto altro ancora, [oltre a numerose e potenti protezioni della privacy](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/) che normalmente non vengono offerte dai browser più comuni. Stiamo parlando di uno straordinario set completo per la protezione della privacy, che aiuta a proteggere le attività online, dalla ricerca alla navigazione, alle e-mail e molto altro ancora.\n\nCon le nostre protezioni della privacy non è necessario conoscere particolari tecnici o dover affrontare configurazioni complesse. È sufficiente scegliere il browser DuckDuckGo su tutti i dispositivi personali per avere automaticamente garantita la privacy.\n\nPer saperne di più su come funzionano le protezioni della privacy di DuckDuckGo, è possibile consultare le nostre [pagine di aiuto](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Accessibilità"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Aggiungi app al tuo dock"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Aggiungi widget alla schermata iniziale"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Posizione Barra degli indirizzi"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Barra degli indirizzi"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Mostra l'indirizzo completo del sito"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Blocco applicazione"; /* Section footer Autolock description */ -"settings.autolock.description" = "Se hai impostato Touch ID, Face ID o un codice di accesso al sistema, ti verrà richiesto di sbloccare l'app all'apertura."; +"settings.autolock.description" = "Se hai attivato Touch ID, Face ID o un passcode di sistema, ti verrà chiesto di sbloccare l'app al momento dell'apertura."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Cancellazione automatica dei dati"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Protezione pop-up dei cookie"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo cercherà di selezionare le impostazioni con la massima privacy e nasconderà questi popup per te.[Scopri di più](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Gestione popup dei cookie"; /* Settings title for the customize section */ "settings.customize" = "Personalizza"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Imposta come browser predefinito"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Cancellazione dati"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "Protezione email"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Browser predefinito"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Disattiva la compilazione automatica di Email Protection"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo su altre piattaforme"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Blocca i sistemi di tracciamento delle e-mail e nascondi il tuo indirizzo, senza cambiare il provider di posta elettronica.\n[Scopri di più](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "La disconnessione dal tuo account Email Protection disabiliterà la compilazione automatica di Duck Address in questo browser. Puoi comunque utilizzare questi indirizzi e ricevere le e-mail inoltrate come al solito."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Blocca i sistemi di tracciamento delle email e nascondi il tuo indirizzo"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Abilita Email Protection"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Abilita ricerca vocale"; + /* Settings cell for Feedback */ "settings.feedback" = "Condividi feedback"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Siti protetti"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Generale"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Global Privacy Control (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Tastiera"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Consenti a DuckDuckGo di gestire i popup per il consenso ai cookie"; + /* Settings screen cell text for passwords */ "settings.logins" = "Password"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Impostazioni principali"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Gestisci account"; + /* Settings title for the 'More' section */ "settings.more" = "Ulteriori informazioni su DuckDuckGo"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Altre impostazioni di ricerca"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Personalizza la lingua, la regione e altro ancora"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Passaggi successivi"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Privacy"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Ricerca privata"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "DuckDuckGo Private Search è il tuo motore di ricerca predefinito, quindi puoi effettuare ricerche sul Web senza essere tracciato."; + +/* Header of settings related to search */ +"settings.search.settings" = "Impostazioni di ricerca"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Imposta la posizione della barra degli indirizzi"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Supporto"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Sincronizzazione e backup"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Ricerca vocale privata"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Protezione dal tracciamento web"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo blocca automaticamente i sistemi di tracciamento nascosti mentre navighi sul web.\n[Scopri di più](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Invia segnalazione"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Quale sito web è danneggiato?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Attiva abbonamento"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Accedi al tuo abbonamento Privacy Pro tramite un indirizzo e-mail."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Usa il tuo abbonamento su altri dispositivi"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Il tuo abbonamento è stato acquistato tramite Google Play Store. Per effettuare il rinnovo, accedi alle impostazioni dell'abbonamento di Google Play Store su un dispositivo collegato allo stesso account Google utilizzato per effettuare l'acquisto originale dell'abbonamento."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Piani di abbonamento"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Torna a Impostazioni"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Stiamo riscontrando problemi di connessione. Riprova più tardi."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Si è verificato un errore"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Codice di recupero copiato negli appunti"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Disattivare la sincronizzazione?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Siamo spiacenti, ma Sincronizzazione e backup non è attualmente disponibile. Riprova più tardi."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Tutela della privacy disattivata per %@"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Protezioni della Privacy disattivate per %@ e segnalazione inviata."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Tutela della privacy attivata per %@"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Annulla"; /* 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."; +"voiceSearch.footer.note" = "Aggiungi l'opzione di ricerca vocale alla barra degli indirizzi. L'audio non viene memorizzato né condiviso, nemmeno con DuckDuckGo."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "L'audio viene elaborato sul dispositivo e non viene memorizzato né condiviso con altri utenti, nemmeno con DuckDuckGo."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "OK"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Grazie per aver partecipato ai test! Per continuare a usare la VPN di DuckDuckGo, iscriviti a DuckDuckGo Privacy Pro e ricevi uno sconto del 40% con il codice promozionale THANKYOU\n\nL'offerta è valida per un periodo limitato e solo sulla versione desktop del browser DuckDuckGo per i tester statunitensi che effettuano l'installazione da duckduckgo.com/app"; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "L'accesso anticipato a DuckDuckGo VPN è terminato"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Consenti notifiche"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Dax the Duck ti dà il benvenuto!"; -/* 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"; diff --git a/DuckDuckGo/lt.lproj/Autocomplete.strings b/DuckDuckGo/lt.lproj/Autocomplete.strings index 71af6b4b0d..5a588567ea 100644 --- a/DuckDuckGo/lt.lproj/Autocomplete.strings +++ b/DuckDuckGo/lt.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Etiketė"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Etiketė"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Pasiūlymų nėra"; diff --git a/DuckDuckGo/lt.lproj/Localizable.strings b/DuckDuckGo/lt.lproj/Localizable.strings index 720b341b24..84d57c61fa 100644 --- a/DuckDuckGo/lt.lproj/Localizable.strings +++ b/DuckDuckGo/lt.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Tvarkyti"; +/* Button label for OK action */ +"action.ok" = "GERAI"; + /* Add action - button shown in alert */ "action.title.add" = "Papildyti"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "URL nukopijuotas"; /* Delete action - button shown in alert */ -"action.title.delete" = "Trinti"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Išjungti privatumo apsaugą"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Nepavyko ištrinti duomenų serveryje."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Šiems įrenginiams susieti viename įrenginyje išjunk funkciją „Sinchronizuoti ir sukurti atsarginę kopiją“, tada kitame įrenginyje bakstelėk „Sinchronizuoti su kitu įrenginiu“."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Nepavyko pašalinti šio įrenginio iš sinchronizavimo ir atsarginės kopijos kūrimo."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Vakar"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Valdyti slapukų iššokančiuosius langus"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Ne, dėkoju"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Atrodo, kad šioje svetainėje yra sutikimo su slapukais iššokantysis langas👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Norite, kad viską sutvarkyčiau? Galiu pabandyti sumažinti slapukų skaičių, sustiprinti privatumą ir paslėpti tokius iššokančiuosius langus."; - /* No comment provided by engineer. */ "dax.hide.button" = "Slėpti patarimus visam laikui"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "„Duck Address“"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "„iOS“ skirta „DuckDuckGo“"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "El. pašto apsauga"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Gaukite „Mac“ skirtą „DuckDuckGo“!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "DuckDuckGo VPN"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Privatumo Politika"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Sutikti ir tęsti"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Tinklo apsauga galima nemokamai naudotis ankstyvos prieigos metu."; +"network-protection.waitlist.availability-disclaimer" = "„DuckDuckGo“ VPN galima nemokamai naudoti ankstyvosios prieigos metu."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Sutikti ir tęsti"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Gaukite papildomą apsaugos internete lygį naudodami VPN, sukurtą greičiui ir paprastumui užtikrinti. Užšifruokite interneto ryšį visame įrenginyje ir paslėpkite savo buvimo vietą bei IP adresą lankomose svetainėse."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Kviečiame išbandyti ankstyvą prieigą prie\ntinklo apsaugos!"; +"network-protection.waitlist.invited.title" = "Kviečiame išbandyti ankstyvąją prieigą prie „DuckDuckGo“ VPN!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Apsaugokite savo ryšį bet kada ir bet kur naudodami „DuckDuckGo“ VPN tinklo apsaugą."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Prisijunkite prie laukiančiųjų sąrašo ir mes jums pranešime, kai ateis jūsų eilė."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "VPN ankstyvoji prieiga"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Esate sąraše!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Pranešime jums, kai jūsų pakvietimas bus paruoštas."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Atsiųsime jums pranešimą, kai bus paruoštas jūsų pakvietimas išbandyti tinklo apsaugą."; +"network-protection.waitlist.notification-alert.description" = "Atsiųsime jums pranešimą, kai jūsų pakvietimas išbandyti „DuckDuckGo“ VPN bus paruoštas."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Gaukite pranešimą, kai bus paruošta ankstyvos prieigos prie tinklo apsaugos kopija."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Atidaryti pakvietimą"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Tinklo apsauga paruošta!"; +"network-protection.waitlist.notification.title" = "„DuckDuckGo“ VPN paruoštas!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Jūsų pakvietimas paruoštas!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Prisijungti prie privataus laukimo sąrašo"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "„DuckDuckGo“ VPN DUK"; + +/* 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..."; + /* 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" = "Kviečiame išbandyti tinklo apsaugą"; +"network.protection.invite.dialog.title" = "Esate kviečiami išbandyti „DuckDuckGo“ VPN"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "„DuckDuckGo“"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Atviras VPN"; /* 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 - %@"; +"network.protection.status.connected.format" = "Prisijungta · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Prisijunkite, kad apsaugotumėte visų savo įrenginių\ninterneto srautą."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Visas įrenginio interneto srautas yra apsaugotas\nnaudojant VPN."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "„DuckDuckGo“ VPN išjungtas"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "„DuckDuckGo“ VPN įjungtas"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Tvarkyti"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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 %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Įjungti pranešimus"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Leiskite „DuckDuckGo“ pranešti, jei nutrūksta ryšys arba pasikeičia VPN būsena."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "Apie"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Gaukite pranešimą, jei nutrūksta ryšys arba pasikeičia VPN būsena."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "VPN įspėjimai"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Duomenų kiekis"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Leiskite vietiniam srautui apeiti VPN ir prisijungti prie vietinio tinklo įrenginių, pavyzdžiui, spausdintuvo."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Prijungta vieta"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "%d miest."; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Artimiausia)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Automatiškai prisijungti prie artimiausio serverio, kurį randame."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Pasirinkta vieta"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "VPN pranešimai"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Artimiausia vieta"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "Mūsų VPN naudoja saugų DNS siekiant apsaugoti jūsų privatumą internete, kad jūsų interneto tiekėjas negalėtų matyti, kokiose svetainėse lankotės."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Dažnai užduodami klausimai"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Pateikti atsiliepimą apie VPN"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "VPN nustatymai"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "GERAI"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Privatumo apsaugos priemonės"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "„DuckDuckGo“ logotipas"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "„DuckDuckGo“ yra nepriklausoma interneto privatumo bendrovė, įkurta 2008 metais ir skirta visiems, kurie pavargo nuo sekimo internete ir nori lengvo sprendimo. Esame įrodymas, kad galite gauti tikrą privatumo apsaugą internete be kompromisų.\n\n„DuckDuckGo“ naršyklėje yra funkcijos, kurių tikitės iš pagrindinės naršyklės, pvz., žymės, skirtukai, slaptažodžiai ir dar daugiau, taip pat [keliolika galingų privatumo apsaugos priemonių](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/) pagal numatytuosius nustatymus nėra siūlomas daugelyje populiarių naršyklių. Šis unikalus išsamus privatumo apsaugos rinkinys padeda apsaugoti jūsų veiklą internete – nuo paieškos iki naršymo, el. pašto ir kt.\n\nMūsų privatumo apsaugos priemonės veikia nereikalaudamos nieko žinoti apie technines detales ar naudotis sudėtingais nustatymais. Tereikia visuose įrenginiuose perjungti naršyklę į „DuckDuckGo“ ir privatumas bus užtikrintas pagal numatytuosius nustatymus.\n\nTačiau jei norite žvilgtelėti po gaubtu, daugiau informacijos apie tai, kaip veikia „DuckDuckGo“ privatumo apsauga, galite rasti mūsų [pagalbos puslapiuose] (ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Pritaikymas neįgaliems"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Įtraukti programėlę į stotelę"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Įtraukti valdiklį į pagrindinį ekraną"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Adreso juostos padėtis"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Adreso juosta"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Rodyti visą svetainės adresą"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Programos užraktas"; /* Section footer Autolock description */ -"settings.autolock.description" = "Jei nustatytas „Touch ID“, „Face ID“ arba sistemos slaptažodis, prieš atidarydami būsite paprašyti atrakinti programą."; +"settings.autolock.description" = "Jei įjungtas „Touch ID“, „Face ID“ arba sistemos slaptažodis, prieš atidarydami programą būsite paprašyti ją atrakinti."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Automatiškai valyti duomenis"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Apsauga nuo slapukų iškylančiųjų langų"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "„DuckDuckGo“ bandys pasirinkti didžiausią privatumą užtikrinančius nustatymus ir paslėpti šiuos iškylančiuosius langus.\n[Sužinokite daugiau](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Valdyti slapukų iššokančiuosius langus"; /* Settings title for the customize section */ "settings.customize" = "Tinkinti"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Nustatyti kaip numatytąją naršyklę"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Duomenų valymas"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "El. pašto apsauga"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Numatytoji naršyklė"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Išjungti „Email Protection“ automatinį užpildymą"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "„DuckDuckGo“ kitose platformose"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Užblokuokite el. pašto adresų stebėjimo priemones ir paslėpkite savo adresą nekeisdami el. pašto paslaugų teikėjo.\n[Sužinokite daugiau](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Atsijungus nuo „Email Protection“ paskyros, šioje naršyklėje bus išjungtas automatinis „Duck Address“ užpildymas. Vis dar galite naudoti šiuos adresus ir gauti persiųstus el. laiškus kaip įprastai."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Blokuokite el. laiškų sekimo priemones ir paslėpkite savo adresą"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Įjungti „Email Protection“"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Įgalinti paiešką balsu"; + /* Settings cell for Feedback */ "settings.feedback" = "Bendrinti atsiliepimą"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Apsaugoti svetaines"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Bendrai"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Visuotinė privatumo kontrolė (VPK)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Klaviatūra"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Leiskite „DuckDuckGo“ valdyti sutikimo su slapukais iššokančiuosius langus"; + /* Settings screen cell text for passwords */ "settings.logins" = "Slaptažodžiai"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Pagrindiniai nustatymai"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Tvarkyti paskyrą"; + /* Settings title for the 'More' section */ "settings.more" = "Daugiau iš „DuckDuckGo“"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Daugiau paieškos nustatymų"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Tinkinkite savo kalbą, regioną ir kt."; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Tolesni veiksmai"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Privatumas"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "privati paieška"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "„DuckDuckGo Private Search“ yra jūsų numatytoji paieškos sistema, todėl galite ieškoti žiniatinklyje nesekami."; + +/* Header of settings related to search */ +"settings.search.settings" = "Paieškos nustatymai"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Nustatykite adreso juostos padėtį"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Pagalba"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Sinchronizuoti ir kurti atsarginę kopiją"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Privati paieška balsu"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Apsauga nuo žiniatinklio sekimo"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "„DuckDuckGo“ automatiškai blokuoja paslėptas stebėjimo priemones naršant internete.\n[Sužinokite daugiau](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Pateikti ataskaitą"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Kuri svetainė neveikia?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Aktyvuoti prenumeratą"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Pasiekite „Privacy Pro“ prenumeratą naudodami el. pašto adresą."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Naudokite prenumeratą kituose įrenginiuose"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Jūsų prenumerata buvo įsigyta per „Google Play“ parduotuvę. Norėdami atnaujinti prenumeratą, atidarykite „Google Play“ parduotuvės prenumeratos nustatymus įrenginyje, prisijungusiame prie tos pačios „Google“ paskyros, kuri buvo naudojama iš pradžių prenumeratai įsigyti."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Prenumeratos planai"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Grįžti į nustatymus"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Mums kyla problemų prijungiant. Bandykite dar kartą vėliau."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Įvyko klaida"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Atkūrimo kodas nukopijuotas į mainų sritį"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Išjungti sinchronizavimą?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Atsiprašome, bet sinchronizavimas ir atsarginės kopijos kūrimas šiuo metu nepasiekiami. Pabandykite dar kartą vėliau."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Privatumo apsauga išjungta %@"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "%@ privatumo apsauga išjungta ir ataskaita išsiųsta."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Privatumo apsauga įjungta %@"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Atšaukti"; /* Voice-search footer note with on-device privacy warning */ -"voiceSearch.footer.note" = "Garsas apdorojamas įrenginyje. Jis nesaugomas ir su niekuo, įskaitant „DuckDuckGo“, nebendrinamas."; +"voiceSearch.footer.note" = "Adreso juostoje pridėkite privačios paieškos balsu parinktį. Garso įrašai nesaugomi ir jais su niekuo nesidalijama, įskaitant „DuckDuckGo“."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "Garsas apdorojamas įrenginyje. Jis nesaugomas ir su niekuo, įskaitant „DuckDuckGo“, nebendrinamas."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "GERAI"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Dėkojame, kad esate bandytojas! Jei norite toliau naudoti VPN, užsiprenumeruokite „DuckDuckGo Privacy Pro“ ir gaukite 40 % nuolaidą panaudodami akcijos kodą THANKYOU\n\nPasiūlymu ribotą laiką gali pasinaudoti tik JAV bandytojai, įsidiegę naršyklės „DuckDuckGo“ stalinio kompiuterio versiją iš duckduckgo.com/app."; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "„DuckDuckGo“ VPN ankstyvosios prieigos laikotarpis baigėsi"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Leisti pranešimus"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Sveiki prisijungę prie „Duck“!"; -/* 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"; diff --git a/DuckDuckGo/lv.lproj/Autocomplete.strings b/DuckDuckGo/lv.lproj/Autocomplete.strings index 5c381dc168..d07ece2fba 100644 --- a/DuckDuckGo/lv.lproj/Autocomplete.strings +++ b/DuckDuckGo/lv.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Etiķete"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Etiķete"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Nav ieteikumu"; diff --git a/DuckDuckGo/lv.lproj/Localizable.strings b/DuckDuckGo/lv.lproj/Localizable.strings index 8ae49b7a96..02c34c5630 100644 --- a/DuckDuckGo/lv.lproj/Localizable.strings +++ b/DuckDuckGo/lv.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Pārvaldīt"; +/* Button label for OK action */ +"action.ok" = "Labi"; + /* Add action - button shown in alert */ "action.title.add" = "Pievienot"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "URL ir nokopēts"; /* Delete action - button shown in alert */ -"action.title.delete" = "Dzēst"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Atspējot privātuma aizsardzību"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Nespēj izdzēst datus serverī."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Lai šīs ierīces savienotu pārī, vienā ierīcē izslēdz sinhronizēšanu un dublēšanu un pēc tam otrā ierīcē nospied \"Sinhronizēt ar citu ierīci\"."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Nevar noņemt šo ierīci no sinhronizācijas un dublēšanas."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Vakar"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Pārvaldīt sīkfailu uznirstošos logus"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Nē, paldies"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Izskatās, ka šajā vietnē ir sīkfailu piekrišanas uznirstošais logs👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Vai vēlies, lai es tos apstrādāju tavā vietā? Es varu mēģināt samazināt sīkfailus, maksimāli pastiprināt privātumu un paslēpt šādus uznirstošos logus."; - /* No comment provided by engineer. */ "dax.hide.button" = "Paslēpt padomus uz visiem laikiem"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck adrese"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo operētājsistēmai iOS"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "E-pasta aizsardzība"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Iegūsti DuckDuckGo Mac datoram!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "DuckDuckGo VPN"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Privātuma politika"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Piekrist un turpināt"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Agrīnās piekļuves laikā Network Protection var izmantot bez maksas."; +"network-protection.waitlist.availability-disclaimer" = "DuckDuckGo VPN var izmantot bez maksas agrīnās piekļuves laikā."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Piekrist un turpināt"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Iegūsti papildu aizsardzības līmeni tiešsaistē, izmantojot ātru un vienkāršu VPN. Šifrē interneta savienojumu visā ierīcē un paslēp savu atrašanās vietu un IP adresi no apmeklētajām vietnēm."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Aicinām tevi izmēģināt\nNetwork Protection agrīno piekļuvi!"; +"network-protection.waitlist.invited.title" = "Aicinām tevi izmēģināt\nDuckDuckGo VPN agrīno piekļuvi!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Parūpējies par sava savienojuma drošumu jebkurā laikā un vietā, izmantojot DuckDuckGo VPN – Network Protection."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Pievienojies gaidīšanas sarakstam, un mēs paziņosim, kad pienāks tava kārta."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "VPN agrīnā piekļuve"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Tu esi sarakstā!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Mēs tev paziņosim, kad tavs ielūgums būs gatavs."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Mēs tev nosūtīsim paziņojumu, kad tavs uzaicinājums testēt Network Protection būs gatavs."; +"network-protection.waitlist.notification-alert.description" = "Mēs nosūtīsim tev paziņojumu, kad tavs uzaicinājums izmēģināt DuckDuckGo VPN būs gatavs."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Saņem paziņojumu, kad tava Network Protection agrīnā piekļuve būs gatava."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Atver savu ielūgumu"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Network Protection ir gatavs!"; +"network-protection.waitlist.notification.title" = "DuckDuckGo VPN ir gatavs!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Tavs ielūgums ir gatavs!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Pievienojies privātajam nogaides sarakstam"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "Bieži uzdotie jautājumi par DuckDuckGo VPN "; + +/* 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..."; + /* 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" = "Tu esi uzaicināts izmēģināt Network Protection"; +"network.protection.invite.dialog.title" = "Tu esi uzaicināts izmēģināt DuckDuckGo VPN"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Atvērt VPN"; /* 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 - %@"; +"network.protection.status.connected.format" = "Savienots · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Izveido savienojumu, lai aizsargātu visu savu ierīču\nInterneta trafiku."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Visu ierīču Interneta trafiks tiek aizsargāts,\n izmantojot VPN."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "DuckDuckGo VPN ir izslēgts"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "DuckDuckGo VPN ir ieslēgts"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Pārvaldīt"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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: %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Ieslēgt paziņojumus"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Ļauj DuckDuckGo tev paziņot, ja savienojums pārtrūkst vai mainās VPN statuss."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "Par"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Saņem paziņojumu, ja savienojums pārtrūkst vai mainās VPN statuss."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "VPN brīdinājumi"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Datu apjoms"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Ļauj vietējai datplūsmai apiet VPN un izveidot savienojumu ar ierīcēm tavā vietējā tīklā, piemēram, printeri."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Savienojuma atrašanās vieta"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "%d pilsētas"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Tuvākais)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Automātiski izveido savienojumu ar tuvāko serveri, ko varam atrast."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Izvēlētā atrašanās vieta"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "VPN paziņojumi"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Tuvākā atrašanās vieta"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "Mūsu VPN izmanto Secure DNS, lai saglabātu tavu privātumu tiešsaistē un lai interneta pakalpojumu sniedzējs neredzētu, kādas vietnes tu apmeklē."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Bieži uzdotie jautājumi"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Sniedziet atsauksmi par VPN"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "VPN iestatījumi"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "Labi"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Privātuma aizsardzība"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "DuckDuckGo logotips"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "DuckDuckGo ir neatkarīgs 2008. gadā dibināts interneta privātuma uzņēmums ikvienam, kam ir apnikusi izsekošana tiešsaistē un kas vēlas vienkāršu risinājumu. Mēs esam pierādījums tam, ka tiešsaistē var iegūt reālu privātuma aizsardzību bez kompromisiem.\n\nDuckDuckGo pārlūks sniedz visas iespējas, ko gaidi no pārlūkprogrammas, piemēram, grāmatzīmes, cilnes, paroles un citas, kā arī vairāk nekā [duci spēcīgu privātuma aizsardzības funkciju](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/) pēc noklusējuma netiek piedāvāts lielākajā daļā populārāko pārlūkprogrammu. Šis unikāli visaptverošais privātuma aizsardzības komplekts palīdz aizsargāt tavas darbības tiešsaistē, sākot no meklēšanas līdz pārlūkošanai, e-pasta sūtīšanai u.c.\n\nMūsu privātuma aizsardzība darbojas vienmēr – tev nav jāpārzina sarežģīti tehniskie aspekti vai iestatījumi. Tev vienkārši jālieto DuckDuckGo pārlūks visās savās ierīcēs, un privātums būs tavs standarta risinājums.\n\nBet, ja vēlies paskatīties, kas lācītim vēderā, vairāk informācijas par to, kā darbojas DuckDuckGo privātuma aizsardzība, vari atrast mūsu [palīdzības lapās](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Pieejamība"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Pievienot lietotni dokam"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Pievienot logrīku sākuma ekrānam"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Adreses joslas pozīcija"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Adreses josla"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Rādīt pilnu vietnes adresi"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Lietojumprogrammas bloķēšana"; /* Section footer Autolock description */ -"settings.autolock.description" = "Ja ir iestatīts Touch ID, Face ID vai sistēmas piekļuves kods, atverot lietotni, tev tā būs jāatbloķē."; +"settings.autolock.description" = "Ja ir iespējots Touch ID, Face ID vai sistēmas piekļuves kods, atverot lietotni, tev tā būs jāatbloķē."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Automātiski notīrīt datus"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Sīkfailu uznirstošo logu aizsardzība"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo mēģinās izvēlēties visprivātākos pieejamos iestatījumus un paslēpt šos uznirstošos logus tavā vietā.\n[Uzzini vairāk](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Pārvaldīt sīkfailu uznirstošos logus"; /* Settings title for the customize section */ "settings.customize" = "Pielāgošana"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Iestatīt kā noklusējuma pārlūku"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Datu notīrīšana"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "E-pasta aizsardzība"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Noklusējuma pārlūks"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Atspējot Email Protection automātisko aizpildīšanu"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo citās platformās"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Bloķē e-pasta izsekotājus un paslēp savu adresi, nemainot e-pasta pakalpojumu sniedzēju.\n[Uzzini vairāk](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Izrakstoties no Email Protection konta, šajā pārlūkprogrammā tiks atspējota Duck Address automātiskā aizpildīšana. Tu joprojām vari izmantot šīs adreses un saņemt pārsūtīto e-pastu kā parasti."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Bloķē e-pasta izsekotājus un paslēp savu adresi"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Iespējo e-pasta aizsardzību"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Iespējot balss meklēšanu"; + /* Settings cell for Feedback */ "settings.feedback" = "Kopīgot atsauksmi"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Ugunsdrošas vietnes"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Vispārīgi"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Globālā privātuma kontrole (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Tastatūra"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Ļaut DuckDuckGo pārvaldīt sīkfailu piekrišanas uznirstošos logus"; + /* Settings screen cell text for passwords */ "settings.logins" = "Paroles"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Galvenie iestatījumi"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Pārvaldīt kontu"; + /* Settings title for the 'More' section */ "settings.more" = "Vairāk no DuckDuckGo"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Vairāk meklēšanas iestatījumu"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Pielāgo savu valodu, reģionu un citus iestatījumus"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Nākamie soļi"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Privātums"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Privāta meklēšana"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "DuckDuckGo Private Search ir tava noklusējuma meklētājprogramma, tāpēc vari meklēt tīmeklī, netiekot izsekotam."; + +/* Header of settings related to search */ +"settings.search.settings" = "Meklēšanas iestatījumi"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Iestati adreses joslas pozīciju"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Atbalsts"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Sinhronizācija un dublēšana"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Privātā balss meklēšana"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Tīmekļa izsekošanas aizsardzība"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo automātiski bloķē slēptos izsekotājus, kad tu pārlūko tīmekli.\n[Uzzini vairāk](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Iesniegt ziņojumu"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Kura vietne ir bojāta?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Aktivizēt abonementu"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Piekļūsti savam Privacy Pro abonementam, izmantojot e-pasta adresi."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Izmanto savu abonementu citās ierīcēs"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Tavs abonements tika iegādāts Google Play veikalā. Lai atjaunotu abonementu, lūdzu, atver Google Play veikala abonēšanas iestatījumus ierīcē, kas ir pierakstījusies tajā pašā Google kontā, kurā sākotnēji iegādājies abonementu."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Abonēšanas plāni"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Atpakaļ uz iestatījumiem"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Mums ir problēmas ar savienojuma izveidi. Lūdzu, mēģini vēlreiz vēlāk."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Kaut kas notika nepareizi"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Atgūšanas kods ir nokopēts starpliktuvē"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Izslēgt sinhronizāciju?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Diemžēl sinhronizācija un dublēšana pašlaik nav pieejama. Lūdzu, mēģini vēlreiz vēlāk."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "%@ privātuma aizsardzība ir atspējota"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Privacy Protections ir atspējots domēnam %@ un ziņojums ir nosūtīts."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "%@ ir iespējota privātuma aizsardzība"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Atcelt"; /* 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."; +"voiceSearch.footer.note" = "Pievienot adreses joslai opciju \"Privātā meklēšana ar balsi\". Audioieraksti netiek saglabāti un kopīgoti ar citiem, pat ne ar DuckDuckGo."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "Audio tiek apstrādāts ierīcē. Tas netiek glabāts, un tam nevar piekļūt neviens, pat ne DuckDuckGo."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "Labi"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Paldies, ka esi testētājs! Lai turpinātu izmantot VPN, abonē DuckDuckGo Privacy Pro un saņem 40% atlaidi ar kodu THANKYOU\n\nPiedāvājums ir pieejams tikai ierobežotu laiku, un to var izmantot tikai DuckDuckGo pārlūkprogrammas galddatora versijas ASV testētāji, kas instalē no duckduckgo.com/app"; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "DuckDuckGo VPN agrīnā piekļuve ir beigusies"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Atļaut paziņojumus"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Sveicināti Duck pusē!"; -/* 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"; diff --git a/DuckDuckGo/nb.lproj/Autocomplete.strings b/DuckDuckGo/nb.lproj/Autocomplete.strings index 354f980641..ea1b6d87ca 100644 --- a/DuckDuckGo/nb.lproj/Autocomplete.strings +++ b/DuckDuckGo/nb.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Etikett"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Etikett"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Ingen forslag"; diff --git a/DuckDuckGo/nb.lproj/Localizable.strings b/DuckDuckGo/nb.lproj/Localizable.strings index f16ca64f4c..ded69da56c 100644 --- a/DuckDuckGo/nb.lproj/Localizable.strings +++ b/DuckDuckGo/nb.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Administrere"; +/* Button label for OK action */ +"action.ok" = "OK"; + /* Add action - button shown in alert */ "action.title.add" = "Legg til"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "Nettadresse kopiert"; /* Delete action - button shown in alert */ -"action.title.delete" = "Slett"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Deaktiver personvernbeskyttelse"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Kan ikke slette data på serveren."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "For å pare disse enhetene må du slå av «Synkronisering og sikkerhetskopiering» på den ene enheten og trykke på «Synkroniser med en annen enhet» på den andre."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Kan ikke fjerne denne enheten fra Synkronisering og sikkerhetskopiering."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "I går"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Administrer vinduer om informasjonskapsler"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Nei takk"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Det ser ut til at dette nettstedet har et popup-vindu om samtykke til informasjonskapsler👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Skal jeg håndtere dette for deg? Jeg kan prøve å minimere informasjonskapslene, maksimere personvernet og skjule popup-vinduer som dette."; - /* No comment provided by engineer. */ "dax.hide.button" = "Skjul tips for alltid"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck-adresse"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo for iOS"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "E-postbeskyttelse"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Skaff deg DuckDuckGo for Mac!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "DuckDuckGo VPN"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Personvernerklæring"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Enig og fortsett"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Bruk av Nettverksbeskyttelse er gratis under tidlig tilgang."; +"network-protection.waitlist.availability-disclaimer" = "DuckDuckGo VPN er gratis under tidlig tilgang."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Godta og fortsett"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Få et ekstra lag med beskyttelse på nett med et raskt og lettvint VPN. Krypter internettforbindelsen på hele enheten, og hold posisjonen og IP-adressen din skjult for nettsteder du besøker."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Du er invitert til å prøve\ntidlig tilgang til Nettverksbeskyttelse!"; +"network-protection.waitlist.invited.title" = "Du er invitert til å prøve\ntidlig tilgang til DuckDuckGo VPN!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Sikre tilkoblingen din når som helst og hvor som helst med Nettverksbeskyttelse, VPN-et fra DuckDuckGo."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Sett deg på ventelisten, så varsler vi deg når det er din tur."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "Tidlig tilgang til VPN"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Du står på listen!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Vi varsler deg når invitasjonen din er klar."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Vi sender deg en varsling når invitasjonen din til å teste Nettverksbeskyttelse er klar."; +"network-protection.waitlist.notification-alert.description" = "Vi sender deg et varsel når invitasjonen din til å teste DuckDuckGo VPN er klar."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Få en varsling når eksemplaret ditt av tidlig tilgang til Nettverksbeskyttelse er klart."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Åpne invitasjonen din"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Nettverksbeskyttelsen er klar!"; +"network-protection.waitlist.notification.title" = "DuckDuckGo VPN er klar!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Invitasjonen din er klar!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Sett deg på den private ventelisten"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "Vanlige spørsmål om DuckDuckGo VPN"; + +/* 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å..."; + /* 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" = "Du er invitert til å prøve Nettverksbeskyttelse"; +"network.protection.invite.dialog.title" = "Du er invitert til å prøve DuckDuckGo VPN"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Åpne VPN"; /* 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 - %@"; +"network.protection.status.connected.format" = "Tilkoblet · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Koble til for å sikre all internettrafikk\npå enheten din."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "All internettrafikk på enheten blir sikret\ngjennom VPN."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "DuckDuckGo VPN er av"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "DuckDuckGo VPN er på"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Administrere"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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 %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Slå på varslinger"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Tillat DuckDuckGo å varsle deg hvis tilkoblingen blir brutt eller VPN-statusen endret."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "Om"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Få varsel hvis tilkoblingen blir brutt eller VPN-statusen endret."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "VPN-varsler"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Datavolum"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "La lokal trafikk omgå VPN-et og koble til enheter på det lokale nettverket, for eksempel en skriver."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Tilkoblet sted"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "%d byer"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Nærmeste)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Koble automatisk til nærmeste server vi kan finne."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Valgt sted"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "VPN-varsler"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Nærmeste sted"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "Vi holder nettaktiviteten din privat med Secure DNS, slik at internettleverandøren din ikke kan se hvilke nettsteder du besøker."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Ofte stilte spørsmål"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Del tilbakemelding om VPN"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "VPN-innstillinger"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "OK"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Personvern"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "DuckDuckGo-logo"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "DuckDuckGo er et uavhengig personvernselskap som ble grunnlagt i 2008, for alle som er lei av å bli sporet på nettet og vil ha en enkel løsning. Vi er beviset på at ekte personvern er mulig på nettet uten å fire på kravene.\n\nDuckDuckGo-nettleseren har funksjoner du kan forvente i en vanlig nettleser, som bokmerker, faner, passord med mer, pluss over [en rekke kraftige personvernfunksjoner](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/) ikke tilbys i de fleste populære nettlesere som standard. Disse usedvanlig omfattende personvernfunksjonene bidrar til å beskytte nettaktivitetene dine, fra søk til surfing, e-poster med mer.\n\nPersonvernfunksjonene fungerer uten at du behøver å kunne noe om de tekniske detaljene eller forholde deg til kompliserte innstillinger. Det eneste du behøver å gjøre, er å bytte nettleser til DuckDuckGo på alle enhetene dine, så får du personvern som standard.\n\nMen hvis du *vil* ta en titt under panseret, kan du finne mer informasjon om hvordan DuckDuckGos personvern fungerer på våre [hjelpesider](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Tilgjengelighet"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Legg til appen i docken"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Legg til widgeten på startskjermen"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Plassering av adressefelt"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Adressefelt"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Vis fullstendig nettstedsadresse"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Applås"; /* Section footer Autolock description */ -"settings.autolock.description" = "Hvis du har touch-ID, face-ID eller systempassord, blir du bedt om å låse opp appen når du åpner den."; +"settings.autolock.description" = "Hvis Touch ID, Face ID eller et systempassord er aktivert, blir du bedt om å låse opp appen når du åpner den."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Slett data automatisk"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Beskyttelse mot popup-vinduer om informasjonskapsler"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo prøver å velge de mest private innstillingene som er tilgjengelige, og skjule disse popup-vinduene for deg.\n[Finn ut mer](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Administrer vinduer om informasjonskapsler"; /* Settings title for the customize section */ "settings.customize" = "Tilpass"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Gjør til standardnettleser"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Sletting av data"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "E-postbeskyttelse"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Standardnettleser"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Deaktiver automatisk utfylling for Email Protection"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo på andre plattformer"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Blokker e-postsporere og skjul adressen din uten å bytte e-postleverandør.\n[Finn ut mer](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Hvis du logger av Email Protection-kontoen, blir automatisk utfylling med Duck Address i denne nettleseren deaktivert. Du kan fortsatt bruke disse adressene og motta videresendt e-post som vanlig."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Blokker e-postsporere og skjul adressen din"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Aktiver e-postbeskyttelse"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Aktiver talesøk"; + /* Settings cell for Feedback */ "settings.feedback" = "Del tilbakemelding"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Brannsikre nettsteder"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Generelt"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Global Privacy Control (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Tastatur"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "La DuckDuckGo administrere popup-vinduer om samtykke til informasjonskapsler"; + /* Settings screen cell text for passwords */ "settings.logins" = "Passord"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Hovedinnstillinger"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Administrer konto"; + /* Settings title for the 'More' section */ "settings.more" = "Mer fra DuckDuckGo"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Flere søkeinnstillinger"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Tilpass språk, region m.m."; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Neste trinn"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Personvern"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Privat søk"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "DuckDuckGo Private Search er standardsøkemotoren din, så du kan søke på nettet uten å bli sporet."; + +/* Header of settings related to search */ +"settings.search.settings" = "Søkeinnstillinger"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Angi plassering av adressefeltet"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Støtte"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Synkronisering og sikkerhetskopiering"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Privat talesøk"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Beskyttelse mot nettsporing"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo blokkerer automatisk skjulte sporere når du surfer på nettet.\n[Finn ut mer](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Send inn rapport"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Hvilket nettsted fungerer ikke?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Aktiver abonnement"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Få tilgang til Privacy Pro-abonnementet ditt via en e-postadresse."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Bruk abonnementet ditt på andre enheter"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Abonnementet ditt ble kjøpt gjennom Google Play Store. Hvis du vil fornye abonnementet, må du åpne abonnementsinnstillingene for Google Play Store på en enhet som er logget på den samme Google-kontoen som du brukte til å kjøpe abonnementet."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Abonnementer"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Tilbake til Innstillinger"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Vi har problemer med å koble til. Prøv igjen senere."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Noe gikk galt"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Gjenopprettingskoden er kopiert til utklippstavlen"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Vil du slå av synkronisering?\n"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Beklager, men synkronisering og sikkerhetskopiering er ikke tilgjengelig for øyeblikket. Prøv igjen senere."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Personvern er deaktivert for %@"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Personvern er deaktivert for %@, og en rapport er sendt."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Personvern er aktivert for %@"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Avbryt"; /* 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."; +"voiceSearch.footer.note" = "Legg til alternativet privat talesøk i adressefeltet. Lydopptakene verken lagres eller deles med noen, inkludert DuckDuckGo."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "Lyd behandles på enheten. Den lagres ikke og deles ikke med noen, heller ikke med DuckDuckGo."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "OK"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Takk for at du stiller opp som tester! Hvis du vil fortsette å bruke VPN-tjenesten, kan du abonnere på DuckDuckGo Privacy Pro og få 40 % rabatt med kampanjekoden THANKYOU.\n\nTilbudet kan kun innløses i en begrenset periode i skrivebordsversjonen av DuckDuckGo-nettleseren av amerikanske testere som installerer på duckduckgo.com/app."; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "Tidlig tilgang til DuckDuckGo VPN er over"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Tillat varsler"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Velkommen til «the Duck Side»!"; -/* 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"; diff --git a/DuckDuckGo/nl.lproj/Autocomplete.strings b/DuckDuckGo/nl.lproj/Autocomplete.strings index 9b94d8034b..48aa629891 100644 --- a/DuckDuckGo/nl.lproj/Autocomplete.strings +++ b/DuckDuckGo/nl.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Label"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Label"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Geen suggesties"; diff --git a/DuckDuckGo/nl.lproj/Localizable.strings b/DuckDuckGo/nl.lproj/Localizable.strings index 3e5bf63133..29139e5061 100644 --- a/DuckDuckGo/nl.lproj/Localizable.strings +++ b/DuckDuckGo/nl.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Beheren"; +/* Button label for OK action */ +"action.ok" = "OK"; + /* Add action - button shown in alert */ "action.title.add" = "Toevoegen"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "URL gekopieerd"; /* Delete action - button shown in alert */ -"action.title.delete" = "Verwijderen"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Privacybescherming uitschakelen"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Kan gegevens niet verwijderen op de server."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Schakel 'Synchronisatie en back-up' uit op één apparaat en tik op 'Synchroniseren met een ander apparaat' op het andere apparaat om de apparaten te koppelen."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Het apparaat kan niet worden verwijderd uit 'Synchronisatie en back-up'."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Gisteren"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Cookiepop-ups beheren"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Nee, bedankt"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Het lijkt erop dat deze site een pop-up met toestemming voor cookies heeft👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Wil je dat ik deze voor je afhandel? Ik kan proberen cookies te minimaliseren, privacy te maximaliseren en pop-ups zoals deze te verbergen."; - /* No comment provided by engineer. */ "dax.hide.button" = "Tips voor altijd verbergen"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo voor iOS"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "E-mailbescherming"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Download DuckDuckGo voor Mac!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "DuckDuckGo VPN"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Privacybeleid"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Akkoord en doorgaan"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Netwerkbeveiliging is gratis te gebruiken tijdens vroege toegang."; +"network-protection.waitlist.availability-disclaimer" = "DuckDuckGo VPN is gratis te gebruiken tijdens vroege toegang."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Akkoord en doorgaan"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Krijg online extra bescherming met een snelle en eenvoudige VPN. Versleutel je internetverbinding op je hele apparaat en verberg je locatie en IP-adres voor sites die je bezoekt."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Je bent uitgenodigd om \n Netwerk Protection als een van de eersten te proberen!"; +"network-protection.waitlist.invited.title" = "Je bent uitgenodigd om DuckDuckGo VPN als een van de eersten te proberen!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Beveilig je verbinding altijd en overal met Network Protection, de VPN van DuckDuckGo."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Schrijf je in op de wachtlijst, dan laten wij je weten wanneer je Network Protection kan testen."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "VPN vroege toegang"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Je staat op de lijst!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "We laten je weten wanneer je uitgenodigd wordt."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "We sturen je een melding wanneer je uitnodiging om Network Protection te testen klaar is."; +"network-protection.waitlist.notification-alert.description" = "We sturen je een melding wanneer je uitnodiging om DuckDuckGo VPN te testen klaar is."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Ontvang een melding wanneer je Network Protection als een van de eersten mag gebruiken."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Open je uitnodiging"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Network Protection is klaar!"; +"network-protection.waitlist.notification.title" = "DuckDuckGo VPN is klaar!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Je uitnodiging is klaar!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Schrijf je in voor de privéwachtlijst"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "DuckDuckGo VPN FAQ"; + +/* 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 ..."; + /* 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" = "Je bent uitgenodigd om Network Protection uit te proberen"; +"network.protection.invite.dialog.title" = "Je bent uitgenodigd om DuckDuckGo VPN uit te proberen"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "VPN openen"; /* 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 - %@"; +"network.protection.status.connected.format" = "Verbonden · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Maak verbinding om het internetverkeer van al je\napparaten te beveiligen."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Al het internetverkeer van apparaten wordt beveiligd\nvia de VPN."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "DuckDuckGo VPN is uitgeschakeld"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "DuckDuckGo VPN is ingeschakeld"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Beheren"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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 %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Meldingen inschakelen"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Ontvang meldingen van DuckDuckGo als je verbinding wegvalt of de VPN-status verandert."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "Over"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Ontvang een melding als je verbinding wegvalt of de VPN-status verandert."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "VPN-meldingen"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Datavolume"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Laat lokaal verkeer de VPN omzeilen en maak verbinding met apparaten in je lokale netwerk, zoals een printer."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Verbonden locatie"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "%d steden"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Dichtstbijzijnde)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Maak automatisch verbinding met de dichtstbijzijnde server die we kunnen vinden."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Geselecteerde locatie"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "VPN-meldingen"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Dichtstbijzijnde locatie"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "Onze VPN gebruikt beveiligde DNS om je online activiteiten privé te houden, zodat je internetprovider niet kan zien welke websites je bezoekt."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Veelgestelde vragen"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "VPN-feedback delen"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "VPN-instellingen"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "OK"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Privacybescherming"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "Logo DuckDuckGo"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "DuckDuckGo is het onafhankelijke internetprivacybedrijf, opgericht in 2008, voor iedereen die het beu is om online gevolgd te worden en daar een eenvoudige oplossing voor wil. Wij zijn het bewijs dat je privacy op internet écht beschermd kan worden zonder compromissen.\n\nDe DuckDuckGo-browser wordt geleverd met de functies die je van een webbrowser verwacht, zoals bladwijzers, tabbladen, wachtwoorden en meer, plus meer dan [een dozijn krachtige tools om je privacy te beschermen](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/) die niet standaard worden aangeboden in de meeste populaire browsers. Deze unieke, uitgebreide privacybescherming helpt je online activiteiten te beschermen – of je nu zoekt, surft of mailt.\n\nJe hoeft niets te weten over de technische details of ingewikkelde instellingen om te profiteren van onze privacybescherming. Je hoeft alleen maar DuckDuckGo op al je apparaten te installeren en geniet dan standaard van privacy.\n\nMaar als je *een kijkje onder de motorkap* wilt, vind je meer informatie over de privacybescherming van DuckDuckGo op onze [hulppagina's](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Toegankelijkheid"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "App toevoegen aan je dock"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Widget toevoegen aan startscherm"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Positie van adresbalk"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Adresbalk"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Volledig siteadres weergeven"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "App-vergrendeling"; /* Section footer Autolock description */ -"settings.autolock.description" = "Als je Touch ID, Face ID of een systeemwachtwoord hebt ingesteld, word je gevraagd om de app te ontgrendelen als je deze opent."; +"settings.autolock.description" = "Als Touch ID, Face ID of een systeemwachtwoord is ingeschakeld, word je gevraagd om de app te ontgrendelen als je deze opent."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Gegevens automatisch wissen"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Bescherming tegen cookiepop-ups"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo zal proberen de meest privacyvriendelijke instellingen te selecteren en deze pop-ups voor je verbergen.\n[Meer informatie](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Cookiepop-ups beheren"; /* Settings title for the customize section */ "settings.customize" = "Aanpassen"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Instellen als standaardbrowser"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Gegevens wissen"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "E-mailbescherming"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Standaardbrowser"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Automatisch invullen van Email Protection uitschakelen"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo op andere platforms"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Blokkeer e-mailtrackers en verberg je adres, zonder van e-mailprovider te wisselen.\n[Meer informatie](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/wat-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Als je je afmeldt bij je Email Protection-account, wordt het automatisch invullen van het Duck Address in deze browser uitgeschakeld. Je kunt deze adressen nog steeds gebruiken en doorgestuurde e-mails blijven ontvangen."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Blokkeer e-mailtrackers en verberg je adres"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "E-mailbeveiliging inschakelen"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Zoeken via spraak inschakelen"; + /* Settings cell for Feedback */ "settings.feedback" = "Feedback delen"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Brandveilige websites"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Algemeen"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Global Privacy Control (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Toetsenbord"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Laat DuckDuckGo pop-ups voor cookietoestemming beheren"; + /* Settings screen cell text for passwords */ "settings.logins" = "Wachtwoorden"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Hoofdinstellingen"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Account beheren"; + /* Settings title for the 'More' section */ "settings.more" = "Meer over DuckDuckGo"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Meer zoekinstellingen"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Taal, regio en meer aanpassen"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Volgende stappen"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Privacy"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Privé-zoekopdracht"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "DuckDuckGo Private Search is je standaardzoekmachine, zodat je op het web kunt zoeken zonder gevolgd te worden."; + +/* Header of settings related to search */ +"settings.search.settings" = "Zoekinstellingen"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Positie van adresbalk instellen"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Support"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Synchronisatie en back-up"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Private spraakzoekopdracht"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Bescherming tegen webtracking"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo blokkeert automatisch verborgen trackers terwijl je op het web surft.\n[Meer informatie](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Rapport versturen"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Welke website is defect?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Abonnement activeren"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Krijg toegang tot je Privacy Pro-abonnement via een e-mailadres."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Gebruik je abonnement op andere apparaten"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Je abonnement is aangeschaft via de Google Play Store. Om je abonnement te verlengen, open je de abonnementsinstellingen van de Google Play Store op een apparaat dat is aangemeld bij hetzelfde Google-account waarmee je het abonnement hebt gekocht."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Abonnementsformules"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Terug naar Instellingen"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Er zijn problemen met de verbinding. Probeer het later opnieuw."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Er is iets misgegaan"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Herstelcode gekopieerd naar klembord"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Synchronisatie uitschakelen?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Sorry, maar synchroniseren en back-up is momenteel niet beschikbaar. Probeer het later opnieuw."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Privacybescherming uitgeschakeld voor %@"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Privacybescherming uitgeschakeld voor %@ en rapport verzonden."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Privacybescherming ingeschakeld voor %@"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Annuleren"; /* 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."; +"voiceSearch.footer.note" = "Voeg de optie 'Private spraakopdracht' toe aan de adresbalk. Audio wordt niet opgeslagen en met niemand gedeeld, ook niet met DuckDuckGo."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "Audio wordt op het apparaat verwerkt. Het wordt niet opgeslagen of met iemand gedeeld, ook niet met DuckDuckGo."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "OK"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Bedankt dat je wilt testen! Om de VPN te blijven gebruiken, neem je een abonnement op DuckDuckGo Privacy Pro en krijg je 40% korting met de kortingscode THANKYOU\n\nAanbieding beperkte tijd geldig voor de desktopversie van de DuckDuckGo-browser voor Amerikaanse testers die installeren vanaf duckduckgo.com/app"; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "De vroege toegang tot DuckDuckGo VPN is voorbij"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Meldingen toestaan"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Welkom bij de Duck kant!"; -/* 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"; diff --git a/DuckDuckGo/pl.lproj/Autocomplete.strings b/DuckDuckGo/pl.lproj/Autocomplete.strings index 68b0916014..fa6834a1c0 100644 --- a/DuckDuckGo/pl.lproj/Autocomplete.strings +++ b/DuckDuckGo/pl.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Etykieta"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Etykieta"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Brak sugestii"; diff --git a/DuckDuckGo/pl.lproj/Localizable.strings b/DuckDuckGo/pl.lproj/Localizable.strings index 10a92f8686..946aeff2c3 100644 --- a/DuckDuckGo/pl.lproj/Localizable.strings +++ b/DuckDuckGo/pl.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Zarządzaj"; +/* Button label for OK action */ +"action.ok" = "OK"; + /* Add action - button shown in alert */ "action.title.add" = "Dodaj"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "Skopiowano adres URL"; /* Delete action - button shown in alert */ -"action.title.delete" = "Usuń"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Wyłącz ochronę prywatności"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Nie można usunąć danych z serwera."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Aby sparować te urządzenia, wyłącz synchronizację i kopię zapasową na jednym urządzeniu, a następnie dotknij opcji „Synchronizuj z innym urządzeniem” na drugim urządzeniu."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Nie można usunąć tego urządzenia z synchronizacji i kopii zapasowej."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Wczoraj"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Zarządzaj okienkami z prośbą o zgodę"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Nie, dziękuję"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Wygląda na to, że na tej stronie pojawia się okienko z prośbą o zgodę na używanie plików cookie👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Mamy się tym za Ciebie zająć? Możemy spróbować zminimalizować liczbę plików cookie, zmaksymalizować prywatność i ukryć takie wyskakujące okienka."; - /* No comment provided by engineer. */ "dax.hide.button" = "Ukryj wskazówki na zawsze"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo dla systemu iOS"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "Ochrona poczty e-mail"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Pobierz DuckDuckGo dla komputerów Mac!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "DuckDuckGo VPN"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Polityka prywatności"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Wyraź zgodę i kontynuuj"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "W ramach wczesnego dostępu można korzystać bezpłatnie z usługi ochrony sieci."; +"network-protection.waitlist.availability-disclaimer" = "Usługa DuckDuckGo VPN jest bezpłatna w ramach wczesnego dostępu."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Wyraź zgodę i kontynuuj"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Uzyskaj dodatkową warstwę ochrony w Internecie dzięki sieci VPN opracowanej z myślą o szybkości i prostocie. Zaszyfruj połączenie internetowe na urządzeniu i ukryj swoją lokalizację oraz adres IP przed odwiedzanymi witrynami."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Masz zaproszenie do wypróbowania wczesnego dostępu do usługi ochrony sieci!"; +"network-protection.waitlist.invited.title" = "Masz zaproszenie do wypróbowania wczesnego dostępu do DuckDuckGo VPN!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Zabezpiecz połączenie w dowolnej lokalizacji, korzystając z usługi ochrony sieci VPN DuckDuckGo."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Dołącz do listy oczekujących, aby otrzymać powiadomienie, gdy nadejdzie Twoja kolej."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "Wczesny dostęp VPN"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Jesteś na liście!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Powiadomimy Cię, gdy zaproszenie będzie gotowe."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Wyślemy Ci powiadomienie, gdy zaproszenie do przetestowania usługi ochrony sieci będzie gotowe."; +"network-protection.waitlist.notification-alert.description" = "Wyślemy Ci powiadomienie, gdy zaproszenie do przetestowania DuckDuckGo VPN będzie gotowe."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Otrzymaj powiadomienie, gdy Twoja kopia wczesnego dostępu do usługi ochrony sieci będzie gotowa."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Otwórz zaproszenie"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Ochrona sieci jest gotowa!"; +"network-protection.waitlist.notification.title" = "Usługa DuckDuckGo VPN jest gotowa!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Twoje zaproszenie jest gotowe!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Dołącz do prywatnej listy oczekujących"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "DuckDuckGo VPN — często zadawane pytania"; + +/* 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..."; + /* 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" = "Masz zaproszenie do wypróbowania usługi ochrony sieci"; +"network.protection.invite.dialog.title" = "Masz zaproszenie do wypróbowania DuckDuckGo VPN"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Otwórz VPN"; /* 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 - %@"; +"network.protection.status.connected.format" = "Połączono · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Nawiąż połączenie, aby zabezpieczyć ruch internetowy urządzenia."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Cały ruch internetowy urządzenia jest zabezpieczony\nprzez VPN."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "Usługa DuckDuckGo VPN jest wyłączona"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "Usługa DuckDuckGo VPN jest włączona"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Zarządzaj"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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 %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Włącz powiadomienia"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Zezwól na powiadomienia DuckDuckGo o zerwaniu połączenia lub zmianie stanu VPN."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "Informacje"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Otrzymuj powiadomienia o zerwaniu połączenia lub zmianie stanu VPN."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "Alerty VPN"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Ilość danych"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Zezwól na pomijanie sieci VPN przez ruch lokalny w celu łączenia z urządzeniami w sieci lokalnej, takimi jak drukarka."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Połączona lokalizacja"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "Miasta: %d"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Najbliższa)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Automatycznie połącz z najbliższym znalezionym serwerem."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Wybrana lokalizacja"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "Powiadomienia VPN"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Najbliższa lokalizacja"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "Nasza sieć VPN korzysta z Secure DNS, aby zachować prywatność aktywności użytkowników w Internecie. Dostawca Internetu nie może zobaczyć, które witryny odwiedzasz."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Często zadawane pytania"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Podziel się opinią o funkcji VPN"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "Ustawienia VPN"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "OK"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Mechanizmy Ochrony Prywatności"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "Logo DuckDuckGo"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "DuckDuckGo to założona w 2008 roku niezależna firma zajmująca się prywatnością w Internecie dla osób, które mają dosyć śledzenia online i poszukują łatwego w obsłudze rozwiązania. Jesteśmy dowodem na to, że możesz uzyskać prawdziwą ochronę prywatności online bez kompromisów.\n\nPrzeglądarka DuckDuckGo jest wyposażona w funkcje, których potrzebujesz, takie jak zakładki, karty, hasła i inne, a także [kilkanaście zaawansowanych mechanizmów ochrony prywatności](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/), które nie są domyślnie oferowane w większości popularnych przeglądarek. Ten wyjątkowo zaawansowany zestaw mechanizmów ochrony prywatności pomaga chronić działania w Internecie, od wyszukiwania po przeglądanie, obsługę wiadomości e-mail i nie tylko.\n\nDo korzystania z mechanizmów ochrony prywatności nie jest wymagana znajomość szczegółów technicznych ani skomplikowane ustawienia. Aby uzyskać ochronę prywatności, wystarczy ustawić na wszystkich urządzeniach domyślną przeglądarkę DuckDuckGo.\n\nJeśli interesują Cię szczegóły techniczne, więcej informacji o działaniu mechanizmów ochrony prywatności DuckDuckGo można znaleźć na [stronach pomocy](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Dostępność"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Dodaj aplikację do Docka"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Dodaj widżet do ekranu głównego"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Pozycja paska adresu"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Pasek adresu"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Pokaż pełny adres witryny internetowej"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Blokada aplikacji"; /* Section footer Autolock description */ -"settings.autolock.description" = "Jeśli ustawiono Touch ID, Face ID lub hasło systemowe, pojawi się prośba o odblokowanie aplikacji podczas otwierania."; +"settings.autolock.description" = "Jeśli włączono Touch ID, Face ID lub hasło systemowe, pojawi się prośba o odblokowanie aplikacji podczas jej otwierania."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Automatyczne czyszczenie danych"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Ochrona przed wyskakującymi okienkami dotyczącymi plików cookie"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo spróbuje wybrać najbardziej prywatne dostępne ustawienia i ukryć te wyskakujące okienka.\n[Więcej informacji](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Zarządzaj okienkami z prośbą o zgodę"; /* Settings title for the customize section */ "settings.customize" = "Spersonalizuj"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Ustaw jako domyślną przeglądarkę"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Czyszczenie danych"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "Ochrona poczty e-mail"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Domyślna przeglądarka"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Wyłącz autouzupełnianie w funkcji Email Protection"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo na innych platformach"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Zablokuj mechanizmy śledzące pocztę e-mail i ukryj swój adres bez zmiany dostawcy poczty e-mail.\n[Więcej informacji](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Wylogowanie się z konta ochrony poczty Email Protection spowoduje wyłączenie autouzupełniania Duck Address w tej przeglądarce. Zachowasz możliwość korzystania z tych adresów i otrzymywania przekazywanych wiadomości e-mail w zwykły sposób."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Zablokuj skrypty śledzące pocztę e-mail i ukryj swój adres"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Włącz ochronę poczty Email Protection"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Włącz wyszukiwanie głosowe"; + /* Settings cell for Feedback */ "settings.feedback" = "Podziel się opinią"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Bezpieczne witryny internetowe"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Ogólne"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Globalna Kontrola Prywatności (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Klawiatura"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Pozwól DuckDuckGo zarządzać wyskakującymi okienkami ze zgodą na używanie plików cookie"; + /* Settings screen cell text for passwords */ "settings.logins" = "Hasła"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Ustawienia główne"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Zarządzaj kontem"; + /* Settings title for the 'More' section */ "settings.more" = "Więcej możliwości DuckDuckGo"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Więcej ustawień wyszukiwania"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Dostosuj język, region i nie tylko"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Dalsze kroki"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Prywatność"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Prywatne Wyszukiwanie"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "DuckDuckGo Private Search to domyślna wyszukiwarka, dzięki której możesz wyszukiwać treści w sieci, unikając śledzenia."; + +/* Header of settings related to search */ +"settings.search.settings" = "Ustawienia wyszukiwania"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Ustaw pozycję paska adresu"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Wsparcie"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Synchronizacja i kopia zapasowa"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Prywatne wyszukiwanie głosowe"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Ochrona przed śledzeniem w sieci"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "Podczas przeglądania stron internetowych DuckDuckGo automatycznie blokuje ukryte mechanizmy śledzące.\n[Więcej informacji](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Prześlij raport"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Która witryna nie działa poprawnie?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Aktywuj subskrypcję"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Uzyskaj dostęp do subskrypcji Privacy Pro za pośrednictwem adresu e-mail."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Korzystaj ze subskrypcji na innych urządzeniach"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Twoja subskrypcja została zakupiona za pośrednictwem sklepu Google Play. Aby odnowić subskrypcję, otwórz ustawienia subskrypcji w sklepie Google Play na urządzeniu zalogowanym na konto Google wykorzystane do zakupu subskrypcji."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Plany subskrypcji"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Powrót do ustawień"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Wystąpił problem z połączeniem. Spróbuj ponownie później."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Wystąpił błąd"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Kod odzyskiwania skopiowany do schowka"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Wyłączyć synchronizację?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Niestety synchronizacja i kopia zapasowa jest obecnie niedostępna. Spróbuj ponownie później."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Ochrona prywatności wyłączona dla %@"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Mechanizmy Ochrony Prywatności wyłączono dla %@ i wysłano raport."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Ochrona prywatności włączona dla %@"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Anuluj"; /* 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."; +"voiceSearch.footer.note" = "Dodaj opcję prywatnego wyszukiwania głosowego do paska adresu. Dźwięk nie jest przechowywany ani udostępniany żadnym podmiotom, w tym DuckDuckGo."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "Dźwięk jest przetwarzany na urządzeniu. Dane nie są przechowywane ani udostępniane żadnym podmiotom, w tym DuckDuckGo."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "OK"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Dziękujemy za testowanie! Aby nadal korzystać z VPN, subskrybuj DuckDuckGo Privacy Pro i uzyskaj 40% zniżki z kodem promocyjnym THANKYOU\n\nOferta dostępna przez ograniczony czas tylko w wersji komputerowej przeglądarki DuckDuckGo dla testerów w Stanach Zjednoczonych, którzy instalują ją ze strony duckduckgo.com/app."; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "Wczesny dostęp do DuckDuckGo VPN został zakończony"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Zezwalaj na powiadomienia"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Witaj po Kaczej Stronie Mocy!"; -/* 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"; diff --git a/DuckDuckGo/pt.lproj/Autocomplete.strings b/DuckDuckGo/pt.lproj/Autocomplete.strings index 4d38b60305..ab195fb256 100644 --- a/DuckDuckGo/pt.lproj/Autocomplete.strings +++ b/DuckDuckGo/pt.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Rótulo"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Rótulo"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Sem sugestões"; diff --git a/DuckDuckGo/pt.lproj/Localizable.strings b/DuckDuckGo/pt.lproj/Localizable.strings index 1cbfd409dd..363aa8c51d 100644 --- a/DuckDuckGo/pt.lproj/Localizable.strings +++ b/DuckDuckGo/pt.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Gerir"; +/* Button label for OK action */ +"action.ok" = "OK"; + /* Add action - button shown in alert */ "action.title.add" = "Adicionar"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "URL copiada"; /* Delete action - button shown in alert */ -"action.title.delete" = "Eliminar"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Desativar Proteção de Privacidade"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Não foi possível eliminar os dados no servidor."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Para emparelhar estes dispositivos, desative a Sincronização e cópia de segurança num dispositivo e, em seguida, toque em \"Sincronizar com outro dispositivo\" no outro dispositivo."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Não foi possível remover este dispositivo da sincronização e cópia de segurança."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Ontem"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Gerir pop-ups de cookies"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Não, obrigado"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Parece que este site tem um pop-up de consentimento de cookies👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Queres que trate disto por ti? Posso tentar minimizar os cookies, maximizar a privacidade e ocultar pop-ups como estes."; - /* No comment provided by engineer. */ "dax.hide.button" = "Ocultar dicas para sempre"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo para iOS"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "Proteção de e-mail"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Obtenha o DuckDuckGo para Mac!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "VPN do DuckDuckGo"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Política de Privacidade"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Concordar e continuar"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "A utilização da Network Protection é gratuita durante o período de acesso antecipado."; +"network-protection.waitlist.availability-disclaimer" = "Podes usar gratuitamente a DuckDuckGo VPN durante o período de acesso antecipado."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Concordar e continuar"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Obtém uma camada extra de proteção online com a VPN criada para velocidade e simplicidade. Encripta a tua ligação à internet em todo o teu dispositivo e oculta a tua localização e endereço de IP dos sites que visitas."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Convidamos-te a experimentares\na versão de acesso antecipado da Network Protection!"; +"network-protection.waitlist.invited.title" = "Convidamos-te a experimentar\na versão de acesso antecipado da DuckDuckGo VPN!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Protege a tua ligação em qualquer altura e em qualquer lugar com a Network Protection, a VPN do DuckDuckGo."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Entra na lista de espera. Avisamos-te quando for a tua vez."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "Acesso Antecipado à VPN"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Está na lista!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Notificamos-te quando o teu convite estiver pronto."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Notificamos-te quando o teu convite para testar a Network Protection estiver pronto."; +"network-protection.waitlist.notification-alert.description" = "Vamos enviar-te uma notificação quando o teu convite para testar a DuckDuckGo VPN estiver pronto."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Recebe uma notificação quando a tua cópia da versão de acesso antecipado da Network Protection estiver pronta."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Abra o seu convite"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "A Network Protection está pronta!"; +"network-protection.waitlist.notification.title" = "A DuckDuckGo VPN está pronta!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "O teu convite está pronto!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Adira à Lista de Espera Privada"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "Perguntas frequentes sobre a DuckDuckGo VPN"; + +/* 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..."; + /* 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" = "Convidamos-te a experimentar a Network Protection"; +"network.protection.invite.dialog.title" = "Convidamos-te a experimentar a DuckDuckGo VPN"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Abrir VPN"; /* 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 - %@"; +"network.protection.status.connected.format" = "Ligada · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Liga a VPN para protegeres todo o tráfego de Internet\ndo teu dispositivo."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Todo o tráfego de Internet do dispositivo está protegido\n através da VPN."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "A DuckDuckGo VPN está Desativada"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "A DuckDuckGo VPN está Ativada"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Gerir"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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 %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Ativar as notificações"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Permite que o DuckDuckGo te notifique se a tua ligação cair ou o estado da VPN mudar."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "Acerca de"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Recebe uma notificação se a tua ligação cair ou o estado da VPN mudar."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "Alertas de VPN"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Volume de Dados"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Permitir que o tráfego local ignore a VPN e ligue a dispositivos na tua rede local, como uma impressora."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Localização Ligada"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "%d cidades"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Mais próxima)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Ligar automaticamente ao servidor mais próximo que encontrarmos."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Localização Selecionada"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "Notificações da VPN"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Localização Mais Próxima"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "A nossa VPN utiliza DNS seguro para manter a tua atividade online privada e impedir que o teu fornecedor de internet saiba os sites que visitas."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Perguntas Frequentes"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Partilhar Feedback Sobre a VPN"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "Definições da VPN"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "OK"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Proteções de Privacidade"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "Logótipo do DuckDuckGo"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "A DuckDuckGo é a empresa independente de privacidade na Internet fundada em 2008 para quem está cansado de ser rastreado online e quer uma solução simples. Somos a prova de que podes proteger a tua privacidade online sem compromissos.\n\nO navegador DuckDuckGo vem com as funcionalidades que esperas num navegador de referência, como marcadores, separadores, palavras-passe, entre outras, além de mais de [uma dúzia de proteções de privacidade poderosas](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/) que os navegadores mais populares não oferecem por predefinição. Este conjunto especialmente abrangente de proteções de privacidade ajuda a proteger as tuas atividades online, desde a pesquisa à navegação, e-mails, entre outras.\n\nPara utilizares as nossas proteções de privacidade, não tens de saber nada sobre os detalhes técnicos nem lidar com definições complicadas. Tudo o que tens de fazer é mudar o teu navegador para o DuckDuckGo em todos os teus dispositivos e desfrutar de privacidade como predefinição.\n\nMas *se* quiseres espreitar os bastidores, podes consultar mais informações sobre como funcionam as proteções de privacidade do DuckDuckGo nas nossas [páginas de ajuda](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Acessibilidade"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Adicionar aplicação à sua dock"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Adicionar widget ao ecrã inicial"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Posição da barra de endereços"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Barra de endereço"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Mostrar endereço completo do site"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Bloqueio de aplicações"; /* Section footer Autolock description */ -"settings.autolock.description" = "Se o Touch ID, Face ID ou um código de acesso estiverem definidos, ser-lhe-á pedido o desbloqueio da aplicação ao abrir."; +"settings.autolock.description" = "Se estiver definido um Touch ID, Face ID ou código de acesso de sistema, é-te pedido que desbloqueies a aplicação quando a abres."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Limpar os dados automaticamente"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Proteção contra pop-ups de cookies"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "O DuckDuckGo vai tentar selecionar as definições mais privadas disponíveis e ocultar pop-ups.\n[Sabe Mais](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Gerir pop-ups de cookies"; /* Settings title for the customize section */ "settings.customize" = "Personalizar"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Definir como navegador padrão"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Limpeza de Dados"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "Proteção de e-mail"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Navegador predefinido"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Desativar o preenchimento automático da Email Protection"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo Noutras Plataformas"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Bloqueia os rastreadores de e-mail e oculta o teu endereço sem mudares de fornecedor de e-mail.\n[Sabe Mais](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Terminar sessão na tua conta da Email Protection desativa o preenchimento automático de Duck Addresses neste navegador. Podes continuar a utilizar estes endereços e a receber e-mails reencaminhados como habitualmente."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Bloqueie rastreadores de e-mail e oculte o seu endereço."; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Ativa a Email Protection"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Ativar Pesquisa por Voz"; + /* Settings cell for Feedback */ "settings.feedback" = "Partilhar comentários"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Sites com barreira de segurança"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Geral"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Controlo Global de Privacidade (CGP)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Teclado"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Permitir que o DuckDuckGo faça a gestão dos pop-ups de consentimento de cookies"; + /* Settings screen cell text for passwords */ "settings.logins" = "Palavras-passe"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Definições Principais"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Gerir conta"; + /* Settings title for the 'More' section */ "settings.more" = "Mais de DuckDuckGo"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Mais definições de pesquisa"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Personaliza o teu idioma, região e muito mais"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Passos seguintes"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Privacidade"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Pesquisa Privada"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "O DuckDuckGo Private Search é o teu motor de pesquisa predefinido, para que possas pesquisar a web sem seres rastreado."; + +/* Header of settings related to search */ +"settings.search.settings" = "Definições de pesquisa"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Define a Posição da Barra de Endereços"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Assistência"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Sincronização e cópia de segurança"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Pesquisa por voz privada"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Proteção contra rastreamento na internet"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "O DuckDuckGo bloqueia automaticamente os rastreadores ocultos enquanto navegas na Internet.\n[Sabe Mais](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Submeter relatório"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Que site está com falhas?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Ativar Subscrição"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Acede à tua subscrição Privacy Pro com um endereço de e-mail."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Utiliza a tua subscrição noutros dispositivos"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "A tua subscrição foi adquirida na Google Play Store. Para renovares a tua subscrição, abre as definições da subscrição na Google Play Store num dispositivo com sessão iniciada na Conta Google usada para comprar a subscrição."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Planos de Subscrição"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Voltar às Definições"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Falha na ligação. Tenta novamente mais tarde."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Ocorreu um erro"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Código de recuperação copiado para a área de transferência"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Desativar a sincronização?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Lamentamos, mas a sincronização e cópia de segurança não estão disponíveis de momento. Tenta novamente mais tarde."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Proteção de privacidade desativada para %@"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Proteções de Privacidade desativadas para %@ e relatório enviado."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Proteção de privacidade ativada para %@"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Cancelar"; /* 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."; +"voiceSearch.footer.note" = "Adicionar opção de pesquisa privada por voz à barra de endereços. O áudio não é armazenado nem partilhado com ninguém, incluindo o DuckDuckGo."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "O áudio é processado no dispositivo. Não foi armazenado ou partilhado com ninguém, incluindo o DuckDuckGo."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "OK"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Obrigado por ajudares a testar a VPN! Para continuares a usar a VPN, subscreve o DuckDuckGo Privacy Pro e aproveita 40% de desconto com o código promocional THANKYOU\n\nOferta por tempo limitado apenas na versão para computadores do navegador DuckDuckGo para testers nos EUA que instalam a partir de duckduckgo.com/app"; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "O acesso antecipado à DuckDuckGo VPN terminou"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Permitir notificações"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Bem-vindo ao Duck Side!"; -/* 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"; diff --git a/DuckDuckGo/ro.lproj/Autocomplete.strings b/DuckDuckGo/ro.lproj/Autocomplete.strings index eda4e8e757..c40b95b6ec 100644 --- a/DuckDuckGo/ro.lproj/Autocomplete.strings +++ b/DuckDuckGo/ro.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Label"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Label"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Fără sugestii"; diff --git a/DuckDuckGo/ro.lproj/Localizable.strings b/DuckDuckGo/ro.lproj/Localizable.strings index 1b6a2cb8ed..bf9734e820 100644 --- a/DuckDuckGo/ro.lproj/Localizable.strings +++ b/DuckDuckGo/ro.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Gestionează"; +/* Button label for OK action */ +"action.ok" = "OK"; + /* Add action - button shown in alert */ "action.title.add" = "Adăugați"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "URL copiat"; /* Delete action - button shown in alert */ -"action.title.delete" = "Ștergere"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Dezactivează protecția confidențialității"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Nu se pot șterge datele de pe server."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Pentru a asocia aceste dispozitive, dezactivează Sincronizare și backup pe un dispozitiv, apoi atinge „Sincronizează cu un alt dispozitiv” pe celălalt dispozitiv."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Nu se poate elimina acest dispozitiv din Sincronizare și backup."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Ieri"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Gestionare pop-up-uri pentru module cookie"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Nu, mulțumesc"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Se pare că acest site are o fereastră pop-up de solicitare a consimțământului cu privire la modulele cookie👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Vrei să mă ocup de asta pentru tine? Pot să încerc să minimizez numărul de module cookie, să maximizez confidențialitatea și să ascund ferestrele pop-up precum aceasta."; - /* No comment provided by engineer. */ "dax.hide.button" = "Ascunde sfaturile definitiv"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo pentru iOS"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "Protecția comunicațiilor prin e-mail"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Obține DuckDuckGo pentru Mac!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "DuckDuckGo VPN"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Politica de confidențialitate"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "De acord și continuă"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Protecția rețelei poate fi utilizată gratuit în timpul accesului timpuriu."; +"network-protection.waitlist.availability-disclaimer" = "DuckDuckGo VPN se poate utiliza gratuit în perioada de acces anticipat."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "De acord și continuă"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Obține un nivel suplimentar de protecție online cu VPN-ul creat pentru viteză și simplitate. Criptează conexiunea la internet pe întregul dispozitiv și ascunde-ți locația și adresa IP de pe site-urile pe care le accesezi."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Ești invitat să încerci\naccesul timpuriu la Network Protection!"; +"network-protection.waitlist.invited.title" = "Te invităm să încerci\naccesul anticipat la DuckDuckGo VPN!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Obține o conexiune sigură oricând și oriunde cu Network Protection, VPN-ul de la DuckDuckGo."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Alătură-te listei de așteptare și te vom anunța când îți vine rândul."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "Acces anticipat VPN"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Ești pe listă!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Te vom anunța când invitația ta este gata."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Îți vom trimite o notificare atunci când invitația de a testa Network Protection este gata."; +"network-protection.waitlist.notification-alert.description" = "Îți vom trimite o notificare când invitația ta de a testa DuckDuckGo VPN este gata."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Primești o notificare atunci când copia ta pentru acces timpuriu la Network Protection este gata."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Deschide invitația ta"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Network Protection este gata!"; +"network-protection.waitlist.notification.title" = "DuckDuckGo VPN este gata!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Invitația ta este gata!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Alătură-te listei de așteptare private"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "Întrebări frecvente despre DuckDuckGo VPN"; + +/* 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..."; + /* 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" = "Ești invitat(ă) să încerci Network Protection"; +"network.protection.invite.dialog.title" = "Te invităm să încerci DuckDuckGo VPN"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Deschide VPN"; /* 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 - %@"; +"network.protection.status.connected.format" = "Conectat · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Conectează-te pentru a securiza traficul pe internet\n pentru toate dispozitivele tale."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Tot traficul de internet al dispozitivelor este securizat\nprin VPN."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "DuckDuckGo VPN este oprit"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "DuckDuckGo VPN este pornit"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Gestionează"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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 %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Activează Notificările"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Permite ca DuckDuckGo să te înștiințeze dacă conexiunea ta devine mai slabă sau dacă starea VPN-ului se schimbă."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "Despre"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Primește o notificare dacă conexiunea ta devine mai slabă sau dacă starea VPN-ului se schimbă."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "Alerte VPN"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Volum de date"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Lasă traficul local să ocolească VPN-ul și să se conecteze la dispozitivele din rețeaua locală, cum ar fi o imprimantă."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Locație conectată"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "%d orașe"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Cea mai apropiată)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Conectează-te automat la cel mai apropiat server pe care îl putem găsi."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Locație selectată"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "Notificări VPN"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Cea mai apropiată locație"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "VPN-ul nostru utilizează DNS securizat pentru a-ți păstra activitatea online privată, astfel încât furnizorul tău de internet să nu poată vedea ce site-uri web accesezi."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Întrebări frecvente"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Oferă feedback despre VPN"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "Setări VPN"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "OK"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Măsuri de protecție a confidențialității"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "Logoul DuckDuckGo"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "DuckDuckGo este o companie independentă înființată în 2008, care oferă confidențialitate pe internet tuturor celor care s-au săturat să fie urmăriți online și își doresc o soluție simplă. Suntem dovada că protecția confidențialității online fără compromisuri este reală.\n\nBrowserul DuckDuckGo oferă funcțiile pe care le aștepți de la browserul predilect, cum ar fi marcajele, filele, parolele și multe altele, plus peste [o duzină de instrumente puternice de protecție a confidențialității](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/) care nu sunt oferite implicit de majoritatea browserelor populare. Acest set unic și cuprinzător de măsuri de protecție a confidențialității te ajută să îți protejezi activitățile online, de la căutări la navigare, e-mailuri și multe altele.\n\nMăsurile noastre robuste de protecție a confidențialității funcționează fără a necesita cunoștințe tehnice din partea ta și fără a fi nevoie să faci setări complicate. Tot ce trebuie să faci este să folosești browserul DuckDuckGo pe toate dispozitivele și vei beneficia implicit de confidențialitate.\n\nDar dacă *chiar dorești* să consulți detaliile mai tehnice, poți găsi mai multe informații despre modul în care funcționează instrumentele DuckDuckGo de protecție a confidențialității în [paginile noastre de asistență](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Accesibilitate"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Adaugă aplicația la secțiunea ta fixă"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Adaugă un widget la ecranul de întâmpinare"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Poziția barei de adrese"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Bara de adrese"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Afișați adresa completă a site-ului"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Blocarea aplicației"; /* Section footer Autolock description */ -"settings.autolock.description" = "Dacă este setat Touch ID, Face ID sau o parolă de sistem, ți se va solicita să deblochezi aplicația la deschidere."; +"settings.autolock.description" = "Dacă identificatorul tactil, identificatorul facial sau parola de sistem sunt activate, ți se va solicita să deblochezi aplicația la deschidere."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Șterge automat datele"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Protecție pentru ferestre pop-up aferente modulelor cookie"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo va încerca să selecteze cele mai private setări disponibile și să ascundă aceste ferestre pop-up pentru tine.\n[Află mai multe](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Gestionare pop-up-uri pentru module cookie"; /* Settings title for the customize section */ "settings.customize" = "Personalizare"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Setare ca browser implicit"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Ștergerea datelor"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "Protecția comunicațiilor prin e-mail"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Browser implicit"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Dezactivează completarea automată în Email Protection"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo pe alte platforme"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Blochează tehnologiile de urmărire prin e-mail și ascunde-ți adresa fără a schimba furnizorul de servicii de e-mail.\n[Află mai multe](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Deconectarea din cont tău Email Protection va dezactiva completarea automată a Duck Address în acest browser. Poți utiliza în continuare aceste adrese și poți primi e-mailuri redirecționate ca de obicei."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Blochează tehnologiile de urmărire prin e-mail și ascunde-ți adresa"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Activează Email Protection"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Activează căutarea vocală"; + /* Settings cell for Feedback */ "settings.feedback" = "Partajează feedback"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Site-uri cu ștergerea activității și istoricului din browser la ieșire"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Generale"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Global Privacy Control (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Tastatură"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Lasă DuckDuckGo să gestioneze ferestrele pop-up de solicitare a consimțământului cu privire la modulele cookie"; + /* Settings screen cell text for passwords */ "settings.logins" = "Parole"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Setări principale"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Gestionează contul"; + /* Settings title for the 'More' section */ "settings.more" = "Mai multe de la DuckDuckGo"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Mai multe setări de căutare"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Personalizează limba, regiunea și multe altele"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Pașii următori"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Confidențialitate"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Căutare Confidențială"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "DuckDuckGo Private Search este motorul tău de căutare implicit, astfel încât poți căuta pe web fără a fi urmărit(ă)."; + +/* Header of settings related to search */ +"settings.search.settings" = "Setări de căutare"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Setează poziția barei de adrese"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Asistență"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Sincronizare și copiere de rezervă"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Căutare vocală privată"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Protecție împotriva urmăririi pe web"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo blochează automat tehnologiile de urmărire ascunse în timp ce navighezi pe web.\n[Află mai multe](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Trimite raportul"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Ce site este defect?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Activează abonamentul"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Accesează-ți abonamentul Privacy Pro dintr-o adresă de e-mail."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Utilizează-ți abonamentul pe alte dispozitive"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Abonamentul tău a fost achiziționat prin Magazinul Google Play. Pentru a-ți reînnoi abonamentul, deschide setările abonamentului din Magazinului Google Play pe un dispozitiv conectat la același cont Google folosit pentru achiziționarea inițială a abonamentului."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Tipuri de abonament"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Înapoi la Setări"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Întâmpinăm probleme la conectare. Încearcă din nou mai târziu."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Ceva nu a funcționat corect"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Codul de recuperare a fost copiat în clipboard"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Oprești sincronizarea?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Ne pare rău, dar Sincronizarea și copierea de rezervă nu este disponibilă momentan. Încearcă din nou mai târziu."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Protecția confidențialității este dezactivată pentru %@"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Protecțiile confidențialității sunt dezactivate pentru %@ și raportul a fost trimis."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Protecția confidențialității este activată pentru %@"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Renunță"; /* 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."; +"voiceSearch.footer.note" = "Adaugă opțiunea de Căutare vocală privată în bara de adrese.Sunetul nu este stocat sau partajat cu nimeni, inclusiv cu DuckDuckGo."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "Componenta audio este prelucrată pe dispozitiv. Nu este stocată sau distribuită nimănui, nici DuckDuckGo."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "OK"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Mulțumim că ai testat programul! Pentru a continua să utilizezi VPN-ul, abonează-te la DuckDuckGo Privacy Pro și obține 40% reducere cu codul promoțional THANKYOU.\n\nOferta poate fi valorificată pe o perioadă limitată, în versiunea pentru desktop a browserului DuckDuckGo de către utilizatorii din SUA care o instalează de la adresa duckduckgo.com/app"; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "Accesul anticipat la DuckDuckGo VPN a luat sfârșit"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Permite notificările"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Welcome to the Duck Side!"; -/* 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"; diff --git a/DuckDuckGo/ru.lproj/Autocomplete.strings b/DuckDuckGo/ru.lproj/Autocomplete.strings index 89d00e32cb..87759e51c7 100644 --- a/DuckDuckGo/ru.lproj/Autocomplete.strings +++ b/DuckDuckGo/ru.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Метка"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Метка"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Нет предложений"; diff --git a/DuckDuckGo/ru.lproj/Localizable.strings b/DuckDuckGo/ru.lproj/Localizable.strings index 2daa89b63e..a933ce6198 100644 --- a/DuckDuckGo/ru.lproj/Localizable.strings +++ b/DuckDuckGo/ru.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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" = "Редактировать"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Настроить"; +/* Button label for OK action */ +"action.ok" = "Хорошо"; + /* Add action - button shown in alert */ "action.title.add" = "Добавить"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "Адрес скопирован"; /* Delete action - button shown in alert */ -"action.title.delete" = "Удалить"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Отключить защиту конфиденциальности"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Не удалось удалить данные с сервера."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Чтобы выполнить сопряжение этих устройств, отключите функцию «Синхронизация и резервное копирование» на одном из них и нажмите кнопку «Синхронизировать с другим устройством» на другом."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Не удалось удалить устройство из списка синхронизации и резервного копирования."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Вчера"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Управление окнами выбора куки-файлов"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Нет, спасибо"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Похоже, на этом сайте есть всплывающее окно выбора куки-файлов👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Хотите, чтобы такие окна закрывались автоматически? Мы можем попытаться минимизировать выбор куки-файлов для большей безопасности ваших данных и автоматически закрывать такие окна."; - /* No comment provided by engineer. */ "dax.hide.button" = "Скрыть подсказки навсегда"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo для iOS"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "Защита электронной почты"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "DuckDuckGo для Mac!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "DuckDuckGo VPN"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Политика конфиденциальности"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Принять и продолжить"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Функцией защиты сети (Network Protection) можно пользоваться бесплатно по раннему доступу."; +"network-protection.waitlist.availability-disclaimer" = "В период раннего доступа сервис DuckDuckGo VPN предоставляется бесплатно."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Принять и продолжить"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Быстрый и простой VPN — дополнительный уровень защиты онлайн. Позволяет зашифровать все подключения к интернету на устройстве и скрывает ваше местоположение и IP-адрес от посещаемых сайтов."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Функция Network Protection\n по раннему доступу"; +"network-protection.waitlist.invited.title" = "Ранний доступ\nк DuckDuckGo VPN"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Функция Network Protection — VPN от DuckDuckGo — защитит ваше соединение независимо от места и времени."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Записывайтесь в очередь, и мы будем держать вас в курсе."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "VPN по раннему доступу"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Вы в списке!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Мы сообщим вам, когда придет ваш черед."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Когда приглашение протестировать функцию Network Protection будет готово, мы отправим вам уведомление."; +"network-protection.waitlist.notification-alert.description" = "Когда подойдет ваша очередь протестировать DuckDuckGo VPN, мы отправим вам уведомление."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Когда вам откроется ранний доступ к функции Network Protection, вы получите уведомление."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Откройте приглашение"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Защита сети к вашим услугам!"; +"network-protection.waitlist.notification.title" = "Сервис DuckDuckGo VPN готов!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Ваше приглашение готово!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Приглашаем встать в очередь"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* The body of the notification shown when Network Protection fails to reconnect */ +"network.protection.failure.notification.body" = "Функции защиты сети (Network Protection) не удалось установить соединение. Повторите попытку позже."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "Часто задаваемые вопросы по DuckDuckGo VPN"; + +/* The body of the notification shown when Network Protection's connection is interrupted */ +"network.protection.interrupted.notification.body" = "Прервана работа функции защиты сети (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" = "Приглашаем испытать функцию Network Protection"; +"network.protection.invite.dialog.title" = "Приглашаем вас оценить сервис DuckDuckGo VPN"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Открыть настройки VPN"; /* 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 - %@"; +"network.protection.status.connected.format" = "Подключен · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Выполните подключение для защиты\nтрафика всех устройств."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Трафик всех устройств \nзащищен по VPN."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "DuckDuckGo VPN отключен"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "DuckDuckGo VPN включен"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Настроить"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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" = "Трафик устройства направляется через: %@"; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Включить уведомления"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Разрешить DuckDuckGo уведомлять вас о разрыве соединения или изменении состояния VPN."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "О нас"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "DuckDuckGo оповестит вас о разрыве соединения или изменении состояния VPN."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "Оповещения о VPN"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Объем трафика"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Настройте локальный трафик так, чтобы он поступал в обход VPN на устройства локальной сети, например, на принтер."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Место подключения"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "Городов: %d"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Ближайшее)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Автоматически подключаться к ближайшему найденному серверу."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Выбранное место"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "Уведомления о VPN"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Ближайшее место"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "Для скрытия вашей активности онлайн VPN использует безопасный DNS. Так ваш провайдер не узнает, какие сайты вы посещаете."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Часто задаваемые вопросы"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Отзыв о VPN-сервисе"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "Настройки VPN"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "Хорошо"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Защита конфиденциальности"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "Логотип DuckDuckGo"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "DuckDuckGo — независимая компания, которая c 2008 года предоставляет услуги защиты личных данных в интернете. Мы предлагаем простое решение для тех, кому надоело отслеживание онлайн. Своим примером DuckDuckGo показывает, что защита конфиденциальности в Сети не требует компромиссов.\n\nВ универсальном браузере DuckDuckGo вы найдете все те же привычные функции — вкладки, закладки, пароли, — а также более [десятка мощных средств защиты личной информации](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/), которых нет в стандартных пакетах других популярных веб-обозревателей. Наш всесторонний набор инструментов скроет от посторонних глаз всю вашу онлайн-активность, включая поиск, просмотр сайтов и чтение почты.\n\nСервисы DuckDuckGo не требуют особых технических познаний или работы со сложными настройками. Достаточно сменить свой браузер на DuckDuckGo на всех устройствах, и конфиденциальность онлайн станет вашим спутником по умолчанию.\n\nЕсли же вас интересует наша «кухня», вы можете почитать о том, как устроены инструменты защиты DuckDuckGo, на [страницах нашего справочного центра](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Универсальный доступ"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Добавьте приложение на док-панель"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Добавьте виджет на домашний экран"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Положение адресной строки"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Адресная строка"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Показывать полный адрес сайта"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Блокировка"; /* Section footer Autolock description */ -"settings.autolock.description" = "Если система защищена технологией Touch ID или Face ID либо кодом доступа, при запуске вам придется разблокировать приложение."; +"settings.autolock.description" = "Если в системе работает технология Touch ID, Face ID или код-пароль, при запуске вам придется разблокировать приложение."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Автоудаление данных"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Защита от всплывающих окон куки"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo по возможности откажется от куки-файлов и скроет подобные окна.\n[Подробнее...](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Управление окнами выбора куки-файлов"; /* Settings title for the customize section */ "settings.customize" = "Собственная настройка"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Сделать браузером по умолчанию"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Очистка данных"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "Защита электронной почты"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Браузер по умолчанию"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Отключить автозаполнение в рамках защиты почты"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo для других платформ"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Оказывается, чтобы избавиться от трекеров и скрыть свой адрес, вовсе не нужно менять почтовый сервис.\n[Подробнее...](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "При выходе из учетной записи Email Protection будет отключено автозаполнение адресов Duck Address в этом браузере. Вы по-прежнему сможете пользоваться этими адресами и получать пересылаемую почту как обычно."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Блокировка почтовых трекеров и скрытие адреса"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Включите защиту электронной почты"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Включить голосовой поиск"; + /* Settings cell for Feedback */ "settings.feedback" = "Оставьте нам отзыв"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Огнеупорные сайты"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Основные"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Глобальный контроль конфиденциальности (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Клавиатура"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Разрешить DuckDuckGo управлять окнами выбора куки-файлов"; + /* Settings screen cell text for passwords */ "settings.logins" = "Пароли"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Основные настройки"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Управление учетной записью"; + /* Settings title for the 'More' section */ "settings.more" = "DuckDuckGo также предлагает..."; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Дополнительные настройки поиска"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Выбор языка, региона и так далее"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Дальнейшие шаги"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Настройки конфиденциальности"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Частный поиск"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "DuckDuckGo Private Search — ваша поисковая система по умолчанию. Вы можете пользоваться поиском в интернете, не опасаясь слежки."; + +/* Header of settings related to search */ +"settings.search.settings" = "Настройки поиска"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Настроить положение адресной строки"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Поддержка"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Синхронизация и резервное копирование"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Конфиденциальный голосовой поиск"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Защита от отслеживания онлайн"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo автоматически блокирует скрытые трекеры, пока вы посещаете сайты.\n[Подробнее...](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Отправить жалобу"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "На каком сайте возникает проблема?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Активация подписки"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Подписку на услуги Privacy Pro можно активировать по электронной почте."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Использование подписки на других устройствах"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Ваша подписка приобретена в магазине приложений Google Play Store. Чтобы продлить ее, откройте настройки подписок в Google Play Store на устройстве, где выполнен вход в ту же учетную запись Google, через которую была изначально оформлена подписка."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Тарифные планы"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Назад к настройкам"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Возникли проблемы с подключением. Повторите попытку позже."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Что-то пошло не так"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Код восстановления скопирован в буфер обмена"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Отключить синхронизацию?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Синхронизация и резервное копирование сейчас недоступны. Повторите попытку позже."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Защита конфиденциальности на %@ отключена"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Защита конфиденциальности на сайте %@ отключена, отчет отправлен."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Защита конфиденциальности на %@ включена"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Отменить"; /* Voice-search footer note with on-device privacy warning */ -"voiceSearch.footer.note" = "Аудио обрабатывается непосредственно на устройстве, не хранится и не передается никому, даже DuckDuckGo."; +"voiceSearch.footer.note" = "Добавить опцию «Частный голосовой поиск» в адресную строку. Ваш голосовой запрос не сохраняется и никуда не передается, даже в DuckDuckGo."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "Аудио обрабатывается непосредственно на устройстве, не хранится и не передается никому, даже DuckDuckGo."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "Хорошо"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Благодарим вас за участие в тестировании! Чтобы пользоваться сервисом VPN в дальнейшем, оформите подписку на тариф DuckDuckGo Privacy Pro — со скидкой 40% по промокоду THANKYOU.\n\nСрок действия акции ограничен. Скидка распространяется только на настольную версию браузера DuckDuckGo и предоставляется исключительно участникам тестирования, проживающим на территории США и установившим приложение с сайта duckduckgo.com/app."; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "Период раннего доступа к DuckDuckGo VPN окончен"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Разрешить уведомления"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Добро пожаловать на Утиную сторону!"; -/* 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"; diff --git a/DuckDuckGo/sk.lproj/Autocomplete.strings b/DuckDuckGo/sk.lproj/Autocomplete.strings index dc8ba0cad5..db65058ab1 100644 --- a/DuckDuckGo/sk.lproj/Autocomplete.strings +++ b/DuckDuckGo/sk.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Označenie"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Označenie"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Žiadne návrhy"; diff --git a/DuckDuckGo/sk.lproj/Localizable.strings b/DuckDuckGo/sk.lproj/Localizable.strings index 307c51677b..1e760bd027 100644 --- a/DuckDuckGo/sk.lproj/Localizable.strings +++ b/DuckDuckGo/sk.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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ť"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Spravujte stránku"; +/* Button label for OK action */ +"action.ok" = "OK"; + /* Add action - button shown in alert */ "action.title.add" = "Pridať"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "Adresa URL bola skopírovaná"; /* Delete action - button shown in alert */ -"action.title.delete" = "Vymazať"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Vypnúť ochranu súkromia"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Nie je možné odstrániť údaje na serveri."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Ak chcete tieto zariadenia spárovať, vypnite funkciu Synchronizácia a zálohovanie v jednom zariadení a potom ťuknite na „Synchronizovať s iným zariadením“ v druhom zariadení."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Toto zariadenie nie je možné odstrániť zo Synchronizácie a zálohovania."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Včera"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Správa kontextových okien súborov cookie"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Nie, ďakujem"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Zdá sa, že táto stránka má kontextové okno týkajúce sa súhlasu so súbormi cookie👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Chceš, aby som to riešil za teba? Môžem sa pokúsiť minimalizovať súbory cookie, maximalizovať ochranu súkromia a skryť kontextové okná, ako sú tieto."; - /* No comment provided by engineer. */ "dax.hide.button" = "Navždy skryť tipy"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo pre iOS"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "Ochrana e-mailu"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Vyskúšajte DuckDuckGo pre Mac!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "DuckDuckGo VPN"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Zásady ochrany súkromia"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Súhlasiť a pokračovať"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Počas skorého prístupu je použitie ochrany siete bezplatné."; +"network-protection.waitlist.availability-disclaimer" = "Používanie DuckDuckGo VPN je počas skorého prístupu bezplatné."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Súhlasiť a pokračovať"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Získajte ďalšiu úroveň ochrany online vďaka sieti VPN vytvorenej pre rýchlosť a jednoduchosť. Šifrujte svoje internetové pripojenie v celom zariadení a skryte svoju polohu a IP adresu pred navštívenými stránkami."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Pozývame vás, aby ste vyskúšali prednostný prístup k\n Ochrane siete!"; +"network-protection.waitlist.invited.title" = "Pozývame vás, aby ste vyskúšali prednostný prístup k DuckDuckGo VPN!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Zabezpečte si pripojenie kedykoľvek a kdekoľvek pomocou Ochrany siete, VPN od DuckDuckGo."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Pridajte sa na zoznam čakateľov a my vás upozorníme, keď na vás príde rad."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "Prednostný prístup VPN"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Ste na zozname čakateľov!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Keď bude vaša pozvánka pripravená, upozorníme vás."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Keď bude vaša pozvánka na testovanie Ochrany siete pripravená, pošleme vám upozornenie."; +"network-protection.waitlist.notification-alert.description" = "Keď bude vaša pozvánka na testovanie DuckDuckGo VPN pripravená, pošleme vám upozornenie."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Získajte upozornenie, keď bude pripravená vaša kópia aplikácie prednostného prístupu k Ochrane siete."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Otvorte svoju pozvánku"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Ochrana siete je pripravená!"; +"network-protection.waitlist.notification.title" = "DuckDuckGo VPN je pripravená!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Vaša pozvánka je pripravená!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Pridajte sa do súkromného zoznamu čakateľov"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "DuckDuckGo VPN - často kladené otázky"; + +/* 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..."; + /* 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" = "Pozývame vás vyskúšať Ochranu siete"; +"network.protection.invite.dialog.title" = "Pozývame vás vyskúšať DuckDuckGo VPN"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Otvoriť VPN sieť"; /* 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 - %@"; +"network.protection.status.connected.format" = "Pripojené · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Pripojte sa, aby ste zabezpečili všetky svoje zariadenia\n Internetový prenos."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Celá internetová prevádzka zariadenia je zabezpečená\nProstredníctvom VPN."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "DuckDuckGo VPN je vypnutá"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "DuckDuckGo VPN je zapnutá"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Spravujte stránku"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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 %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Zapnúť oznámenia"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Povoľte službe DuckDuckGo, aby vás upozornila, ak dôjde k prerušeniu pripojenia alebo zmene stavu VPN siete."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "O nás"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Dostávajte upozornenia, ak dôjde k prerušeniu pripojenia alebo sa zmení stav VPN siete."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "Upozornenia týkajúce sa VPN siete"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Dátový objem"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Umožnite miestnej prevádzke obísť sieť VPN sieť a pripojiť sa k zariadeniam v miestnej sieti, napríklad k tlačiarni."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Pripojené umiestnenie"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "%d miest"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Najbližšie)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Automaticky sa pripojí k najbližšiemu serveru, ktorý nájdeme."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Vybratá poloha"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "Oznámenia VPN"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Najbližšie umiestnenie"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "Naša sieť VPN používa zabezpečený DNS na zachovanie súkromia vašej online aktivity, aby váš poskytovateľ internetu nemohol vidieť, aké webové lokality navštevujete."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Často kladené otázky"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Zdieľať spätnú väzbu k VPN"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "Nastavenia siete VPN"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "OK"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Ochrana súkromia"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "Logo DuckDuckGo"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "DuckDuckGo je nezávislá spoločnosť na ochranu súkromia na internete, ktorá bola založená v roku 2008 pre všetkých, ktorých už nebaví sledovanie na internete a chcú jednoduché riešenie. Sme dôkazom, že skutočnú online ochranu súkromia môžete získať bez kompromisov.\n\nPrehliadač DuckDuckGo je vybavený funkciami, ktoré od prehliadača očakávate, ako sú napríklad záložky, karty, heslá a ďalšie funkcie. Navyše obsahuje viac ako [tucet účinných ochranných opatrení na ochranu súkromia](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/) sa vo väčšine populárnych prehliadačov štandardne neponúka. Tento jedinečne komplexný súbor ochrany súkromia pomáha chrániť vaše online aktivity od vyhľadávania po prehliadanie, posielanie e-mailov a ďalšie.\n\nNaša ochrana súkromia funguje bez toho, aby ste museli poznať technické detaily alebo riešiť zložité nastavenia. Stačí prepnúť prehliadač na DuckDuckGo vo všetkých zariadeniach a získate predvolené súkromie.\n\nAk však chcete nahliadnuť pod pokrievku, viac informácií o tom, ako funguje ochrana súkromia DuckDuckGo, nájdete na našich [stránkach pomoci](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Zjednodušenie prístupu"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Pridať aplikáciu do Docku"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Pridať miniaplikáciu na domovskú obrazovku"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Poloha riadku s adresou"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Riadok adresy"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Zobraziť úplnú adresu lokality"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Zámok aplikácie"; /* Section footer Autolock description */ -"settings.autolock.description" = "Ak je nastavená funkcia Touch ID, Face ID alebo systémový prístupový kód, pri otvorení aplikácie sa zobrazí výzva na odomknutie aplikácie."; +"settings.autolock.description" = "Ak je povolená funkcia Touch ID, Face ID alebo systémový prístupový kód, pri otvorení aplikácie sa zobrazí výzva na odomknutie."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Automaticky vymazať údaje"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Ochrana proti automatickému otváraniu okien o súboroch cookie"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo sa pokúsi vybrať najosobnejšie dostupné nastavenia a skryť tieto automatické okná za vás.\n[Viac informácií](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Správa kontextových okien súborov cookie"; /* Settings title for the customize section */ "settings.customize" = "Prispôsobiť"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Nastaviť ako predvolený prehliadač"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Vymazanie údajov"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "Ochrana e-mailu"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Predvolený prehliadač"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Zakázať automatické vyplňovanie ochrany e-mailov"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo na iných platformách"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Zablokujte sledovače e-mailov a skryte svoju adresu bez zmeny poskytovateľa e-mailových služieb.\n[Viac informácií] (ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Odhlásením sa z účtu Email Protection sa v tomto prehliadači vypne automatické vypĺňanie Duck Address. Tieto adresy môžete naďalej používať a dostávať na ne preposielané e-maily ako zvyčajne."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Zablokujte nástroje na sledovanie e‑mailov a skryte vašu adresu"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Povoliť ochranu e-mailu"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Povoliť hlasové vyhľadávanie"; + /* Settings cell for Feedback */ "settings.feedback" = "Zdieľať spätnú väzbu"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Zabezpečené stránky"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Všeobecné"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Globálna kontrola súkromia (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Klávesnica"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Nech DuckDuckGo spravuje kontextové okná týkajúce sa súhlasu so súbormi cookie"; + /* Settings screen cell text for passwords */ "settings.logins" = "Heslo"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Hlavné nastavenia"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Spravovať účet"; + /* Settings title for the 'More' section */ "settings.more" = "Viac od DuckDuckGo"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Ďalšie nastavenia vyhľadávania"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Prispôsobenie jazyka, regiónu a ďalšie"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Ďalšie kroky"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Súkromie"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Súkromné vyhľadávanie"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "Váš predvolený vyhľadávač je DuckDuckGo Private Search, takže môžete na webe vyhľadávať bez sledovania."; + +/* Header of settings related to search */ +"settings.search.settings" = "Nastavenia vyhľadávania"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Nastavenie polohy panela s adresou"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Podpora"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Synchronizácia a zálohovanie"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Súkromné hlasové vyhľadávanie"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Ochrana pred sledovaním webu"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo automaticky blokuje skryté sledovacie zariadenia pri prehliadaní webu.\n[Viac informácií](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Odoslať správu"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Ktorá webová stránka je nefunkčná?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Aktivovať predplatné"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Získajte prístup k odberu Privacy Pro prostredníctvom e-mailovej adresy."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Použite svoje predplatné na iných zariadeniach"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Vaše predplatné bolo zakúpené prostredníctvom obchodu Google Play. Ak chcete obnoviť predplatné, otvorte nastavenia predplatného v obchode Google Play v zariadení prihlásenom do rovnakého účtu Google, ktorý ste pôvodne použili na zakúpenie predplatného."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Plány predplatného"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Späť na nastavenia"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Máme problémy s pripojením. Prosím, skúste to neskôr znova."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Vyskytla sa chyba"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Kód obnovenia bol skopírovaný do schránky"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Chcete vypnúť synchronizáciu?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Ľutujeme, ale synchronizácia a zálohovanie momentálne nie sú k dispozícii. Prosím, skúste to neskôr znova."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Ochrana súkromia na doméne %@ bola vypnutá"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Ochrana súkromia na doméne %@ bola vypnutá a správa bola odoslaná."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Ochrana súkromia na doméne %@ bola zapnutá"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Zrušiť"; /* 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."; +"voiceSearch.footer.note" = "Do panela s adresou pridajte možnosť Súkromné hlasové vyhľadávanie. Zvuk sa neukladá ani sa s nikým nezdieľa, a to vrátane DuckDuckGo."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "Zvuk sa spracováva v zariadení. Neukladá sa nikde a s nikým, vrátane DuckDuckGo, sa nezdieľa."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "OK"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Ďakujeme, že ste sa stali testerom! Ak chcete pokračovať v používaní VPN, predplaťte si DuckDuckGo Privacy Pro a získajte 40 % zľavu s promo kódom THANKYOU\n\nPonuku je možné uplatniť len na obmedzený čas v počítačovej verzii prehliadača DuckDuckGo u amerických testerov, ktorí si ju nainštalujú zo stránky duckduckgo.com/app"; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "Predčasný prístup k VPN DuckDuckGo je u konca"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Povoliť oznámenia"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Vitajte na Duck Side!"; -/* 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"; diff --git a/DuckDuckGo/sl.lproj/Autocomplete.strings b/DuckDuckGo/sl.lproj/Autocomplete.strings index caa0cf39bd..bab9dfb63b 100644 --- a/DuckDuckGo/sl.lproj/Autocomplete.strings +++ b/DuckDuckGo/sl.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Oznaka"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Oznaka"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Ni predlogov"; diff --git a/DuckDuckGo/sl.lproj/Localizable.strings b/DuckDuckGo/sl.lproj/Localizable.strings index 5bf7419327..7c8a217a51 100644 --- a/DuckDuckGo/sl.lproj/Localizable.strings +++ b/DuckDuckGo/sl.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Upravljanje"; +/* Button label for OK action */ +"action.ok" = "V REDU"; + /* Add action - button shown in alert */ "action.title.add" = "Dodaj"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "URL naslov kopiran"; /* Delete action - button shown in alert */ -"action.title.delete" = "Izbriši"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Onemogoči zaščito zasebnosti"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Podatkov na strežniku ni bilo mogoče izbrisati."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Če želite seznaniti ti napravi, izklopite možnost »Sinhronizacija in varnostno kopiranje« v eni napravi in nato v drugi napravi tapnite »Sinhronizacija z drugo napravo«."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Te naprave ni bilo mogoče odstraniti iz sinhronizacije in varnostnega kopiranja."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Včeraj"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Upravljanje pojavnih oken za piškotke"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Ne, hvala"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Videti je, da ima to spletno mesto pojavno okno s soglasjem za piškotke👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Želite, da jih uredim namesto vas? Poskušam zmanjšati piškotke, povečati zasebnost in skriti pojavna okna, kot so ta."; - /* No comment provided by engineer. */ "dax.hide.button" = "Skrivaj nasvete za vedno"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Naslov Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo za iOS"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "Zaščita e-pošte"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Prenesite DuckDuckGo za računalnike Mac!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "VPN DuckDuckGo"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Pravilnik o zasebnosti"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Strinjam se in želim nadaljevati"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Omrežna zaščita Network Protection je med zgodnjim dostopom brezplačna."; +"network-protection.waitlist.availability-disclaimer" = "Uporaba omrežja VPN DuckDuckGo je med zgodnjim dostopom brezplačna."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Strinjam se in želim nadaljevati"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Pridobite dodatno raven zaščite na spletu z VPN-jem, ustvarjenim za hitrost in preprostost. Šifrirajte internetno povezavo v celotni napravi ter skrijte svojo lokacijo in naslov IP pred spletnimi mesti, ki jih obiščete."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Vabimo vas, da preizkusite\nzgodnji dostop do zaščite omrežja Network Protection!"; +"network-protection.waitlist.invited.title" = "Vabimo vas, da preizkusite\nzgodnji dostop do omrežja VPN DuckDuckGo!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Z zaščito omrežja Network Protection, VPN-jem podjetja DuckDuckGo, zaščitite povezavo kjer koli in kadar koli."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Pridružite se čakalni listi in obvestili vas bomo, ko boste na vrsti."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "Zgodnji dostop do omrežja VPN"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Na seznamu ste!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Ko bo vaše povabilo pripravljeno, vas bomo obvestili."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Poslali vam bomo obvestilo, ko bo vaše povabilo za preizkušanje zaščite omrežja Network Protection pripravljeno."; +"network-protection.waitlist.notification-alert.description" = "Ko bo vaše povabilo za preizkus omrežja VPN DuckDuckGo pripravljeno, vam bomo poslali obvestilo."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Prejmite obvestilo, ko bo vaš zgodnji dostop do zaščite omrežja Network Protection pripravljen."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Odprite svoje povabilo"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Zaščita omrežja Network Protection je pripravljena!"; +"network-protection.waitlist.notification.title" = "Omrežje VPN DuckDuckGo je pripravljeno!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Vaše povabilo je pripravljeno!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Pridruži se zasebnemu čakalnemu seznamu"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "Pogosta vprašanja o omrežju VPN DuckDuckGo"; + +/* 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 ..."; + /* 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" = "Vabimo vas, da preizkusite zaščito omrežja Network Protection"; +"network.protection.invite.dialog.title" = "Vabimo vas, da preizkusite omrežje VPN DuckDuckGo"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Odpri VPN"; /* 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 - %@"; +"network.protection.status.connected.format" = "Povezano · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Povežite se, da zaščitite ves internetni promet\nv svoji napravi."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Ves internetni promet v napravi je zaščiten\nprek omrežja VPN."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "Omrežje VPN DuckDuckGo je izklopljeno"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "Omrežje VPN DuckDuckGo je vklopljeno"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Upravljanje"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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 %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Vključite obvestila"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Dovolite, da vas DuckDuckGo obvesti o prekinitvi povezave ali spremembi stanja VPN."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "Več o"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Prejmite obvestilo o prekinitvi povezave ali spremembi stanja VPN."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "Opozorila VPN"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Podatkovni nosilec"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Omogočite, da lahko lokalni promet zaobide omrežje VPN in se poveže z napravami v lokalnem omrežju, na primer s tiskalnikom."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Povezana lokacija"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "Mesta: %d"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(najbližje)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Samodejno se poveže z najbližjim strežnikom, ki ga najdemo."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Izbrana lokacija"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "Obvestila VPN"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Najbližja lokacija"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "Naš VPN za ohranjanje zasebnosti vaših spletnih dejavnosti uporablja varni DNS, zato da ponudnik interneta ne more videti, katera spletna mesta obiskujete."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Pogosta vprašanja"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Deljenje povratnih informacij o omrežju VPN"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "Nastavitve VPN"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "V REDU"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Zaščita zasebnosti"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "Logotip DuckDuckGo"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "DuckDuckGo je neodvisno podjetje za zasebnost v internetu, ustanovljeno leta 2008, in je namenjeno vsem, ki so naveličani sledenja v spletu in si želijo preproste rešitve. Dokazujemo, da je v spletu mogoče zagotoviti pravo zaščito zasebnosti brez sklepanja kompromisov.\n\nBrskalnik DuckDuckGo ima funkcije, ki jih pričakujete od priljubljenega brskalnika, kot so zaznamki, zavihki, gesla in drugo, ter več kot [ducat učinkovitih zaščit zasebnosti](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/) ki v večini priljubljenih brskalnikov niso na voljo privzeto. Ta edinstveni celovit sklop zaščite zasebnosti pomaga zaščititi vaše spletne dejavnosti, od iskanja do brskanja, pošiljanja e-pošte in še več.\n\nNaša zaščita zasebnosti deluje, ne da bi se vam bilo treba spoznati na tehnične podrobnosti ali se ukvarjati z zapletenimi nastavitvami. Vse, kar morate storiti, je, da brskalnik preklopite na DuckDuckGo v vseh napravah in zasebnost bo privzeta.\n\nČe pa želite pogledati v mehanizem delovanja, lahko več informacij o delovanju zaščite zasebnosti DuckDuckGo najdete na naših [straneh s pomočjo](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Dostopnost"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Dodajte aplikacijo na svoj domači zaslon"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Dodajte pripomoček na domači zaslon"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Položaj naslovne vrstice"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Naslovna vrstica"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Prikaži polni naslov spletnega mesta"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Zaklepanje aplikacije"; /* Section footer Autolock description */ -"settings.autolock.description" = "Če nastavite prepoznavanje z dotikom, prepoznavanje z obrazom ali sistemsko geslo, boste ob odpiranju morali odkleniti aplikacijo."; +"settings.autolock.description" = "Če je omogočena identifikacija s prepoznavanjem prstnega odtisa ali obraza ali s sistemsko kodo za dostop, boste pri odpiranju aplikacije pozvani, da jo odklenete."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Samodejno počisti podatke"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Zaščita pred pojavnimi okni piškotkov"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo bo poskusil izbrati najbolj zasebne nastavitve, ki so na voljo, in skriti ta pojavna okna za vas.\n[Več o tem](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Upravljanje pojavnih oken za piškotke"; /* Settings title for the customize section */ "settings.customize" = "Prilagodi"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Nastavite za privzeti brskalnik"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Počiščenje podatkov"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "Zaščita e-pošte"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Privzet brskalnik"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Onemogoči samodejno izpolnjevanje pri funkciji Email Protection"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo na drugih platformah"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Blokirajte sledilnike e-pošte in skrijte svoj naslov, ne da bi vam bilo treba zamenjati ponudnika e-pošte.\n[Več o tem](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Če se odjavite iz računa za funkcijo Email Protection, boste v tem brskalniku onemogočili samodejno izpolnjevanje naslovov Duck Address. Te naslove lahko še vedno uporabljate in posredovano e-pošto prejemate kot običajno."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Blokirajte sledilnike e-pošte in skrijte svoj naslov"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Omogočite zaščito e-pošte Email Protection"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Omogočanje glasovnega iskanja"; + /* Settings cell for Feedback */ "settings.feedback" = "Deli povratne informacije"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Spletne strani s požarno zaščito"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Splošno"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Globalni nadzor zasebnosti (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Tipkovnica"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Naj DuckDuckGo upravlja pojavna okna s soglasjem za piškotke"; + /* Settings screen cell text for passwords */ "settings.logins" = "Gesla"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Glavne nastavitve"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Upravljanje računa"; + /* Settings title for the 'More' section */ "settings.more" = "Več od iskalnika DuckDuckGo"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Več nastavitev iskanja"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Prilagodite jezik, regijo in drugo"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Naslednji koraki"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Zasebnost"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "zasebno iskanje"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "DuckDuckGo Private Search je vaš privzeti iskalnik, zato lahko po spletu iščete, ne da bi vam kdo sledil."; + +/* Header of settings related to search */ +"settings.search.settings" = "Nastavitve iskanja"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Nastavitev položaja naslovne vrstice"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Podpora"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Sinhronizacija in varnostno kopiranje"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Zasebno glasovno iskanje"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Zaščita pred spletnim sledenjem"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo samodejno blokira skrite sledilnike med brskanjem po spletu.\n[Več o tem](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Pošlji poročilo"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Katera spletna stran je poškodovana?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Aktiviranje naročnine"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Dostopajte do svoje naročnine na Privacy Pro prek e-poštnega naslova."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Uporaba naročnine v drugih napravah"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Vaša naročnina je bila kupljena v trgovini Google Play. Če želite podaljšati naročnino, odprite nastavitve naročnine v trgovini Google Play v napravi, v kateri ste prijavljeni v isti račun Google, kot ste ga uporabili za prvotni nakup naročnine."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Naročniški paketi"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Nazaj na nastavitve"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Imamo težave pri povezovanju. Poskusite znova pozneje."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Nekaj je šlo narobe"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Obnovitvena koda je bila kopirana v odložišče"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Želite izklopiti sinhronizacijo?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Sinhronizacija in varnostno kopiranje žal trenutno nista na voljo. Poskusite znova pozneje."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Zaščita zasebnosti je onemogočena za %@"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Zaščita zasebnosti je onemogočena za %@ in poročilo je bilo poslano."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Zaščita zasebnosti je omogočena za %@"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Prekliči"; /* 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."; +"voiceSearch.footer.note" = "Dodajte možnost zasebnega glasovnega iskanja v naslovno vrstico. Zvok ni shranjen ali posredovan nikomur niti DuckDuckGo."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "Zvok bo obdelan v napravi. Zvok ne bo shranjen in ne bo deljen z drugimi, niti z brskalnikom DuckDuckGo."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "V REDU"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Hvala, da ste sodelovali pri preizkušanju! Če želite še naprej uporabljati omrežje VPN, se naročite na DuckDuckGo Privacy Pro in izkoristite 40 % popust s promocijsko kodo THANKYOU.\n\nPonudbo lahko v namizni različici brskalnika DuckDuckGo za omejen čas izkoristijo le sodelujoči pri preizkušanju iz ZDA, ki program namestijo s spletne strani duckduckgo.com/app"; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "Zgodnji dostop do omrežja VPN DuckDuckGo je končan"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Dovoli obvestila"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Dobrodošli na strani Duck!"; -/* 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"; diff --git a/DuckDuckGo/sv.lproj/Autocomplete.strings b/DuckDuckGo/sv.lproj/Autocomplete.strings index 8fc63d96c3..cf3ef8d060 100644 --- a/DuckDuckGo/sv.lproj/Autocomplete.strings +++ b/DuckDuckGo/sv.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Etikett"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Etikett"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Inga förslag"; diff --git a/DuckDuckGo/sv.lproj/Localizable.strings b/DuckDuckGo/sv.lproj/Localizable.strings index 938b1fa2e2..9267c273e9 100644 --- a/DuckDuckGo/sv.lproj/Localizable.strings +++ b/DuckDuckGo/sv.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Hantera"; +/* Button label for OK action */ +"action.ok" = "OK"; + /* Add action - button shown in alert */ "action.title.add" = "Lägg till"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "Webbadress kopierad"; /* Delete action - button shown in alert */ -"action.title.delete" = "Ta bort"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Inaktivera integritetsskydd"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Det gick inte att radera data på servern."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "För att parkoppla dessa enheter stänger du av synkronisering och säkerhetskopiering på en enhet och trycker därefter på ”Synkronisera med en annan enhet” på den andra enheten."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Det gick inte att ta bort denna enhet från synkronisering och säkerhetskopiering."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Igår"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Hantera popup-fönster för cookies"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Nej tack"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Den här webbplatsen verkar ha ett popup-fönster för godkännande av cookies👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Vill du att jag ska hantera dessa åt dig? Jag kan försöka minimera cookies, maximera integriteten och dölja sådana här popup-fönster."; - /* No comment provided by engineer. */ "dax.hide.button" = "Dölj tipsen för alltid"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "DuckDuckGo för iOS"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "E-postskydd"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Skaffa DuckDuckGo för Mac!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "DuckDuckGo VPN"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Integritetspolicy"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Acceptera och fortsätt"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Du får kostnadsfri tidigare tillgång till Network Protection."; +"network-protection.waitlist.availability-disclaimer" = "DuckDuckGo VPN är gratis att använda under perioden med tidig tillgång."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Godkänn och fortsätt"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Få ett extra skyddslager online med ett VPN som är byggt för att fungera snabbt och enkelt. Kryptera din internetanslutning i hela enheten. Dölj din plats och IP-adress från webbplatser du besöker."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Du är inbjuden att prova \n Network Protection med tidigare tillgång!"; +"network-protection.waitlist.invited.title" = "Du är inbjuden att prova DuckDuckGo VPN med tidig tillgång!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "Gör din anslutning säker när och var som helst med DuckDuckGos VPN, Network Protection."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Skriv upp dig på väntelistan så meddelar vi dig när det är din tur."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "Tidig tillgång till VPN"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Du står på listan!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Vi meddelar dig när din inbjudan är klar."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Vi skickar ett meddelande till dig när din inbjudan att testa Network Protection är klar."; +"network-protection.waitlist.notification-alert.description" = "Vi skickar ett meddelande till dig när din inbjudan att prova DuckDuckGo VPN är klar."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Få ett meddelande när ditt exemplar av tidigare tillgång till Network Protection är klart."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Öppna din inbjudan"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Network Protection är klart!"; +"network-protection.waitlist.notification.title" = "DuckDuckGo VPN är klart!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Din inbjudan är klar!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Ställ dig i den privata väntelistan"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "Vanliga frågor om DuckDuckGo VPN"; + +/* 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..."; + /* 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" = "Du är inbjuden att prova Network Protection"; +"network.protection.invite.dialog.title" = "Du är inbjuden att prova DuckDuckGo VPN"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "Öppna VPN"; /* 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 - %@"; +"network.protection.status.connected.format" = "Ansluten · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Anslut för att säkra all internettrafik\nför din enhet."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "All internettrafik för enheten\nsäkras genom VPN."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "DuckDuckGo VPN är Av"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "DuckDuckGo VPN är På"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Hantera"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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 %@."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Aktivera aviseringar"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Tillåt DuckDuckGo att meddela dig om din anslutning bryts eller VPN-statusen ändras."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "Om"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Få en avisering om din anslutning bryts eller om VPN-statusen ändras."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "VPN-varningar"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Datavolym"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Låt lokal trafik kringgå VPN och ansluta till enheter i ditt lokala nätverk, t.ex. skrivare."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Ansluten plats"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "%d orter"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(Närmast)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Anslut automatiskt till den närmaste servern vi kan hitta."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Vald plats"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "VPN-aviseringar"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "Närmaste plats"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "Vårt VPN använder Secure DNS för att hålla din onlineaktivitet privat. Det betyder att din internetleverantör inte kan se vilka webbplatser du besöker."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Vanliga frågor"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "Dela VPN-feedback"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "VPN-inställningar"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "OK"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Integritetsskydd"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "DuckDuckGos logotyp"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "DuckDuckGo är det oberoende integritetsskyddsföretaget som grundades 2008 för alla som är trötta på att bli spårade online och vill ha en enkel lösning. Vi är beviset på att man kan få riktigt integritetsskydd på nätet utan att kompromissa.\n\nDuckDuckGo-webbläsaren har de funktioner du förväntar dig av en vanlig webbläsare, som bokmärken, flikar, lösenord och mer, plus över [ett dussin kraftfulla integritetsskydd](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/) som inte ingår som standard i de flesta populära webbläsare. Den här omfattande uppsättningen av integritetsskydd hjälper dig att skydda dina onlineaktiviteter, från sökning och surfning till e-post och mycket mer.\n\nVårt integritetsskydd fungerar utan att du behöver känna till de tekniska detaljerna eller ta itu med komplicerade inställningar. Det enda du behöver göra är att byta webbläsare till DuckDuckGo på alla dina enheter för att få integritet som standard.\n\nMen om du * verkligen* vill ta en titt under huven hittar du mer information om hur DuckDuckGos integritetsskydd fungerar på våra [hjälpsidor](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/)."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Tillgänglighet"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Lägg till app i din Dock"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Lägg till widget på startsidan"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Adressfältsläge"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Adressfält"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Visa hela webbplatsadressen"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "App-lås"; /* Section footer Autolock description */ -"settings.autolock.description" = "Om Touch ID, Face ID eller ett systemlösenord har konfigurerats ombes du låsa upp appen när du öppnar."; +"settings.autolock.description" = "Om Touch ID, Face ID eller ett systemlösenord har aktiverats blir du ombedd att låsa upp appen när du öppnar den."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Rensa data automatiskt"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Skydd mot popup-fönster för cookies"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo kommer att försöka välja de mest privata inställningarna som finns tillgängliga och dölja dessa popup-fönster åt dig.\n[Läs mer](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Hantera popup-fönster för cookies"; /* Settings title for the customize section */ "settings.customize" = "Anpassa"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Ställ in som standardwebbläsare"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Datarensning"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "E-postskydd"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Standardwebbläsare"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Inaktivera automatisk ifyllning för Email Protection"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "DuckDuckGo på andra plattformar"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "Blockera e-postspårare och dölj din adress utan att byta e-postleverantör.\n[Läs mer](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Om du loggar ut från ditt Email Protection-konto inaktiveras automatisk ifyllning av Duck Address i den här webbläsaren. Du kan fortfarande använda de här adresserna och ta emot vidarebefordrad e-post som vanligt."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "Blockera e-postspårare och dölj din adress"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Aktivera Email Protection"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Aktivera röstsökning"; + /* Settings cell for Feedback */ "settings.feedback" = "Berätta vad du tycker"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Brandsäkra webbplatser"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Allmänt"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Global Privacy Control (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Tangentbord"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "Låt DuckDuckGo hantera popup-fönster för godkännande av cookies"; + /* Settings screen cell text for passwords */ "settings.logins" = "Lösenord"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Huvudinställningar"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Hantera konto"; + /* Settings title for the 'More' section */ "settings.more" = "Mer från DuckDuckGo"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Fler sökinställningar"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Anpassa ditt språk, din region med mera"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Nästa steg"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Sekretess"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Privatsökning"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "DuckDuckGo Private Search är din standardsökmotor, så att du kan söka på webben utan att bli spårad."; + +/* Header of settings related to search */ +"settings.search.settings" = "Sökinställningar"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Ange din adressfältsposition"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Support"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Synkronisering och säkerhetskopiering"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Privat röstsökning"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Web Tracking Protection"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo blockerar automatiskt dolda spårare när du surfar på webben.\n[Läs mer](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Skicka in rapport"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Vilken webbplats är skadad?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Aktivera abonnemang"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Kom åt ditt Privacy Pro-abonnemang genom en e-postadress."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Använd ditt abonnemang på andra enheter"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Ditt abonnemang köptes genom Google Play-butiken. För att förnya abonnemanget öppnar du abonnemangsinställningarna för Google Play-butiken på en enhet som är inloggad på samma Google-konto som användes för att köpa ditt abonnemang."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Abonnemangstyper"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Tillbaka till Inställningar"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Det gick inte att ansluta. Försök igen senare."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Något gick fel"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Återställningskoden har kopierats till urklipp"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Vill du inaktivera synkronisering?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Tyvärr är synkronisering och säkerhetskopiering inte tillgängliga för närvarande. Försök igen senare."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Integritetsskydd inaktiverat för %@"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Integritetsskydd inaktiverat för %@ och rapport skickad."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Integritetsskydd aktiverat för %@"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "Avbryt"; /* 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."; +"voiceSearch.footer.note" = "Lägg till alternativet privat röstsökning i adressfältet Ljud lagras inte och delas inte med någon, inte ens DuckDuckGo."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "Ljudet bearbetas på enheten. Det lagras inte och delas inte med någon, inte ens DuckDuckGo."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "OK"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Tack för att du är testare! För att fortsätta använda VPN kan du abonnera på DuckDuckGo Privacy Pro och få 40 % rabatt med kampanjkoden THANKYOU\n\nErbjudandet kan endast lösas in under en begränsad tid i datorversionen av DuckDuckGo-webbläsaren av testare i USA som installerar från duckduckgo.com/app"; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "Tidig tillgång till DuckDuckGo VPN är över"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Tillåt aviseringar"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Välkommen till Duck-sidan!"; -/* 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"; diff --git a/DuckDuckGo/tr.lproj/Autocomplete.strings b/DuckDuckGo/tr.lproj/Autocomplete.strings index 9c78005692..630e85e222 100644 --- a/DuckDuckGo/tr.lproj/Autocomplete.strings +++ b/DuckDuckGo/tr.lproj/Autocomplete.strings @@ -1,6 +1,9 @@ /* Class = "UILabel"; text = "Label"; ObjectID = "5ag-a1-mlA"; */ "5ag-a1-mlA.text" = "Label"; +/* Class = "UILabel"; text = "Label"; ObjectID = "eiv-Cq-E2r"; */ +"eiv-Cq-E2r.text" = "Label"; + /* Class = "UILabel"; text = "No Suggestions"; ObjectID = "gPe-Cv-14j"; */ "gPe-Cv-14j.text" = "Öneri yok"; diff --git a/DuckDuckGo/tr.lproj/Localizable.strings b/DuckDuckGo/tr.lproj/Localizable.strings index 1f8304a232..eafd4e90a9 100644 --- a/DuckDuckGo/tr.lproj/Localizable.strings +++ b/DuckDuckGo/tr.lproj/Localizable.strings @@ -1,9 +1,6 @@ /* 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"; @@ -16,6 +13,9 @@ /* Button label for managing favorites */ "action.manage.favorites" = "Yönet"; +/* Button label for OK action */ +"action.ok" = "Tamam"; + /* Add action - button shown in alert */ "action.title.add" = "Ekle"; @@ -38,7 +38,7 @@ "action.title.copy.message" = "URL kopyalandı"; /* Delete action - button shown in alert */ -"action.title.delete" = "Sil"; +"action.title.delete" = "Delete"; /* Disable protection action */ "action.title.disable.protection" = "Gizlilik Korumasını Devre Dışı Bırak"; @@ -176,7 +176,7 @@ "alert.unable-to-delete-data-description" = "Sunucudaki veriler silinemiyor."; /* Description for unable to merge two accounts error */ -"alert.unable-to-merge-two-accounts-description" = "Bu cihazları eşleştirmek için bir cihazda Senkronizasyon ve Yedeklemeyi kapattıktan sonra diğer cihazda \"Başka bir Cihazla Senkronizasyon\" ögesine dokunun."; +"alert.unable-to-merge-two-accounts-description" = "To pair these devices, turn off Sync & Backup on one device then tap \"Sync With Another Device\" on the other device."; /* Description for unable to remove device error */ "alert.unable-to-remove-device-description" = "Bu cihaz Senkronizasyon ve Yedekleme'den kaldırılamıyor."; @@ -838,18 +838,6 @@ /* Title for a section containing only items from yesterday */ "date.range.yesterday" = "Dün"; -/* Button title accepting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.accept" = "Çerez Açılır Pencerelerini Yönetin"; - -/* Button title rejecting to enable feature to automatically manage cookie popups */ -"dax.cookie-consent.button.reject" = "Hayır Teşekkürler"; - -/* First part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.first" = "Görünüşe göre bu sitede çerez izni için açılır pencere var👇"; - -/* Second part of text displayed on Dax dialog for enabling Autoconsent for Cookie Management feature */ -"dax.cookie-consent.second" = "Bunları sizin yerinize halletmemizi ister misiniz? Çerezleri en aza indirmeyi, gizliliği en üst düzeye çıkarmayı ve bunun gibi açılır pencereleri gizlemeyi deneyebiliriz."; - /* No comment provided by engineer. */ "dax.hide.button" = "İpuçlarını Sonsuza Kadar Gizle"; @@ -988,6 +976,9 @@ /* No comment provided by engineer. */ "Duck Address" = "Duck Address"; +/* No comment provided by engineer. */ +"DuckDuckGo for iOS" = "iOS için DuckDuckGo"; + /* Email protection service offered by DuckDuckGo */ "email-protection" = "E-posta Koruması"; @@ -1423,9 +1414,6 @@ /* Title for the Join Waitlist screen */ "mac-waitlist.join-waitlist-screen.try-duckduckgo-for-mac" = "Mac için DuckDuckGo'yu edinin!"; -/* 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?"; @@ -1462,8 +1450,11 @@ /* 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"; +/* Title for the DuckDuckGo VPN feature in settings */ +"netP.settings.title" = "VPN"; + +/* Title for the DuckDuckGo VPN feature */ +"netP.title" = "DuckDuckGo VPN"; /* Privacy Policy title for Network Protection */ "network-protection.privacy-policy.title" = "Gizlilik Politikası"; @@ -1472,7 +1463,7 @@ "network-protection.waitlist.agree-and-continue" = "Kabul Et ve Devam Et"; /* Availability disclaimer for Network Protection join waitlist screen */ -"network-protection.waitlist.availability-disclaimer" = "Ağ Korumasının kullanımı erken erişim sırasında ücretsizdir."; +"network-protection.waitlist.availability-disclaimer" = "DuckDuckGo VPN, erken erişim sırasında ücretsiz olarak kullanılabilir."; /* Agree and Continue button for Network Protection join waitlist screen */ "network-protection.waitlist.button.agree-and-continue" = "Kabul Et ve Devam Et"; @@ -1511,7 +1502,7 @@ "network-protection.waitlist.invited.subtitle" = "Hız ve basitlik için tasarlanmış VPN ile internette ekstra bir koruma katmanı edinin. İnternet bağlantınızı cihazınız genelinde şifreleyerek konumunuzu ve IP adresinizi ziyaret ettiğiniz sitelerden gizleyin."; /* Title for Network Protection invited screen */ -"network-protection.waitlist.invited.title" = "Ağ Koruması erken erişimini\ndenemeye davetlisiniz!"; +"network-protection.waitlist.invited.title" = "DuckDuckGo VPN erken erişimini denemeye davetlisiniz!"; /* First subtitle for Network Protection join waitlist screen */ "network-protection.waitlist.join.subtitle.1" = "DuckDuckGo'nun sunduğu VPN hizmeti Ağ Koruması ile bağlantınızı her zaman, her yerde güvence altına alın."; @@ -1520,7 +1511,7 @@ "network-protection.waitlist.join.subtitle.2" = "Bekleme listesine katılın. Sıra size geldiğinde sizi bilgilendireceğiz."; /* Title for Network Protection join waitlist screen */ -"network-protection.waitlist.join.title" = "Network Protection Early Access"; +"network-protection.waitlist.join.title" = "VPN Erken Erişim"; /* Title for Network Protection joined waitlist screen */ "network-protection.waitlist.joined.title" = "Listedesiniz!"; @@ -1532,7 +1523,7 @@ "network-protection.waitlist.joined.with-notifications.subtitle.2" = "Davetiyeniz hazır olduğunda sizi bilgilendireceğiz."; /* Body text for the alert to enable notifications */ -"network-protection.waitlist.notification-alert.description" = "Ağ Korumasını test etmek için davetiyeniz hazır olduğunda size bildirim göndereceğiz."; +"network-protection.waitlist.notification-alert.description" = "DuckDuckGo VPN deneme davetiniz hazır olduğunda size bildirim göndereceğiz."; /* Subtitle for the alert to confirm enabling notifications */ "network-protection.waitlist.notification-prompt-description" = "Ağ Koruması için erken erişiminiz hazır olduğunda bildirim alın."; @@ -1544,7 +1535,7 @@ "network-protection.waitlist.notification.text" = "Davetiyenizi açın"; /* Title for Network Protection waitlist notification */ -"network-protection.waitlist.notification.title" = "Ağ Koruması hazır!"; +"network-protection.waitlist.notification.title" = "DuckDuckGo VPN hazır!"; /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.joined-and-invited" = "Davetiyeniz hazır!"; @@ -1555,11 +1546,23 @@ /* Subtitle text for the Network Protection settings row */ "network-protection.waitlist.settings-subtitle.waitlist-not-joined" = "Özel Bekleme Listesine Katılın"; +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* 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."; + +/* Title for the VPN FAQ screen. */ +"network.protection.faq.title" = "DuckDuckGo VPN Sıkça Sorulan Sorular"; + +/* 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..."; + /* 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" = "Ağ Korumasını denemeye davetlisiniz"; +"network.protection.invite.dialog.title" = "DuckDuckGo VPN'i denemeye davetlisiniz"; /* Prompt for the network protection invite code text field */ "network.protection.invite.field.prompt" = "Invite Code"; @@ -1570,11 +1573,14 @@ /* Title for the network protection invite success view */ "network.protection.invite.success.title" = "Success! You’re in."; +/* The title of the notifications shown from Network Protection */ +"network.protection.notification.title" = "DuckDuckGo"; + /* Title text for an iOS quick action that opens VPN settings */ "network.protection.quick-action.open-vpn" = "VPN'i aç"; /* 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 - %@"; +"network.protection.status.connected.format" = "Bağlandı · %@"; /* The label for the NetP VPN when connecting */ "network.protection.status.connecting" = "Connecting..."; @@ -1585,14 +1591,17 @@ /* 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."; +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.off" = "Tüm cihazlarınızın internet trafiğinde güvenliği sağlamak\niçin bağlanın."; + +/* Message label text for the status view when VPN is disconnected */ +"network.protection.status.header.message.on" = "Tüm cihaz internet trafiği VPN ile güvence altında."; -/* 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 VPN is disconnected */ +"network.protection.status.header.title.off" = "DuckDuckGo VPN Kapalı"; -/* Header title label text for the status view when netP is connected */ -"network.protection.status.header.title.on" = "Network Protection is On"; +/* Header title label text for the status view when VPN is connected */ +"network.protection.status.header.title.on" = "DuckDuckGo VPN Açık"; /* The status view 'Share Feedback' button which is shown inline on the status view after the temporary free use footer text */ "network.protection.status.menu.share.feedback" = "Share Feedback"; @@ -1616,7 +1625,13 @@ "network.protection.status.view.settings.section.title" = "Yönet"; /* Title label text for the status view when netP is disconnected */ -"network.protection.status.view.title" = "Network Protection"; +"network.protection.status.view.title" = "VPN"; + +/* 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."; /* Title for the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.button.title" = "Bildirimleri Açın"; @@ -1624,12 +1639,18 @@ /* Footer text under the button to link to the iOS app settings and enable notifications app-wide. */ "network.protection.turn.on.notifications.section.footer" = "Bağlantınız kesilirse veya VPN durumunuz değişirse DuckDuckGo'nun sizi bilgilendirmesine izin verin."; +/* Title of the About section in the VPN status screen */ +"network.protection.vpn.about" = "Hakkında"; + /* List section footer for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.section.footer" = "Bağlantınız kesilirse veya VPN durumunuz değişirse bildirim alın."; /* Title for the toggle for VPN alerts. */ "network.protection.vpn.alerts.toggle.title" = "VPN Uyarıları"; +/* Title for the data volume section in the VPN status screen */ +"network.protection.vpn.data-volume" = "Veri Hacmi"; + /* Footer text for the Exclude Local Networks setting item. */ "network.protection.vpn.exclude.local.networks.setting.footer" = "Yerel trafiğin VPN'i atlamasını ve yerel ağınızdaki yazıcı gibi cihazlara bağlanmasını sağlayın."; @@ -1639,11 +1660,14 @@ /* Title for the VPN Location screen's All Countries section. */ "network.protection.vpn.location.all.countries.section.title" = "All Countries"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.connected" = "Bağlı Konum"; + /* Subtitle of countries item when there are multiple cities, example : */ "network.protection.vpn.location.country.item.formatted.cities.count" = "%d şehir"; -/* Title for the VPN Location screen's Nearest Available selection item. */ -"network.protection.vpn.location.nearest.available.item.title" = "Nearest Available"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.nearest" = "(En Yakın)"; /* Footer describing the VPN Location screen's Recommended section which just has Nearest Available. */ "network.protection.vpn.location.recommended.section.footer" = "Bulabildiğimiz en yakın sunucuya otomatik olarak bağlanın."; @@ -1651,6 +1675,9 @@ /* Title for the VPN Location screen's Recommended section. */ "network.protection.vpn.location.recommended.section.title" = "Recommended"; +/* Description of the location type in the VPN status screen */ +"network.protection.vpn.location.selected" = "Konum Seçildi"; + /* Subtitle for the preferred location item that formats a city and country. E.g Chicago, United States */ "network.protection.vpn.location.subtitle.formatted.city.and.country" = "%1$@, %2$@"; @@ -1661,7 +1688,7 @@ "network.protection.vpn.notifications.title" = "VPN Bildirimleri"; /* Label for the Preferred Location VPN Settings item when the nearest available location is selected. */ -"network.protection.vpn.preferred.location.nearest" = "Nearest Available"; +"network.protection.vpn.preferred.location.nearest" = "En yakın konum"; /* Title for the Preferred Location VPN Settings item. */ "network.protection.vpn.preferred.location.title" = "Preferred Location"; @@ -1669,6 +1696,12 @@ /* Footer text for the Always on VPN setting item. */ "network.protection.vpn.secure.dns.setting.footer" = "VPN'imiz çevrim içi etkinliğinizi gizli tutmak için Güvenli DNS kullanır. Böylece internet sağlayıcınız hangi web sitelerini ziyaret ettiğinizi göremez."; +/* Title for the FAQ row in the VPN status screen. */ +"network.protection.vpn.settings.faq" = "Sıkça Sorulan Sorular"; + +/* Title for the feedback row in the VPN status screen. */ +"network.protection.vpn.settings.share-feedback" = "VPN Geri Bildirimini Paylaş"; + /* Title for the VPN Settings screen. */ "network.protection.vpn.settings.title" = "VPN Ayarları"; @@ -1765,6 +1798,9 @@ /* Confirmation button in alert */ "preserveLogins.remove.all.ok" = "Tamam"; +/* No comment provided by engineer. */ +"Privacy Protections" = "Gizlilik Korumaları"; + /* Privacy Icon accessibility title */ "privacy.icon.dax" = "DuckDuckGo logosu"; @@ -1804,14 +1840,18 @@ /* about page */ "settings.about.text" = "DuckDuckGo, çevrim içi takip edilmeyi hiç istemeyen ve pratik bir çözüm arayan herkese hizmet veren, 2008 yılında kurulmuş bağımsız bir İnternet gizlilik şirketidir. Biz, çevrim içi ortamda ödün vermeden gerçek gizlilik koruması elde edebileceğinizin kanıtıyız.\n\nDuckDuckGo tarayıcı; yer imleri, sekmeler, parolalar ve daha fazlası gibi en çok kullandığınız tarayıcıdan beklediğiniz ama çoğu popüler tarayıcıda varsayılan olarak bulunmayan özelliklerin yanı sıra [sayısı ondan fazla güçlü gizlilik koruması](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/) ile birlikte gelir. Son derece kapsamlı olan bu gizlilik koruma seti; aramadan gezinmeye, e-posta göndermeye ve daha fazlasına kadar çevrim içi etkinliklerinizde koruma sağlamaya yardımcı olur.\n\nGizlilik korumalarımız, teknik ayrıntılar hakkında hiçbir şey bilmenize veya karmaşık ayarlarla uğraşmanıza gerek kalmadan çalışır. Tüm cihazlarınızda tarayıcı olarak DuckDuckGo'yu kullanarak aradığınız gizliliği sağlayabilirsiniz.\n\nAncak ayrıntılara bir göz atmak *istiyorsanız*, DuckDuckGo gizlilik korumalarının nasıl çalıştığı hakkında daha fazla bilgiyi [yardım sayfalarımızda](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/) bulabilirsiniz."; +/* Settings screen accessibility section title */ +"settings.accessibility" = "Erişilebilirlik"; + /* Settings screen cell text for adding the app to the dock */ "settings.add.to.dock" = "Uygulamayı Dock'a Ekle"; /* Settings screen cell text for add widget to the home screen */ "settings.add.widget" = "Widget'ı Ana Ekrana Ekle"; -/* Settings screen cell text for addess bar position */ -"settings.address.bar" = "Adres Çubuğu Konumu"; +/* Name of the settings subsection related to the address bar + Settings screen cell text for addess bar position */ +"settings.address.bar" = "Adres Çubuğu"; /* Settings screen cell title for toggling full URL visibility in address bar */ "settings.address.full.url" = "Tam Site Adresini Göster"; @@ -1832,26 +1872,51 @@ "settings.autolock" = "Uygulama Kilidi"; /* Section footer Autolock description */ -"settings.autolock.description" = "Touch ID, Face ID veya sistem parolası belirlenmişse uygulamayı açarken kilidini açmanız istenir."; +"settings.autolock.description" = "Touch ID, Face ID veya sistem parolası etkinleştirilmişse, uygulamayı açtığınızda kilidi açmanız istenir."; /* Settings screen cell text for Automatically Clearing Data */ "settings.clear.data" = "Verileri Otomatik Olarak Temizle"; +/* The name of Settings category in Privacy Features related to configuration of the privacy feature related to cookie pop-ups */ +"settings.cookie.pop-up-protection.protection" = "Çerez Açılır Pencere Engelleyici"; + +/* Explanation in Settings how the cookie pop up protection feature works */ +"settings.cookie.pop.up.protection.explanation" = "DuckDuckGo, sizin için mevcut en gizli ayarları seçmeyi ve bu açılır pencereleri gizlemeyi deneyecektir.\n[Daha Fazla Bilgi](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#cookie-pop-up-management)"; + /* Settings screen cell text for Cookie popups */ "settings.cookie.popups" = "Çerez Açılır Pencerelerini Yönetin"; /* Settings title for the customize section */ "settings.customize" = "Özelleştir"; -/* Settings screen cell text for setting the app as default browser */ -"settings.default.browser" = "Varsayılan Tarayıcı olarak ayarla"; +/* The name of a settings subsection related to the data clearing */ +"settings.data.clearing" = "Veri Temizleme"; -/* Settings cell for Email Protection */ -"settings.emailProtection" = "E-posta Koruması"; +/* Settings screen cell text for setting the app as default browser + The name of Settings category in Privacy Features related to configuration of the default browser */ +"settings.default.browser" = "Varsayılan Tarayıcı"; + +/* Label of a button disabling email protection */ +"settings.disable.email.protection.autofill" = "Email Protection Otomatik Doldurmayı Devre Dışı Bırak"; + +/* Settings cell to link users to other products by DuckDuckGo */ +"settings.duckduckgo.on.other.platforms" = "Diğer Platformlarda DuckDuckGo"; + +/* Explanation in Settings how the email protection feature works */ +"settings.email.protection.explanation" = "E-posta sağlayıcınızı değiştirmeden e-posta izleyicileri engelleyin ve adresinizi gizleyin.\n[Daha Fazla Bilgi](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/email-protection/what-is-duckduckgo-email-protection/)"; + +/* Alert presented to user after clicking on 'Sign out' in Email Protection Settings */ +"settings.email.protection.signing.out.alert" = "Email Protection hesabınızdan çıkış yapmak, bu tarayıcıda Duck Address otomatik doldurma özelliğini devre dışı bırakacaktır. Bu adresleri kullanmaya devam edebilir ve her zamanki gibi iletilen e-postaları alabilirsiniz."; /* Settings cell for Email Protection */ "settings.emailProtection.description" = "E-posta izleyicileri engelleyin ve adresinizi gizleyin"; +/* Label of a button enabling the email protection feature */ +"settings.enable.email.protection" = "Email Protection'ı Etkinleştir"; + +/* Settings screen cell text for enabling voice search */ +"settings.enable.voice.search" = "Sesli Arama'yı Etkinleştir"; + /* Settings cell for Feedback */ "settings.feedback" = "Geri Bildirim Paylaş"; @@ -1861,6 +1926,9 @@ /* Settings screen cell text for Fireproof Sites */ "settings.fireproof.sites" = "Korumalı Siteler"; +/* The name of the settings subsection containing general settings */ +"settings.general" = "Genel"; + /* Settings screen cell text for GPC */ "settings.gpc" = "Küresel Gizlilik Kontrolü (GPC)"; @@ -1870,12 +1938,30 @@ /* Settings screen cell for Keyboard */ "settings.keyboard" = "Klavye"; +/* Switch button label. */ +"settings.let.duckduckgo.manage.cookie.consent.popups" = "DuckDuckGo'nun çerez izni açılır pencerelerini yönetmesine izin verin"; + /* Settings screen cell text for passwords */ "settings.logins" = "Şifreler"; +/* The name of the settings section containing main settings */ +"settings.main.settings" = "Ana Ayarlar"; + +/* Label of a button managing email protection account */ +"settings.manage.account" = "Hesabı Yönet"; + /* Settings title for the 'More' section */ "settings.more" = "DuckDuckGo'dan daha fazlası"; +/* Button navigating to other settings related to search */ +"settings.more.search.settings" = "Diğer Arama Ayarları"; + +/* Subtitle of the 'More Search Settings' button */ +"settings.more.search.settings.explanation" = "Dilinizi, bölgenizi ve daha fazlasını özelleştirin"; + +/* The name of a settings category listing next steps */ +"settings.next.steps" = "Sonraki Adımlar"; + /* Product name for the subscription bundle */ "settings.ppro" = "Privacy Pro"; @@ -1885,6 +1971,60 @@ /* Settings title for the privacy section */ "settings.privacy" = "Gizlilik"; +/* The name of Settings category in Privacy Features related to configuration of the search */ +"settings.private.search" = "Gizli Arama"; + +/* Explanation in Settings how the private search feature works */ +"settings.private.search.explanation" = "DuckDuckGo Private Search, varsayılan arama motorunuz olduğunda web'de izlenmeden arama yapabilirsiniz."; + +/* Header of settings related to search */ +"settings.search.settings" = "Arama Ayarları"; + +/* Settings screen cell text for setting address bar position */ +"settings.set.your.address.bar.position" = "Adres Çubuğu Konumunuzu Ayarlayın"; + +/* Subscription activation pending description */ +"settings.subscription.activation.pending.description" = "This is taking longer than usual, please check back later."; + +/* Subscription activation pending title */ +"settings.subscription.activation.pending.title" = "Your Subscription is Being Activated"; + +/* Data Broker protection cell subtitle for privacy pro */ +"settings.subscription.DBP.subtitle" = "Remove your info from sites that sell it"; + +/* Data Broker protection cell title for privacy pro */ +"settings.subscription.DBP.title" = "Personal Information Removal"; + +/* Privacy pro description subtext */ +"settings.subscription.description" = "More seamless privacy with three new protections, including:"; + +/* I have a Subscription button text for privacy pro */ +"settings.subscription.existing.subscription" = "I Have a Subscription"; + +/* Privacy pro features list */ +"settings.subscription.features" = " • VPN\n • Personal Information Removal\n • Identity Theft Restoration"; + +/* Identity theft restoration cell subtitle for privacy pro */ +"settings.subscription.ITR.subtitle" = "If your identity is stolen, we'll help restore it"; + +/* Identity theft restoration cell title for privacy pro */ +"settings.subscription.ITR.title" = "Identity Theft Restoration"; + +/* Get Privacy Pro button text for privacy pro */ +"settings.subscription.learn.more" = "Get Privacy Pro"; + +/* Subscription Settings button text for privacy pro */ +"settings.subscription.manage" = "Subscription Settings"; + +/* Call to action title for Privacy Pro */ +"settings.subscription.subscribe" = "Subscribe to Privacy Pro"; + +/* VPN cell title for privacy pro */ +"settings.subscription.VPN.title" = "VPN"; + +/* Label of a button navigating to the Support page */ +"settings.support" = "Destek"; + /* Settings screen cell text for sync and backup */ "settings.sync" = "Senkronizasyon ve Yedekleme"; @@ -1906,6 +2046,12 @@ /* Settings screen cell for voice search */ "settings.voice.search" = "Özel Sesli Arama"; +/* The name of Settings category in Privacy Features related to configuration of the web tracking protection feature */ +"settings.web.tracking.protection" = "Web İzleme Koruması"; + +/* Explanation in Settings how the web tracking protection feature works */ +"settings.web.tracking.protection.explanation" = "DuckDuckGo, web'de gezinirken gizli izleyicileri otomatik olarak engeller.\n[Daha Fazla Bilgi](ddgQuickLink://duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/)"; + /* Report a Broken Site screen confirmation button */ "siteFeedback.buttonText" = "Rapor Gönder"; @@ -1924,6 +2070,243 @@ /* No comment provided by engineer. */ "siteFeedback.urlPlaceholder" = "Hangi web sitesi hatalı?"; +/* Subscription Activation Window Title */ +"subscription.activate" = "Activate Subscription"; + +/* Subscription Activation Info */ +"subscription.activate..header.description" = "Access your Privacy Pro subscription on this device via Apple ID or an email address."; + +/* Restore button title for Email */ +"subscription.activate.add.email.button" = "Add Email"; + +/* Apple ID option for activation */ +"subscription.activate.appleid" = "Apple ID"; + +/* Button text for restoring purchase via Apple ID */ +"subscription.activate.appleid.button" = "Restore Purchase"; + +/* Description for Apple ID activation */ +"subscription.activate.appleid.description" = "Restore your purchase to activate your subscription on this device."; + +/* Subscription Activation Info */ +"subscription.activate.description" = "Your subscription is automatically available in DuckDuckGo on any device signed in to your Apple ID."; + +/* Email option for activation */ +"subscription.activate.email" = "Email"; + +/* Restore button title for Email */ +"subscription.activate.email.button" = "Enter Email"; + +/* Description for Email activation */ +"subscription.activate.email.description" = "Use your email to activate your subscription on this device."; + +/* Activate subscription title */ +"subscription.activate.email.title" = "Aboneliği Etkinleştir"; + +/* Restore button title for Managing Email */ +"subscription.activate.manage.email.button" = "Manage"; + +/* Button title for cancelling email deletion */ +"subscription.activate.manage.email.cancel" = "Cancel"; + +/* Button title for confirming email deletion */ +"subscription.activate.manage.email.OK" = "OK"; + +/* View Title for managing your email account */ +"subscription.activate.manage.email.title" = "Manage Email"; + +/* Restore button title for AppleID */ +"subscription.activate.restore.apple" = "Restore Purchase"; + +/* Subscription Activation Title */ +"subscription.activate.title" = "Activate your subscription on this device"; + +/* Add to another device button */ +"subscription.add.device.button" = "Add to Another Device"; + +/* Subscription Add device Info */ +"subscription.add.device.description" = "Privacy Pro aboneliğinize bir e-posta adresi aracılığıyla erişin."; + +/* Add subscription to other device title */ +"subscription.add.device.header.title" = "Aboneliğinizi diğer cihazlarda kullanın"; + +/* Resend activation instructions button */ +"subscription.add.device.resend.instructions" = "Resend Instructions"; + +/* Add to another device view title */ +"subscription.add.device.title" = "Add Device"; + +/* Add email to an existing subscription */ +"subscription.add.email" = "Add an email address to activate your subscription on your other devices. We’ll only use this address to verify your subscription."; + +/* Button title for adding email to subscription */ +"subscription.add.email.button" = "Add Email"; + +/* View title for adding email to subscription */ +"subscription.add.email.title" = "Add Email"; + +/* Description for Email adding */ +"subscription.addDevice.email.description" = "Add an email address to access your subscription in DuckDuckGo on other devices. We’ll only use this address to verify your subscription."; + +/* Title for Alert messages */ +"subscription.alert.title" = "subscription.alert.title"; + +/* Subscription type */ +"subscription.annual" = "Annual Subscription"; + +/* Subscription availability message on Apple devices */ +"subscription.available.apple" = "Privacy Pro is available on any device signed in to the same Apple ID."; + +/* Text for the manage billing page */ +"subscription.billing.google.text" = "Aboneliğiniz Google Play Store üzerinden satın alınmış. Aboneliğinizi yenilemek için lütfen ilk olarak aboneliğinizi satın alırken kullandığınız Google Hesabında oturum açılmış bir cihazda Google Play Store abonelik ayarlarını açın."; + +/* Title for the manage billing page */ +"subscription.billing.google.title" = "Abonelik Planları"; + +/* Subscription Removal confirmation message */ +"subscription.cancel.message" = "Your subscription has been removed from this device."; + +/* Change plan or billing title */ +"subscription.change.plan" = "Change Plan or Billing"; + +/* Navigation Button for closing subscription view */ +"subscription.close" = "Close"; + +/* Title for Confirm messages */ +"subscription.confirm.title" = "Are you sure?"; + +/* Alert content for not found subscription */ +"subscription.email.inactive.alert.message" = "The subscription associated with this email is no longer active."; + +/* Alert title for not found subscription */ +"subscription.email.inactive.alert.title" = "Subscription Not Found"; + +/* Alert content for not found subscription */ +"subscription.expired.alert.message" = "The subscription associated with this Apple ID is no longer active."; + +/* text for expiration string */ +"subscription.expires" = "expires"; + +/* FAQ Button */ +"subscription.faq" = "Privacy Pro FAQ"; + +/* FAQ Description */ +"subscription.faq.description" = "Get answers to frequently asked questions about Privacy Pro in our help pages."; + +/* Cancel action for the existing subscription dialog */ +"subscription.found.cancel" = "Cancel"; + +/* Restore action for the existing subscription dialog */ +"subscription.found.restore" = "Restore"; + +/* Message for the existing subscription dialog */ +"subscription.found.text" = "We found a subscription associated with this Apple ID."; + +/* Title for the existing subscription dialog */ +"subscription.found.title" = "Subscription Found"; + +/* Help and support Section header */ +"subscription.help" = "Help and support"; + +/* Header for the device management section */ +"subscription.manage.devices" = "Manage Devices"; + +/* Description for Email Management options */ +"subscription.manage.email.description" = "You can use this email to activate your subscription from browser settings in the DuckDuckGo app on your other devices."; + +/* Manage Plan header */ +"subscription.manage.plan" = "Manage Plan"; + +/* Header for the subscription section */ +"subscription.manage.title" = "Subscription"; + +/* Subscription type */ +"subscription.monthly" = "Monthly Subscription"; + +/* Alert content for not found subscription */ +"subscription.notFound.alert.message" = "There is no subscription associated with this Apple ID."; + +/* Alert title for not found subscription */ +"subscription.notFound.alert.title" = "Subscription Not Found"; + +/* View plans button text */ +"subscription.notFound.view.plans" = "View Plans"; + +/* Hero Text for Personal information removal */ +"subscription.pir.hero" = "Activate Privacy Pro on desktop to set up Personal Information Removal"; + +/* Description on how to use Personal information removal in desktop. The first placeholder references a location in the Desktop application. Privacy Pro>, and the second, the menu entry. i.e. */ +"subscription.pir.heroText" = "In the DuckDuckGo browser for desktop, go to %1$@ and click %2$@ to get started."; + +/* Settings references a menu in the Desktop app, Privacy Pro, references our product name */ +"subscription.pir.heroTextLocation" = "Settings > Privacy Pro"; + +/* Menu item for enabling Personal Information Removal on Desktop */ +"subscription.pir.heroTextMenyEntry" = "I have a subscription"; + +/* Text for the 'macOS' button */ +"subscription.pir.macos" = "macOS"; + +/* Text for the 'Windows' button */ +"subscription.pir.windows" = "Windows"; + +/* Progress view title when completing the purchase */ +"subscription.progress.view.completing.purchase" = "Completing purchase..."; + +/* Progress view title when starting the purchase */ +"subscription.progress.view.purchasing.subscription" = "Purchase in progress..."; + +/* Progress view title when restoring past subscription purchase */ +"subscription.progress.view.restoring.subscription" = "Restoring subscription..."; + +/* Remove from this device button */ +"subscription.remove.from.device.button" = "Remove From This Device"; + +/* Remove from device confirmation dialog text */ +"subscription.remove.from.device.text" = "You will no longer be able to access your Privacy Pro subscription on this device. This will not cancel your subscription, and it will remain active on your other devices."; + +/* Remove from device confirmation dialog title */ +"subscription.remove.from.device.title" = "Remove from this device?"; + +/* Remove subscription button text */ +"subscription.remove.subscription" = "Remove Subscription"; + +/* Remove subscription cancel button text */ +"subscription.remove.subscription.cancel" = "Cancel"; + +/* text for renewal string */ +"subscription.renews" = "renews"; + +/* Button text for general error message */ +"subscription.restore.backend.error.button" = "Ayarlara Geri Dön"; + +/* Alert for general error message */ +"subscription.restore.backend.error.message" = "Bağlanmakta sorun yaşıyoruz. Lütfen daha sonra tekrar deneyin."; + +/* Alert for general error title */ +"subscription.restore.backend.error.title" = "Bir hata oluştu"; + +/* Alert for general error message */ +"subscription.restore.general.error.message" = "The App Store was unable to process your purchase. Please try again later."; + +/* Alert for general error title */ +"subscription.restore.general.error.title" = "Something Went Wrong"; + +/* Alert button text for restored purchase alert */ +"subscription.restore.success.alert.button" = "OK"; + +/* Alert message for restored purchase */ +"subscription.restore.success.alert.message" = "Your purchases have been restored."; + +/* Alert title for restored purchase */ +"subscription.restore.success.alert.title" = "You’re all set."; + +/* Subscription Expiration Data. This reads as 'Your subscription (renews or expires) on (date)' */ +"subscription.subscription.active.caption" = "Your subscription %1$@ on %2$@"; + +/* Navigation bar Title for subscriptions */ +"subscription.title" = "Privacy Pro"; + /* Message confirming that recovery code was copied to clipboard */ "sync.code.copied" = "Kurtarma kodu panoya kopyalandı"; @@ -1954,6 +2337,9 @@ /* Title of the dialog to confirm turning off Sync */ "sync.turn.off.confirm.title" = "Senkronizasyon kapatılsın mı?"; +/* Reason for auth when setting up Sync */ +"sync.user.auth.reason" = "Unlock device to set up Sync & Backup"; + /* Data syncing unavailable warning message */ "sync.warning.data.syncing.disabled" = "Üzgünüz, ancak Senkronizasyon ve Yedekleme şu anda kullanılamıyor. Lütfen daha sonra tekrar deneyin."; @@ -2005,6 +2391,9 @@ /* Confirmation of an action - populated with a domain name */ "toast.protection.disabled" = "Gizlilik Koruması %@ için devre dışı"; +/* Confirmation of an action - populated with a domain name */ +"toast.protection.disabled.and.toggle.report.sent" = "Gizlilik Korumaları %@ için devre dışı bırakıldı ve rapor gönderildi."; + /* Confirmation of an action - populated with a domain name */ "toast.protection.enabled" = "Gizlilik Koruması %@ için etkinleştirildi"; @@ -2036,7 +2425,100 @@ "voiceSearch.cancel" = "İptal"; /* 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."; +"voiceSearch.footer.note" = "Adres çubuğuna Gizli Sesli Arama seçeneğini ekleyin. Ses kaydı depolanmaz veya DuckDuckGo dâhil olmak üzere kimseyle paylaşılmaz."; + +/* Voice-search footer note with on-device privacy warning */ +"voiceSearch.footer.note.old" = "Ses cihazda işlenir. Saklanmaz ve DuckDuckGo da dâhil olmak üzere kimseyle paylaşılmaz."; + +/* Cancel action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.cancel" = "Dismiss"; + +/* Primary action for the alert when the subscription expires */ +"vpn.access-revoked.alert.action.subscribe" = "Subscribe"; + +/* Alert message for the alert when the Privacy Pro subscription expiress */ +"vpn.access-revoked.alert.message" = "Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + +/* Alert title for the alert when the Privacy Pro subscription expires */ +"vpn.access-revoked.alert.title" = "VPN disconnected due to expired subscription"; + +/* Alert action for the alert when the early access period is over */ +"vpn.early-access.over.alert.action" = "Tamam"; + +/* Alert message for the alert when the early access period is over */ +"vpn.early-access.over.alert.message" = "Deneme kullanıcısı olduğunuz için teşekkür ederiz! VPN'i kullanmaya devam etmek için DuckDuckGo Privacy Pro'ya abone olun ve THANKYOU promosyon kodu ile %40 indirim kazanın\n\nTeklif, sınırlı bir süre için yalnızca duckduckgo.com/app adresinden yükleme yapan ABD'li deneme kullanıcıları tarafından DuckDuckGo tarayıcısının masaüstü sürümünde kullanılabilir"; + +/* Alert title for the alert when the early access period is over */ +"vpn.early-access.over.alert.title" = "DuckDuckGo VPN'e erken erişim sona erdi"; + +/* Title for the Cancel button of the VPN feedback form */ +"vpn.feedback-form.button.cancel" = "Cancel"; + +/* Title for the Done button of the VPN feedback form */ +"vpn.feedback-form.button.done" = "Done"; + +/* Title for the Submit button of the VPN feedback form */ +"vpn.feedback-form.button.submit" = "Submit"; + +/* Title for the Submitting state of the VPN feedback form */ +"vpn.feedback-form.button.submitting" = "Submitting…"; + +/* Title for the browser crash/freeze category of the VPN feedback form */ +"vpn.feedback-form.category.browser-crash-or-freeze" = "VPN causes browser to crash or freeze"; + +/* Title for the 'VPN fails to connect' category of the VPN feedback form */ +"vpn.feedback-form.category.fails-to-connect" = "VPN fails to connect"; + +/* Title for the 'VPN feature request' category of the VPN feedback form */ +"vpn.feedback-form.category.feature-request" = "VPN feature request"; + +/* Title for the category 'VPN causes issues with other apps or websites' category of the VPN feedback form */ +"vpn.feedback-form.category.issues-with-apps" = "VPN causes issues with other apps or websites"; + +/* Title for the local device connectivity category of the VPN feedback form */ +"vpn.feedback-form.category.local-device-connectivity" = "VPN won't let me connect to local device"; + +/* Title for the 'other VPN feedback' category of the VPN feedback form */ +"vpn.feedback-form.category.other" = "Other VPN feedback"; + +/* Title for the category selection state of the VPN feedback form */ +"vpn.feedback-form.category.select-category" = "Select a category"; + +/* Title for the 'VPN is too slow' category of the VPN feedback form */ +"vpn.feedback-form.category.too-slow" = "VPN connection is too slow"; + +/* Title for the 'unable to install' category of the VPN feedback form */ +"vpn.feedback-form.category.unable-to-install" = "Unable to install VPN"; + +/* Title for the feedback sent view description of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.description" = "Your feedback will help us improve the\nDuckDuckGo VPN."; + +/* Title for the feedback sending error text of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.error" = "We couldn't send your feedback right now, please try again."; + +/* Title for the feedback sent view title of the VPN feedback form */ +"vpn.feedback-form.sending-confirmation.title" = "Thank you!"; + +/* Toast message when the VPN feedback form is submitted successfully */ +"vpn.feedback-form.submitted.message" = "Thank You! Feedback submitted."; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-1" = "Please describe what's happening, what you expected to happen, and the steps that led to the issue:"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-2" = "In addition to the details entered into this form, your app issue report will contain:"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-3" = "• Whether specific DuckDuckGo features are enabled"; + +/* Bullet text for the body of the VPN feedback form */ +"vpn.feedback-form.text-4" = "• Aggregate DuckDuckGo app diagnostics"; + +/* Text for the body of the VPN feedback form */ +"vpn.feedback-form.text-5" = "By tapping \"Submit\" I agree that DuckDuckGo may use the information in this report for purposes of improving the app's features."; + +/* Title for each screen of the VPN feedback form */ +"vpn.feedback-form.title" = "Help Improve the DuckDuckGo VPN"; /* Title for the button to enable push notifications in system settings */ "waitlist.allow-notifications" = "Bildirimlere İzin Ver"; @@ -2116,39 +2598,12 @@ /* No comment provided by engineer. */ "Welcome to the Duck Side!" = "Duck Side'a hoş geldiniz!"; -/* 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"; diff --git a/DuckDuckGoTests/PixelExperimentTests.swift b/DuckDuckGoTests/PixelExperimentTests.swift new file mode 100644 index 0000000000..9340632240 --- /dev/null +++ b/DuckDuckGoTests/PixelExperimentTests.swift @@ -0,0 +1,86 @@ +// +// PixelExperimentTests.swift +// UnitTests +// +// Copyright © 2024 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import XCTest +@testable import Core + +class PixelExperimentTests: XCTestCase { + + override func setUp() { + super.setUp() + + PixelExperiment.cleanup() + PixelExperiment.customLogic = nil + PixelExperiment.install() + } + + override func tearDown() { + PixelExperiment.cleanup() + PixelExperiment.customLogic = nil + super.tearDown() + } + + func testParametersWhenNoVariantAllocated() { + PixelExperiment.customLogic = PixelExperimentLogic(fire: { _ in }, customCohort: .noVariant) + let parameters = PixelExperiment.parameters + + XCTAssertTrue(parameters.isEmpty, "Expected parameters to be empty when no variant is allocated.") + } + + func testExperimentInstallation() { + PixelExperiment.cleanup() + PixelExperiment.install() + + XCTAssertTrue(PixelExperiment.isExperimentInstalled, "The experiment should be marked as installed after calling install().") + } + + func testCleanupResetsState() { + PixelExperiment.install() + PixelExperiment.cleanup() + + XCTAssertFalse(PixelExperiment.isExperimentInstalled, "The experiment should not be marked as installed after cleanup.") + XCTAssertNil(PixelExperiment.cohort, "There should be no cohort allocated after cleanup.") + } + + func testAllocatedCohortMatchesCurrentCohorts() { + PixelExperiment.customLogic = PixelExperimentLogic(fire: { _ in }, customCohort: .control) + + let matches = !PixelExperiment.allocatedCohortDoesNotMatchCurrentCohorts + + XCTAssertTrue(matches, "The allocated cohort should match") + } + + func testPixelFiredOnEnrolment() { + var fireCalled = false + let logic = PixelExperimentLogic(fire: { pixel in + XCTAssertEqual(pixel, Pixel.Event.pixelExperimentEnrollment, "Expected pixelExperimentEnrollment pixel to be fired upon enrollment") + fireCalled = true + }) + + logic.install() + let cohort = logic.cohort + + XCTAssertNotNil(logic.cohort, "Expected a cohort to be allocated") + + if cohort != .noVariant { + XCTAssert(fireCalled, "Pixel have to be fired in case a variant is assigned") + } + } + +} diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/bg.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/bg.lproj/Localizable.strings index bd324af65a..5b2679802a 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/bg.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/bg.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Обратно"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Някои отметки не се синхронизират поради прекалено дълго съдържание в определени полета."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Управление на отметки"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Синхронизиране и архивиране на това устройство"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Някои данни за вход не се синхронизират поради прекалено дълго съдържание в определени полета."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Управление на данните за вход"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Не можете да сканирате?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Влезте в Настройки › Синхронизиране и архивиране в браузъра DuckDuckGo на друго устройство и изберете „Синхронизиране с друго устройство“."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Влезте в %@ в браузъра DuckDuckGo на друго устройство и изберете „Синхронизиране с друго устройство“."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Ръчно въвеждане на код"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "От мобилно към мобилно устройство?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Споделяне на текстов код?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "Сканиране на QR код"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Синхронизирани устройства"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Синхронизиране с друго устройство"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Това устройство"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/bg.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/bg.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..d107721caf --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/bg.lproj/Localizable.stringsdict @@ -0,0 +1,42 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Вашите отметки за %2$@ и 1 друг сайт не могат да се синхронизират, защото някои от техните полета надвишават ограничението за знаци. + other + Вашите отметки за %2$@ и %1$d други сайтове не могат да се синхронизират, защото някои от полетата им надвишават ограничението за символи. + zero + Вашата отметка за %2$@ не може да се синхронизира, защото едно от полетата надвишава ограничението за символи. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Вашите пароли за %2$@ и 1 друг сайт не могат да се синхронизират, защото някои от техните полета надвишават ограничението за знаци. + other + Вашите пароли за %2$@ и %1$d други сайтове не могат да се синхронизират, защото някои от техните полета надвишават ограничението за знаци. + zero + Вашата парола за %2$@ не може да се синхронизира, защото едно от полетата надвишава ограничението за знаци. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/cs.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/cs.lproj/Localizable.strings index 73cb877ae6..bbf99197c4 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/cs.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/cs.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Zpět"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Některé záložky se nesynchronizují kvůli příliš dlouhému obsahu v určitých polích."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Spravovat záložky"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Synchronizace a záloha tohoto zařízení"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Některá přihlášení se nesynchronizují kvůli příliš dlouhému obsahu v určitých polích."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Spravovat přihlašovací údaje"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Nemůžeš skenovat?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Přejdi na jiném zařízení v prohlížeči DuckDuckGo do Nastavení › Synchronizace a zálohování a vyber možnost Synchronizace s jiným zařízením."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Přejdi na jiném zařízení v prohlížeči DuckDuckGo do %@ a vyber možnost Synchronizace s jiným zařízením."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Ruční zadání kódu"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "Z mobilu na mobil?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Sdílet textový kód?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "Skenování QR kódu"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Synchronizovaná zařízení"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Synchronizace s jiným zařízením"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Tohle zařízení"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/cs.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/cs.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..0c4b14a7d2 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/cs.lproj/Localizable.stringsdict @@ -0,0 +1,50 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %# @sites @ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + few + Your bookmarks for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + many + Your bookmarks for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + one + Tvoje záložky pro %2$@ a jeden další web nelze synchronizovat, protože některá jejich pole překračují maximální počet znaků. + other + Vaše záložky pro %2$@ a další weby (celkem: %1$d) nelze synchronizovat, protože některá z jejich polí překračují povolený počet znaků. + zero + Vaši záložku pro %2$@ nelze synchronizovat, protože jedno z jejích polí překračuje maximální počet znaků. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + few + Your passwords for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + many + Your passwords for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + one + Vaše hesla pro %2$@ a 1 další web nelze synchronizovat, protože některá jejich pole překračují maximální počet znaků. + other + Vaše hesla pro %2$@ a další weby (celkem: %1$d) nelze synchronizovat, protože některá jejich pole přesahují maximální počet znaků. + zero + Vaše heslo pro %2$@ nelze synchronizovat, protože jedno z jeho polí překračuje maximální počet znaků. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/da.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/da.lproj/Localizable.strings index 82b5752c17..d83f76968a 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/da.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/da.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Tilbage"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Nogle bogmærker synkroniseres ikke på grund af for langt indhold i visse felter."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Administrer bogmærker"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Synkroniser og sikkerhedskopier denne enhed"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Nogle logins synkroniseres ikke på grund af for langt indhold i visse felter."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Administrer logins"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Kan du ikke scanne?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Gå til Indstillinger › Synkronisering og sikkerhedskopiering i DuckDuckGo-browseren på en anden enhed, og vælg \"Synkroniser med en anden enhed.\""; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Gå til %@ i DuckDuckGo-browseren på en anden enhed, og vælg \"Synkroniser med en anden enhed\"."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Indtast kode manuelt"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "Mobil-til-mobil?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Del tekstkode?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "Scan QR-kode"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Synkroniserede enheder"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Synkroniser med en anden enhed"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Denne enhed"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/da.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/da.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..5625bd0457 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/da.lproj/Localizable.stringsdict @@ -0,0 +1,42 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Dine bogmærker for %2$@ og 1 anden side kan ikke synkroniseres, fordi nogle af deres felter overskrider tegngrænsen. + other + Dine bogmærker for %2$@ og %1$d andre sider kan ikke synkroniseres, fordi nogle af deres felter overskrider tegngrænsen. + zero + Dit bogmærke for %2$@ kan ikke synkroniseres, fordi et af dets felter overskrider tegngrænsen. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Dine adgangskoder til %2$@ og 1 anden side kan ikke synkroniseres, fordi nogle af deres felter overskrider tegngrænsen. + other + Dine adgangskoder til %2$@ og %1$d andre sider kan ikke synkroniseres, fordi nogle af deres felter overskrider tegngrænsen. + zero + Din adgangskode til %2$@ kan ikke synkroniseres, fordi et af felterne overskrider tegngrænsen. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/de.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/de.lproj/Localizable.strings index 82540a6071..4025ee9492 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/de.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/de.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Zurück"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Einige Lesezeichen werden nicht synchronisiert, weil der Inhalt in bestimmten Feldern zu lang ist."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Lesezeichen verwalten"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Dieses Gerät synchronisieren und sichern"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Einige Anmeldungen werden nicht synchronisiert, weil der Inhalt bestimmter Felder zu lang ist."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Anmeldedaten verwalten"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Du kannst nicht scannen?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Gehe im DuckDuckGo-Browser auf einem anderen Gerät zu Einstellungen › Synchronisieren und sichern und wähle „Mit anderem Gerät synchronisieren“."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Gehe im DuckDuckGo-Browser auf einem anderen Gerät zu %@ und wähle „Mit einem anderen Gerät synchronisieren“."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Code manuell eingeben"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "Von Handy zu Handy?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Textcode teilen?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "QR-Code scannen"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Synchronisierte Geräte"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Mit anderem Gerät synchronisieren"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Dieses Gerät"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/de.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/de.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..1042229154 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/de.lproj/Localizable.stringsdict @@ -0,0 +1,42 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Deine Lesezeichen für %2$@ und 1 andere Website können nicht synchronisiert werden, weil einige ihrer Felder das Zeichenlimit überschreiten. + other + Deine Lesezeichen für %2$@ und %1$d andere Websites können nicht synchronisiert werden, weil einige ihrer Felder das Zeichenlimit überschreiten. + zero + Dein Lesezeichen für %2$@ kann nicht synchronisiert werden, weil eines seiner Felder das Zeichenlimit überschreitet. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Deine Passwörter für %2$@ und 1 andere Website können nicht synchronisiert werden, weil einige ihrer Felder das Zeichenlimit überschreiten. + other + Deine Passwörter für %2$@ und %1$d andere Websites können nicht synchronisiert werden, weil einige ihrer Felder das Zeichenlimit überschreiten. + zero + Dein Passwort für %2$@ kann nicht synchronisiert werden, weil eines der Felder das Zeichenlimit überschreitet. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/el.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/el.lproj/Localizable.strings index aebfbd4eca..69eec4f9e9 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/el.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/el.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Πίσω"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Ορισμένοι σελιδοδείκτες δεν συγχρονίζονται λόγω υπερβολικά μεγάλου περιεχομένου σε ορισμένα πεδία."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Διαχείριση σελιδοδεικτών"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Συγχρονισμός και δημιουργία αντιγράφων ασφάλειας αυτής της συσκευής"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Ορισμένες συνδέσεις δεν συγχρονίζονται λόγω υπερβολικά μεγάλου περιεχομένου σε ορισμένα πεδία."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Διαχείριση συνδέσεων"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Δεν μπορείτε να πραγματοποιήσετε σάρωση;"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Μεταβείτε στην ενότητα Ρυθμίσεις › Συγχρονισμός και δημιουργία αντιγράφων ασφάλειας στο πρόγραμμα περιήγησης DuckDuckGo σε άλλη συσκευή και επιλέξτε «Συγχρονισμός με άλλη συσκευή»."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Μεταβείτε στη %@ στο πρόγραμμα περιήγησης DuckDuckGo σε μια άλλη συσκευή και επιλέξτε «Συγχρονισμός με άλλη συσκευή»."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Μη αυτόματη εισαγωγή κωδικού"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "Από κινητό σε κινητό;"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Κοινοποίηση κωδικού κειμένου;"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "Σάρωση κώδικα QR"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Συγχρονισμένες συσκευές"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Συγχρονισμός με άλλη συσκευή"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Αυτή η συσκευή"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/el.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/el.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..5c796838cf --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/el.lproj/Localizable.stringsdict @@ -0,0 +1,42 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Οι σελιδοδείκτες σας για τον %2$@ και 1 ακόμα ιστότοπο δεν μπορούν να συγχρονιστούν επειδή ορισμένα από τα πεδία τους υπερβαίνουν το όριο χαρακτήρων. + other + Οι σελιδοδείκτες σας για τον %2$@ και %1$d ακόμα ιστότοπους δεν μπορούν να συγχρονιστούν επειδή ορισμένα από τα πεδία τους υπερβαίνουν το όριο χαρακτήρων. + zero + Ο σελιδοδείκτης σας για τον %2$@ δεν μπορεί να συγχρονιστεί επειδή ένα από τα πεδία του υπερβαίνει το όριο χαρακτήρων. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Οι κωδικοί πρόσβασής σας για τον %2$@ και 1 ακόμα ιστότοπο δεν μπορούν να συγχρονιστούν επειδή ορισμένα από τα πεδία τους υπερβαίνουν το όριο χαρακτήρων. + other + Οι κωδικοί πρόσβασής σας για τον %2$@ και %1$d ακόμα ιστότοπους δεν μπορούν να συγχρονιστούν επειδή ορισμένα από τα πεδία τους υπερβαίνουν το όριο χαρακτήρων. + zero + Ο κωδικός πρόσβασής σας για τον %2$@ δεν μπορεί να συγχρονιστεί επειδή ένα από τα πεδία του υπερβαίνει το όριο χαρακτήρων. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/es.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/es.lproj/Localizable.strings index e44afe0149..05515bf9bb 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/es.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/es.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Volver"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Algunos marcadores no se sincronizan debido a un contenido excesivamente largo en determinados campos."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Gestionar marcadores"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Sincronizar y hacer una copia de seguridad de este dispositivo"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Algunos inicios de sesión no se sincronizan debido a un contenido excesivamente largo en determinados campos."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Gestionar inicios de sesión"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "¿No puedes escanear?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Ve a Ajustes › Sincronización y copia de seguridad en el navegador DuckDuckGo en otro dispositivo y selecciona «Sincronizar con otro dispositivo»."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Ve a %@ en el navegador DuckDuckGo en otro dispositivo y selecciona «Sincronizar con otro dispositivo»."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Introducir código manualmente"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "¿De móvil a móvil?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "¿Compartir código de texto?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "Escanear código QR"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Dispositivos sincronizados"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Sincronizar con otro dispositivo"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Este dispositivo"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/es.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/es.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..40398b8f02 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/es.lproj/Localizable.stringsdict @@ -0,0 +1,42 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Los marcadores de %2$@ y otro sitio más no se pueden sincronizar porque algunos de sus campos superan el límite de caracteres. + other + Los marcadores de %2$@ y %1$d otros sitios más no se pueden sincronizar porque algunos de sus campos superan el límite de caracteres. + zero + El marcador de %2$@ no se puede sincronizar porque uno de sus campos supera el límite de caracteres. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Las contraseñas de %2$@ y otro sitio más no se pueden sincronizar porque algunos de sus campos superan el límite de caracteres. + other + Las contraseñas de %2$@ y %1$d otros sitios más no se pueden sincronizar porque algunos de sus campos superan el límite de caracteres. + zero + La contraseña de %2$@ no se puede sincronizar porque uno de sus campos supera el límite de caracteres. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/et.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/et.lproj/Localizable.strings index 38f610d4f6..172aa8cf3c 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/et.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/et.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Tagasi"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Mõned järjehoidjad ei sünkroonita teatud väljade liiga pika sisu tõttu."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Halda järjehoidjaid"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Selle seadme sünkroonimine ja varundamine"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Mõned sisselogimisandmed ei sünkroonita teatud väljade liiga pika sisu tõttu."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Halda sisselogimisandmeid"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Kas sa ei saa skannida?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Ava teises seadmes DuckDuckGo brauseris Seaded > Sünkroonimine ja varundus ning vali käsk „Sünkrooni teise seadmega“."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Ava teises seadmes DuckDuckGo brauseris %@. Vali käsk Sünkrooni teise seadmega."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Sisesta kood käsitsi"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "Mobiililt mobiilile?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Jaga tekstikoodi?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "QR-koodi skannimine"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Sünkroonitud seadmed"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Sünkrooni teise seadmega"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "See seade"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/et.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/et.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..bdc4d6e146 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/et.lproj/Localizable.stringsdict @@ -0,0 +1,42 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %# @sites @ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Your bookmarks for %2$@ and 1 other site can't sync because some of their fields exceed the character limit. + other + Your bookmarks for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + zero + Your bookmark for %2$@ can't sync because one of its fields exceeds the character limit. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %# @sites @ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Your passwords for %2$@ and 1 other site can't sync because some of their fields exceed the character limit. + other + Your passwords for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + zero + Your password for %2$@ can't sync because one of its fields exceeds the character limit. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/fi.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/fi.lproj/Localizable.strings index 49bed1e7f8..4c67c43f8e 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/fi.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/fi.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Takaisin"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Joitakin kirjanmerkkejä ei synkronoida, koska tiettyjen kenttien sisältö on liian pitkä."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Hallitse kirjanmerkkejä"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Synkronoi ja varmuuskopioi tämä laite"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Joitakin kirjautumisia ei synkronoida, koska tiettyjen kenttien sisältö on liian pitkä."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Hallitse kirjautumisia"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Etkö voi skannata?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Siirry kohtaan Asetukset › Synkronointi ja varmuuskopiointi DuckDuckGo-selaimessa muulla laitteella ja valitse ”Synkronoi toisen laitteen kanssa.”"; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Siirry kohtaan %@ DuckDuckGo-selaimessa muulla laitteella ja valitse ”Synkronoi toisen laitteen kanssa.”"; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Syötä koodi manuaalisesti"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "Mobile-to-Mobile?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Jaa tekstikoodi?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "Skannaa QR-koodi"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Synkronoidut laitteet"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Synkronoi toisen laitteen kanssa"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Tämä laite"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/fi.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/fi.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..d0346eccb9 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/fi.lproj/Localizable.stringsdict @@ -0,0 +1,42 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Sivuston %2$@ ja 1 muun kirjanmerkkejä ei voi synkronoida, koska jotkin niiden kentät ylittävät merkkirajoituksen. + other + Sivuston %2$@ ja 1 muun kirjanmerkkejä ei voi synkronoida, koska jotkin niiden kentät ylittävät merkkirajoituksen. + zero + Sivuston %2$@ kirjanmerkkiä ei voi synkronoida, koska yksi sen kenttä ylittää merkkirajoituksen. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Sivuston %2$@ ja 1 muun salasanoja ei voi synkronoida, koska jotkin niiden kentät ylittävät merkkirajoituksen. + other + Sivuston %2$@ ja %1$d muun salasanoja ei voi synkronoida, koska jotkin niiden kentät ylittävät merkkirajoituksen. + zero + Sivuston %2$@ salasanaa ei voi synkronoida, koska yksi sen kenttä ylittää merkkirajoituksen. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/fr.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/fr.lproj/Localizable.strings index 8ef0018e51..4d45eeabe4 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/fr.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/fr.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Retour"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Certains favoris ne sont pas synchronisés à cause de la longueur excessive du contenu de certains champs."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Gérer les signets"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Synchroniser et sauvegarder cet appareil"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Certaines connexions ne sont pas synchronisées à cause de la longueur excessive du contenu de certains champs."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Gérer les identifiants"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Vous ne parvenez pas à scanner ?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Accédez à Réglages › Synchronisation et sauvegarde dans le navigateur DuckDuckGo d'un autre appareil, puis sélectionnez « Synchroniser avec un autre appareil »."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Accédez à %@ dans le navigateur DuckDuckGo d'un autre appareil, puis sélectionnez « Synchroniser avec un autre appareil »."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Saisir manuellement le code"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "De mobile à mobile ?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Partager le code texte ?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "Scanner le code QR"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Appareils synchronisés"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Synchroniser avec un autre appareil"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Cet appareil"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/fr.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/fr.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..9f32db8076 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/fr.lproj/Localizable.stringsdict @@ -0,0 +1,42 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %# @sites @ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Vos signets pour %2$@ et 1 autre site ne peuvent pas être synchronisés car certains de leurs champs dépassent la limite de caractères. + other + Vos signets pour %2$@ et %1$d autres sites ne peuvent pas être synchronisés car certains de leurs champs dépassent la limite de caractères. + zero + Votre signet pour %2$@ ne peut pas être synchronisé car l’un de ses champs dépasse la limite de caractères. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Vos mots de passe pour %2$@ et 1 autre site ne peuvent pas être synchronisés car certains de leurs champs dépassent la limite de caractères. + other + Vos mots de passe pour %2$@ et %1$d autres sites ne peuvent pas être synchronisés car certains de leurs champs dépassent la limite de caractères. + zero + Votre mot de passe pour %2$@ ne peut pas être synchronisé car l’un de ses champs dépasse la limite de caractères. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/hr.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/hr.lproj/Localizable.strings index f84cfd7dec..2267995130 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/hr.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/hr.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Natrag"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Neke se oznake ne sinkroniziraju zbog pretjerano dugog sadržaja u određenim poljima."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Upravljanje knjižnim oznakama"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Sinkroniziraj i izradi sigurnosnu kopiju ovog uređaja"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Neke se prijave ne sinkroniziraju zbog pretjerano dugog sadržaja u određenim poljima."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Upravljanje prijavama"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Ne možeš skenirati?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Idi na Postavke › Sinkronizacija i sigurnosno kopiranje u pregledniku DuckDuckGo na drugom uređaju i odaberite \"Sinkroniziraj s drugim uređajem\"."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Idi na %@ u pregledniku DuckDuckGo na drugom uređaju i odaberite ”Sinkroniziraj s drugim uređajem”."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Ručno unesi šifru"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "S mobilnog uređaja na mobilni uređaj?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Želiš li dijeliti tekstnu šifru?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "Skeniraj QR kôd"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Sinkronizirani uređaji"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Sinkronizacija s drugim uređajem"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Ovaj uređaj"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/hr.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/hr.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..4b403a5c73 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/hr.lproj/Localizable.stringsdict @@ -0,0 +1,46 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + few + Your bookmarks for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + one + Tvoje oznake za %2$@ i 1 drugo web-mjesto ne mogu se sinkronizirati jer neka njihova polja premašuju ograničenje znakova. + other + Tvoje oznake za %2$@ i %1$d drugih web-mjesta ne mogu se sinkronizirati jer neka njihova polja premašuju ograničenje znakova. + zero + Tvoja oznaka za %2$@ ne može se sinkronizirati jer jedno od njezinih polja premašuje ograničenje znakova. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + few + Your passwords for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + one + Tvoje lozinke za %2$@ i 1 drugo web-mjesto ne mogu se sinkronizirati jer neka njihova polja premašuju ograničenje znakova. + other + Tvoje lozinke za %2$@ i %1$d drugih web-mjesta ne mogu se sinkronizirati jer neka njihova polja premašuju ograničenje znakova. + zero + Vaša lozinka za %2$@ ne može se sinkronizirati jer jedno od njezinih polja premašuje ograničenje znakova. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/hu.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/hu.lproj/Localizable.strings index b3eb15be6c..ec6bfb96a6 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/hu.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/hu.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Vissza"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Egyes könyvjelzőket nem szinkronizál a rendszer bizonyos mezők túl hosszú tartalma miatt."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Könyvjelzők kezelése"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Az eszköz szinkronizálása és biztonsági mentése"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Egyes bejelentkezési adatokat nem szinkronizál a rendszer bizonyos mezők túl hosszú tartalma miatt."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Bejelentkezések kezelése"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Nem lehet beolvasni?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Lépj a másik eszköz DuckDuckGo böngészőjében található Beállítások > Szinkronizálás és biztonsági mentés lehetőségre, és válaszd ki a „Szinkronizálás másik eszközzel” elemet."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Lépj a másik eszköz DuckDuckGo böngészőjében található %@ lehetőségre, és válaszd ki a „Szinkronizálás és biztonsági mentés” elemet."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Kód manuális megadása"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "Mobilról mobilra?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Szöveges kód megosztása?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "QR-kód beolvasása"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Szinkronizált eszközök"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Szinkronizálás másik eszközzel"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Ez az eszköz"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/hu.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/hu.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..c94f45d561 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/hu.lproj/Localizable.stringsdict @@ -0,0 +1,42 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + A(z) %2$@ és 1 másik webhely könyvjelzői nem szinkronizálhatók, mert egyes mezőik meghaladják a karakterkorlátot. + other + A(z) %2$@ és %1$d másik webhely könyvjelzői nem szinkronizálhatók, mert egyes mezőik meghaladják a karakterkorlátot. + zero + A(z) %2$@ könyvjelzője nem szinkronizálható, mert az egyik mezője meghaladja a karakterkorlátot. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + A(z) %2$@ és 1 másik webhely jelszavai nem szinkronizálhatók, mert egyes mezőik meghaladják a karakterkorlátot. + other + A(z) %2$@ és %1$d másik webhely jelszavai nem szinkronizálhatók, mert egyes mezőik meghaladják a karakterkorlátot. + zero + A(z) %2$@ jelszava nem szinkronizálható, mert az egyik mezője meghaladja a karakterkorlátot. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/it.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/it.lproj/Localizable.strings index 2b1353a56d..4524f77e30 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/it.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/it.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Indietro"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Alcuni segnalibri non vengono sincronizzati perché il contenuto di alcuni campi è eccessivamente lungo."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Gestisci segnalibri"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Sincronizza ed esegui il backup di questo dispositivo"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Alcuni dati di accesso non vengono sincronizzati perché il contenuto di alcuni campi è eccessivamente lungo."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Gestire gli accessi"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Non riesci a eseguire la scansione?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Vai su Impostazioni › Sincronizzazione e backup nel browser DuckDuckGo presente su un altro dispositivo e seleziona \"Sincronizza con un altro dispositivo\"."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Apri %@ nel browser DuckDuckGo di un altro dispositivo e seleziona \"Sincronizza con un altro dispositivo\"."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Inserisci manualmente il codice"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "Da mobile a mobile?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Condividere il codice SMS?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "Scansiona il codice QR"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Dispositivi sincronizzati"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Sincronizza con un altro dispositivo"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Questo dispositivo"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/it.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/it.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..2075155bd9 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/it.lproj/Localizable.stringsdict @@ -0,0 +1,42 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + I tuoi segnalibri per %2$@ e 1 altro sito non possono essere sincronizzati perché alcuni dei loro campi superano il limite di caratteri. + other + I segnalibri per %2$@ e altri %1$d siti non possono essere sincronizzati perché alcuni dei loro campi superano il limite di caratteri. + zero + Il tuo segnalibro per %2$@ non può essere sincronizzato perché uno dei suoi campi supera il limite di caratteri. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Le tue password per %2$@ e 1 altro sito non possono essere sincronizzate perché alcuni dei loro campi superano il limite di caratteri. + other + Le password di %2$@ e altri %1$d siti non possono essere sincronizzate perché alcuni dei loro campi superano il limite di caratteri. + zero + Impossibile sincronizzare la tua password per %2$@ perché uno dei suoi campi supera il limite di caratteri. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/lt.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/lt.lproj/Localizable.strings index 3f8d4e06d0..f72e5076fa 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/lt.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/lt.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Atgal"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Kai kurios žymės nėra sinchronizuojamos dėl pernelyg ilgo turinio tam tikruose laukuose."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Tvarkyti žymes"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Sinchronizuokite ir sukurkite atsarginę šio įrenginio kopiją"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Kai kurie prisijungimai nesinchronizuojami dėl pernelyg ilgo turinio tam tikruose laukuose."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Tvarkyti prisijungimus"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Negalite nuskaityti?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Eikite į Nustatymai › Sinchronizavimas ir atsarginės kopijos kūrimas „DuckDuckGo“ naršyklėje kitame įrenginyje ir pasirinkite „Sinchronizuoti su kitu įrenginiu“."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Eikite į %@ „DuckDuckGo“ naršyklėje kitame įrenginyje ir pasirinkite „Sinchronizuoti su kitu įrenginiu“."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Įveskite kodą ranka"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "Iš mobiliojo įrenginio į mobilųjį įrenginį?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Bendrinti teksto kodą?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "Nuskaityti QR kodą"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Sinchronizuoti įrenginiai"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Sinchronizuoti su kitu įrenginiu"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Šis įrenginys"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/lt.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/lt.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..6df5331c11 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/lt.lproj/Localizable.stringsdict @@ -0,0 +1,50 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %# @sites @ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + few + Your bookmarks for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + many + Your bookmarks for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + one + Jūsų %2$@ ir 1 kitos svetainės žymės negali būti sinchronizuojamos, nes kai kurie jų laukai viršija simbolių limitą. + other + Jūsų %2$@ ir %1$d kitų svetainių žymės negali būti sinchronizuojamos, nes kai kurie jų laukai viršija simbolių limitą. + zero + Jūsų %2$@ žymė negali būti sinchronizuojama, nes vienas iš jos laukų viršija simbolių limitą. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + few + Your passwords for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + many + Your passwords for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + one + Jūsų %2$@ ir 1 kitos svetainės slaptažodžių negalima sinchronizuoti, nes kai kurie jų laukai viršija simbolių limitą. + other + Jūsų slaptažodžiai, skirti %2$@ ir %1$d kitoms svetainėms, negali būti sinchronizuojami, nes kai kurie jų laukai viršija simbolių limitą. + zero + Jūsų %2$@ slaptažodžio negalima sinchronizuoti, nes vienas iš jo laukų viršija simbolių limitą. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/lv.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/lv.lproj/Localizable.strings index 65a5800526..1e7a2c0725 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/lv.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/lv.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Atpakaļ"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Dažas grāmatzīmes netiek sinhronizētas, jo dažos laukos ir pārāk garš saturs."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Pārvaldīt grāmatzīmes"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Šīs ierīces sinhronizācija un dublēšana"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Daži pieteikšanās dati netiek sinhronizēti, jo noteiktos laukos saturs ir pārāk garš."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Pārvaldīt pieteikšanās datus"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Nevari skenēt?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Dodies uz Iestatījumi › Sinhronizācija un dublēšana DuckDuckGo pārlūkprogrammā citā ierīcē un izvēlies \"Sinhronizēt ar citu ierīci\"."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Dodies uz %@ DuckDuckGo pārlūkā citā ierīcē un izvēlies \"Sinhronizēt ar citu ierīci.\"."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Ievadīt kodu manuāli"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "No mobilā uz mobilo?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Kopīgot teksta kodu?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "Kvadrātkoda skenēšana"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Sinhronizētās ierīces"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Sinhronizācija ar citu ierīci"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Šī ierīce"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/lv.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/lv.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..be40d713c7 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/lv.lproj/Localizable.stringsdict @@ -0,0 +1,42 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Your bookmarks for %2$@ and 1 other site can't sync because some of their fields exceed the character limit. + other + Your bookmarks for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + zero + Your bookmark for %2$@ can't sync because one of its fields exceeds the character limit. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Your passwords for %2$@ and 1 other site can't sync because some of their fields exceed the character limit. + other + Your passwords for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + zero + Your password for %2$@ can't sync because one of its fields exceeds the character limit. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/nb.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/nb.lproj/Localizable.strings index f6cafc9052..6a1f4cae1a 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/nb.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/nb.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Tilbake"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Enkelte bokmerker synkroniseres ikke på grunn av for langt innhold i enkelte felt."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Administrer bokmerker"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Synkroniser og sikkerhetskopier denne enheten"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Enkelte pålogginger synkroniseres ikke på grunn av for langt innhold i enkelte felt."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Administrer pålogginger"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Kan du ikke skanne?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Gå til Innstillinger › Synkroniser og sikkerhetskopier i DuckDuckGo-nettleseren på en annen enhet og velg «Synkroniser med en annen enhet»."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Gå til %@ i DuckDuckGo-nettleseren på en annen enhet og velg «Synkroniser med en annen enhet.»"; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Skriv inn koden manuelt"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "Mobil til mobil?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Dele tekstkode?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "Skann QR-kode"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Synkroniserte enheter"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Synkroniser med en annen enhet"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Denne enheten"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/nb.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/nb.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..cb93b3c704 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/nb.lproj/Localizable.stringsdict @@ -0,0 +1,42 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Bokmerkene for %2$@ og 1 annet sted kan ikke synkroniseres fordi noen av feltene overskrider tegngrensen. + other + Bokmerkene for %2$@ og %1$d andre steder kan ikke synkroniseres fordi noen av feltene overskrider tegngrensen. + zero + Bokmerket for %2$@ kan ikke synkroniseres fordi ett av feltene overskrider tegngrensen. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Passordene for %2$@ og 1 annet sted kan ikke synkroniseres fordi noen av feltene overskrider tegngrensen. + other + Passordene for %2$@ og %1$d andre steder kan ikke synkroniseres fordi noen av feltene overskrider tegngrensen. + zero + Passordet for %2$@ kan ikke synkroniseres fordi ett av feltene overskrider tegngrensen. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/nl.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/nl.lproj/Localizable.strings index b475c09771..4006e6b8e6 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/nl.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/nl.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Terug"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Sommige bladwijzers worden niet gesynchroniseerd vanwege te lange inhoud in bepaalde velden."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Bladwijzers beheren"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Dit apparaat synchroniseren en back-up maken"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Sommige aanmeldingen worden niet gesynchroniseerd vanwege te lange inhoud in bepaalde velden."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Aanmeldingsgegevens beheren"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Kun je niet scannen?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Ga naar 'Instellingen' › 'Synchronisatie en back-up' in de DuckDuckGo-browser op een ander apparaat en selecteer 'Synchroniseren met een ander apparaat'."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Ga naar %@ in de DuckDuckGo-browser op een ander apparaat en selecteer 'Synchroniseren met een ander apparaat'."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Code handmatig invoeren"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "Mobiel-naar-mobiel?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Tekstcode delen?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "QR-code scannen"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Gesynchroniseerde apparaten"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Synchroniseren met een ander apparaat"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Dit apparaat"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/nl.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/nl.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..bd88c6fdb2 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/nl.lproj/Localizable.stringsdict @@ -0,0 +1,42 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Your bookmarks for %2$@ and 1 other site can't sync because some of their fields exceed the character limit. + other + Je bladwijzers voor %2$@ en %1$d andere websites kunnen niet worden gesynchroniseerd omdat sommige velden de tekenlimiet overschrijden. + zero + Je bladwijzer voor %2$@ kan niet worden gesynchroniseerd omdat een van de velden de tekenlimiet overschrijdt. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Je wachtwoorden voor %2$@ en één andere website kunnen niet worden gesynchroniseerd omdat sommige velden de tekenlimiet overschrijden. + other + Je wachtwoorden voor %2$@ en %1$d andere websites kunnen niet worden gesynchroniseerd omdat sommige velden de tekenlimiet overschrijden. + zero + Je wachtwoord voor %2$@ kan niet worden gesynchroniseerd omdat een van de velden de tekenlimiet overschrijdt. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/pl.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/pl.lproj/Localizable.strings index 52ce200641..146b670ae2 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/pl.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/pl.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Wstecz"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Niektóre zakładki nie są synchronizowane ze względu na zbyt długą treść w określonych polach."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Zarządzaj zakładkami"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Synchronizuj i twórz kopie zapasowe tego urządzenia"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Niektóre loginy nie są synchronizowane ze względu na zbyt długą treść w określonych polach."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Zarządzaj loginami"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Nie możesz skanować?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Wybierz kolejno Ustawienia › Synchronizacja i kopia zapasowa w przeglądarce DuckDuckGo na innym urządzeniu i wybierz opcję „Synchronizuj z innym urządzeniem”."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Przejdź do %@ w przeglądarce DuckDuckGo na innym urządzeniu i wybierz opcję „Synchronizuj z innym urządzeniem”."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Wprowadź kod ręcznie"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "Z telefonu komórkowego na telefon komórkowy?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Udostępnić kod tekstowy?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "Zeskanuj kod QR"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Zsynchronizowane urządzenia"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Synchronizuj z innym urządzeniem"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "To urządzenie"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/pl.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/pl.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..ab8f28b1e2 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/pl.lproj/Localizable.stringsdict @@ -0,0 +1,50 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + few + Your bookmarks for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + many + Your bookmarks for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + one + Your bookmarks for %2$@ and 1 other site can't sync because some of their fields exceed the character limit. + other + Your bookmarks for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + zero + Your bookmark for %2$@ can't sync because one of its fields exceeds the character limit. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + few + Your passwords for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + many + Your passwords for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + one + Your passwords for %2$@ and 1 other site can't sync because some of their fields exceed the character limit. + other + Your passwords for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + zero + Your password for %2$@ can't sync because one of its fields exceeds the character limit. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/pt.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/pt.lproj/Localizable.strings index 8490c08eb1..8fd3e030fd 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/pt.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/pt.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Retroceder"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Alguns marcadores não estão a sincronizar devido ao conteúdo excessivamente longo em certos campos."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Gerir marcadores"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Sincronizar e fazer cópia de segurança deste dispositivo"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Alguns dados de início de sessão não estão a sincronizar devido ao conteúdo excessivamente longo em certos campos."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Gerir inícios de sessão"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Não consegues ler?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Acede a Definições › Sincronização e cópia de segurança no navegador DuckDuckGo noutro dispositivo e seleciona \"Sincronizar com outro dispositivo\"."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Acede a %@ no navegador DuckDuckGo noutro dispositivo e seleciona \"Sincronizar com outro dispositivo\"."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Introduzir manualmente o código"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "Entre dispositivos móveis?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Partilhar código de texto?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "Ler código QR"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Dispositivos sincronizados"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Sincronizar com outro dispositivo"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Este dispositivo"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/pt.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/pt.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..f596d98c77 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/pt.lproj/Localizable.stringsdict @@ -0,0 +1,42 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Não é possível sincronizar os teus marcadores para %2$@ e outro site porque alguns dos campos excedem o limite de carateres. + other + Não é possível sincronizar os teus marcadores para %2$@ e mais %1$d sites porque alguns dos campos excedem o limite de carateres. + zero + Não é possível sincronizar o teu marcador para %2$@ porque um dos campos excede o limite de carateres. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Não é possível sincronizar as tuas palavras-passe para %2$@ e outro site porque alguns dos campos excedem o limite de carateres. + other + Não é possível sincronizar as tuas palavras-passe para %2$@ e mais %1$d sites porque alguns dos campos excedem o limite de carateres. + zero + Não é possível sincronizar a tua palavra-passe para %2$@ porque um dos campos excede o limite de carateres. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/ro.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/ro.lproj/Localizable.strings index 67a504166d..c50b6ef95a 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/ro.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/ro.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Înapoi"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Unele marcaje nu se sincronizează din cauza conținutului excesiv de lung din anumite câmpuri."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Gestionează marcajele"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Sincronizează și fă backup pentru acest dispozitiv"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Unele date de conectare nu se sincronizează din cauza conținutului excesiv de lung din anumite câmpuri."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Gestionează conectările"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Nu poți scana?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Accesează Setări > Sincronizare și backup din browserul DuckDuckGo de pe un alt dispozitiv și selectează „Sincronizează cu un alt dispozitiv”."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Accesează %@ în browserul DuckDuckGo pe un alt dispozitiv și selectează „Sincronizează cu un alt dispozitiv”."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Introdu manual codul"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "De la mobil la mobil?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Partajezi codul text?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "Scanează codul QR"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Dispozitive sincronizate"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Sincronizează cu un alt dispozitiv"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Acest dispozitiv"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/ro.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/ro.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..69a77e8068 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/ro.lproj/Localizable.stringsdict @@ -0,0 +1,46 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + few + Your bookmarks for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + one + Marcajele tale pentru %2$@ și încă un alt site nu se pot sincroniza deoarece unele dintre câmpurile lor depășesc limita de caractere. + other + Marcajele tale pentru %2$@ și încă alte %1$d site-uri nu se pot sincroniza deoarece unele dintre câmpurile lor depășesc limita de caractere. + zero + Marcajul tău pentru %2$@ nu se poate sincroniza deoarece unul dintre câmpurile sale depășește limita de caractere. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + few + Your passwords for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + one + Parolele tale pentru %2$@ și încă un alt site nu se pot sincroniza deoarece unele dintre câmpurile lor depășesc limita de caractere. + other + Parolele tale pentru %2$@ și încă alte %1$d site-uri nu se pot sincroniza deoarece unele dintre câmpurile lor depășesc limita de caractere. + zero + Parola ta pentru %2$@ nu se poate sincroniza deoarece unul dintre câmpurile sale depășește limita de caractere. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/ru.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/ru.lproj/Localizable.strings index ce89310fab..10d30ff50d 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/ru.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/ru.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Назад"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Некоторые закладки не синхронизируются из-за слишком длинных записей в отдельных полях."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Управление закладками"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Синхронизация и резервное копирование устройства"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Некоторые логины не синхронизируются из-за слишком длинных записей в отдельных полях."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Управление логинами"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Нет возможности отсканировать код?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Откройте раздел «Настройки» > Синхронизация и резервное копирование» в браузере DuckDuckGo на другом устройстве и выберите опцию «Синхронизировать с другим устройством»."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Откройте раздел «%@» в браузере DuckDuckGo на другом устройстве и выберите вариант «Синхронизировать с другим устройством»."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Ввести код вручную"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "Мобильный с мобильным?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Поделиться текстовым кодом?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "Сканирование QR-кода"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Синхронизированные устройства"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Синхронизировать с другим устройством"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Это устройство"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/ru.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/ru.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..ab8f28b1e2 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/ru.lproj/Localizable.stringsdict @@ -0,0 +1,50 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + few + Your bookmarks for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + many + Your bookmarks for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + one + Your bookmarks for %2$@ and 1 other site can't sync because some of their fields exceed the character limit. + other + Your bookmarks for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + zero + Your bookmark for %2$@ can't sync because one of its fields exceeds the character limit. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + few + Your passwords for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + many + Your passwords for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + one + Your passwords for %2$@ and 1 other site can't sync because some of their fields exceed the character limit. + other + Your passwords for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + zero + Your password for %2$@ can't sync because one of its fields exceeds the character limit. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/sk.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/sk.lproj/Localizable.strings index b4fe82a9e7..75a1f73b34 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/sk.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/sk.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Späť"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Niektoré záložky sa nesynchronizujú kvôli príliš dlhému obsahu v určitých poliach."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Správa záložiek"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Synchronizujte a zálohujte toto zariadenie"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Niektoré prihlásenia sa nesynchronizujú kvôli príliš dlhému obsahu v určitých poliach."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Správa prihlásení"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Nemôžete skenovať?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Prejdite do časti Nastavenia > Synchronizácia a zálohovanie v prehliadači DuckDuckGo v inom zariadení a vyberte možnosť „Synchronizovať s iným zariadením“."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Prejdite na %@ v prehliadači DuckDuckGo v inom zariadení a vyberte možnosť \"Synchronizovať s iným zariadením\"."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Manuálne zadajte kód"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "Z mobilného telefónu na mobilný telefón?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Zdieľať textový kód?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "Skenovanie kódu QR"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Synchronizované zariadenia"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Synchronizácia s iným zariadením"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Toto zariadenie"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/sk.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/sk.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..cdbbcc752d --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/sk.lproj/Localizable.stringsdict @@ -0,0 +1,50 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + few + Your bookmarks for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + many + Your bookmarks for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + one + Vaše záložky pre %2$@ a 1 ďalšiu lokalitu nemožno synchronizovať, pretože niektoré z ich polí prekračujú limit znakov. + other + Vaše záložky pre %2$@ a ďalšie lokality v počte %1$d nemožno synchronizovať, pretože niektoré z ich polí prekračujú limit znakov. + zero + Vaša záložka pre %2$@ sa nemôže synchronizovať, pretože jedno z jej polí prekračuje limit znakov. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + few + Your passwords for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + many + Your passwords for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + one + Vaše heslá pre %2$@ a 1 ďalšiu lokalitu nemožno synchronizovať, pretože niektoré z ich polí presahujú limit znakov. + other + Vaše heslá pre %2$@ a ďalšie lokality v počte %1$d nemožno synchronizovať, pretože niektoré z ich polí prekračujú limit znakov. + zero + Vaše heslo pre %2$@ sa nedá synchronizovať, pretože jedno z jeho polí prekračuje povolený počet znakov. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/sl.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/sl.lproj/Localizable.strings index 9c8549f278..6d8432aaf5 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/sl.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/sl.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Nazaj"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Nekateri zaznamki se ne sinhronizirajo zaradi predolge vsebine v nekaterih poljih."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Upravljanje zaznamkov"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Sinhronizirajte in varnostno kopirajte to napravo"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Nekatere prijave se ne sinhronizirajo zaradi predolge vsebine v nekaterih poljih."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Upravljanje prijav"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Skeniranje ni mogoče?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "V brskalniku DuckDuckGo v drugi napravi pojdite v Nastavitve › Sinhronizacija in varnostno kopiranje in izberite »Sinhroniziraj z drugo napravo«."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "V brskalniku DuckDuckGo v drugi napravi pojdite v %@ in izberite \"Sinhroniziraj z drugo napravo\"."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Ročno vnesite kodo"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "Sinhronizirate mobilni telefon z mobilnim telefonom?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Želite deliti besedilno kodo?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "Skeniranje kode QR"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Sinhronizirane naprave"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Sinhronizacija z drugo napravo"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Ta naprava"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/sl.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/sl.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..d9421f04b0 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/sl.lproj/Localizable.stringsdict @@ -0,0 +1,50 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + few + Your bookmarks for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + one + Vaših zaznamkov za %2$@ in eno drugo spletno mesto ni mogoče sinhronizirati, ker nekatera njihova polja presegajo omejitev števila znakov. + other + Vaših zaznamkov za %2$@ in druga spletna mesta (%1$d) ni mogoče sinhronizirati, ker nekatera njihova polja presegajo omejitev števila znakov. + two + Your bookmarks for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + zero + Vašega zaznamka za %2$@ ni mogoče sinhronizirati, ker eno od njegovih polj presega omejitev števila znakov. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + few + Your passwords for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + one + Vaših gesel za %2$@ in eno drugo spletno mesto ni mogoče sinhronizirati, ker nekatera njihova polja presegajo omejitev števila znakov. + other + Vaših gesel za %2$@ in druga spletna mesta (%1$d) ni mogoče sinhronizirati, ker nekatera njihova polja presegajo omejitev števila znakov. + two + Your passwords for %2$@ and %1$d other sites can't sync because some of their fields exceed the character limit. + zero + Vašega gesla za %2$@ ni mogoče sinhronizirati, ker eno od njegovih polj presega omejitev števila znakov. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/sv.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/sv.lproj/Localizable.strings index 69a1f6de0f..dbd871722a 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/sv.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/sv.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Tillbaka"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Vissa bokmärken synkroniseras inte på grund av för långt innehåll i vissa fält."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Hantera bokmärken"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Synkronisera och säkerhetskopiera denna enhet"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Vissa inloggningar synkroniseras inte på grund av för långt innehåll i vissa fält."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Hantera inloggningar"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Kan du inte skanna?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Gå till Inställningar > Synkronisering och säkerhetskopiering i DuckDuckGo-webbläsaren på en annan enhet. Välj Synkronisera med en annan enhet."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Gå till %@ i DuckDuckGo-webbläsaren på en annan enhet och välj Synkronisera med en annan enhet\"."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Ange kod manuellt"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "Mobil-till-mobil?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Dela textkod?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "Skanna QR-kod"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Synkroniserade enheter"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Synkronisera med en annan enhet"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Denna enhet"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/sv.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/sv.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..fde8eb3fe8 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/sv.lproj/Localizable.stringsdict @@ -0,0 +1,42 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Dina bokmärken för %2$@ och 1 annan webbplats kan inte synkroniseras eftersom vissa av deras fält överskrider teckengränsen. + other + Dina bokmärken för %2$@ och %1$d andra webbplatser kan inte synkroniseras eftersom vissa av deras fält överskrider teckengränsen. + zero + Ditt bokmärke för %2$@ kan inte synkroniseras eftersom ett av dess fält överskrider teckengränsen. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Dina lösenord för %2$@ och 1 annan webbplats kan inte synkroniseras eftersom vissa av deras fält överskrider teckengränsen. + other + Dina lösenord för %2$@ och %1$d andra webbplatser kan inte synkroniseras eftersom vissa av deras fält överskrider teckengränsen. + zero + Ditt lösenord för %2$@ kan inte synkroniseras eftersom ett av dess fält överskrider teckengränsen. + + + + diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/tr.lproj/Localizable.strings b/LocalPackages/SyncUI/Sources/SyncUI/Resources/tr.lproj/Localizable.strings index d6f1ed16d0..b16d04fccc 100644 --- a/LocalPackages/SyncUI/Sources/SyncUI/Resources/tr.lproj/Localizable.strings +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/tr.lproj/Localizable.strings @@ -1,6 +1,12 @@ /* Standard Buttons - Back Button */ "back.button" = "Geri"; +/* Do not translate - stringsdict entry */ +"bookmarks.invalid.objects.present.description" = "bookmarks.invalid.objects.present.description"; + +/* Alert title for invalid bookmarks being filtered out of synced data */ +"bookmarks.invalid.objects.present.title" = "Bazı yer işaretleri, belirli alanlardaki aşırı uzun içerik nedeniyle senkronize edilmiyor."; + /* Sync Paused Errors - Bookmarks Limit Exceeded Action */ "bookmarks.limit.exceeded.action" = "Yer İmlerini Yönet"; @@ -43,6 +49,12 @@ /* Connect With Server Sheet - Title */ "connect.with.server.sheet.title" = "Bu Cihazı Senkronize Et ve Yedekle"; +/* Do not translate - stringsdict entry */ +"credentials.invalid.objects.present.description" = "credentials.invalid.objects.present.description"; + +/* Alert title for invalid logins being filtered out of synced data */ +"credentials.invalid.objects.present.title" = "Bazı girişler, belirli alanlardaki aşırı uzun içerik nedeniyle senkronize edilmiyor."; + /* Sync Paused Errors - Credentials Limit Exceeded Action */ "credentials.limit.exceeded.action" = "Girişleri Yönet"; @@ -185,10 +197,10 @@ "scan.or.see.code.footer" = "Tarama yapamıyor musunuz?"; /* Scan or See Code View - Instruction */ -"scan.or.see.code.instruction" = "Başka bir cihazdaki DuckDuckGo Tarayıcısında Ayarlar › Senkronizasyon ve Yedekleme bölümüne gidin ve \"Başka Bir Cihazla Senkronize Et\" seçeneğini seçin."; +"scan.or.see.code.instruction" = "Go to Settings › Sync & Backup in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”"; /* Scan or See Code View - Instruction with syncMenuPath */ -"scan.or.see.code.instruction.attributed" = "Başka bir cihazdaki DuckDuckGo Tarayıcısında %@ bölümüne gidin ve \"Başka Bir Cihazla Senkronize Et\" seçeneğini seçin."; +"scan.or.see.code.instruction.attributed" = "Go to %@ in the DuckDuckGo Browser on another device and select ”Sync With Another Device.”."; /* Scan or See Code View - Manually Enter Code Link */ "scan.or.see.code.manually.enter.code.link" = "Kodu Manuel Olarak Yaz"; @@ -200,7 +212,7 @@ "scan.or.see.code.scan.code.instructions.title" = "Mobilden Mobile mi?"; /* Scan or See Code View - Share Code Link */ -"scan.or.see.code.share.code.link" = "Metin Kodu Paylaşılsın mı?"; +"scan.or.see.code.share.code.link" = "Share Text Code"; /* Scan or See Code View - Title */ "scan.or.see.code.title" = "QR Kodunu Tara"; @@ -248,7 +260,7 @@ "synced.devices.section.header" = "Senkronize Edilmiş Cihazlar"; /* Synced Devices - Sync with Another Device Label */ -"synced.devices.sync.with.another.device.label" = "Başka Bir Cihazla Senkronize Et"; +"synced.devices.sync.with.another.device.label" = "Sync With Another Device"; /* Synced Devices - This Device Label */ "synced.devices.this.device.label" = "Bu Cihaz"; diff --git a/LocalPackages/SyncUI/Sources/SyncUI/Resources/tr.lproj/Localizable.stringsdict b/LocalPackages/SyncUI/Sources/SyncUI/Resources/tr.lproj/Localizable.stringsdict new file mode 100644 index 0000000000..1c8b49fb96 --- /dev/null +++ b/LocalPackages/SyncUI/Sources/SyncUI/Resources/tr.lproj/Localizable.stringsdict @@ -0,0 +1,42 @@ + + + + + bookmarks.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + 2$@ ve 1 diğer site için yer işaretleriniz, bazı alanları karakter sınırını aştığı için senkronize edilemiyor. + other + 2$@ ve %1$d diğer site için yer işaretleriniz, bazı alanları karakter sınırını aştığı için senkronize edilemiyor. + zero + 2$@ için yer işaretiniz, alanlarından biri karakter sınırını aştığı için senkronize edilemiyor. + + + credentials.invalid.objects.present.description + + NSStringLocalizedFormatKey + %#@sites@ + sites + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + 2$@ ve 1 diğer site için parolalarınız, bazı alanları karakter sınırını aştığı için senkronize edilemiyor. + other + 2$@ ve %1$d diğer site için parolalarınız, bazı alanları karakter sınırını aştığı için senkronize edilemiyor. + zero + %2$@ için şifreniz, alanlarından biri karakter sınırını aştığı için senkronize edilemiyor. + + + + diff --git a/PacketTunnelProvider/bg.lproj/Localizable.strings b/PacketTunnelProvider/bg.lproj/Localizable.strings index f27738834d..f7fa04f072 100644 --- a/PacketTunnelProvider/bg.lproj/Localizable.strings +++ b/PacketTunnelProvider/bg.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* The body of the notification shown when Network Protection fails to reconnect */ "network.protection.failure.notification.body" = "Неуспешно свързване на мрежовата защита. Моля, опитайте отново по-късно."; diff --git a/PacketTunnelProvider/cs.lproj/Localizable.strings b/PacketTunnelProvider/cs.lproj/Localizable.strings index 145708747e..379129d107 100644 --- a/PacketTunnelProvider/cs.lproj/Localizable.strings +++ b/PacketTunnelProvider/cs.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/da.lproj/Localizable.strings b/PacketTunnelProvider/da.lproj/Localizable.strings index 22eaacd202..77331ab558 100644 --- a/PacketTunnelProvider/da.lproj/Localizable.strings +++ b/PacketTunnelProvider/da.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/de.lproj/Localizable.strings b/PacketTunnelProvider/de.lproj/Localizable.strings index 70c3d9ce7b..2488f25a86 100644 --- a/PacketTunnelProvider/de.lproj/Localizable.strings +++ b/PacketTunnelProvider/de.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/el.lproj/Localizable.strings b/PacketTunnelProvider/el.lproj/Localizable.strings index 3a9739872d..a4af94847b 100644 --- a/PacketTunnelProvider/el.lproj/Localizable.strings +++ b/PacketTunnelProvider/el.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* The body of the notification shown when Network Protection fails to reconnect */ "network.protection.failure.notification.body" = "Η σύνδεση της Προστασίας δικτύου απέτυχε. Ξαναδοκιμάστε αργότερα."; diff --git a/PacketTunnelProvider/es.lproj/Localizable.strings b/PacketTunnelProvider/es.lproj/Localizable.strings index 38b8cad08c..fe768a3a89 100644 --- a/PacketTunnelProvider/es.lproj/Localizable.strings +++ b/PacketTunnelProvider/es.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/et.lproj/Localizable.strings b/PacketTunnelProvider/et.lproj/Localizable.strings index d860747f57..f6d08d8d41 100644 --- a/PacketTunnelProvider/et.lproj/Localizable.strings +++ b/PacketTunnelProvider/et.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/fi.lproj/Localizable.strings b/PacketTunnelProvider/fi.lproj/Localizable.strings index 7229a827ff..6fa273cf6d 100644 --- a/PacketTunnelProvider/fi.lproj/Localizable.strings +++ b/PacketTunnelProvider/fi.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/fr.lproj/Localizable.strings b/PacketTunnelProvider/fr.lproj/Localizable.strings index 379cb2eb53..10d0783738 100644 --- a/PacketTunnelProvider/fr.lproj/Localizable.strings +++ b/PacketTunnelProvider/fr.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/hr.lproj/Localizable.strings b/PacketTunnelProvider/hr.lproj/Localizable.strings index a77b81dfb9..a9a6fc432e 100644 --- a/PacketTunnelProvider/hr.lproj/Localizable.strings +++ b/PacketTunnelProvider/hr.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/hu.lproj/Localizable.strings b/PacketTunnelProvider/hu.lproj/Localizable.strings index ed29f50ed8..7b8becbc60 100644 --- a/PacketTunnelProvider/hu.lproj/Localizable.strings +++ b/PacketTunnelProvider/hu.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/it.lproj/Localizable.strings b/PacketTunnelProvider/it.lproj/Localizable.strings index a0253dd368..9f423dc124 100644 --- a/PacketTunnelProvider/it.lproj/Localizable.strings +++ b/PacketTunnelProvider/it.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/lt.lproj/Localizable.strings b/PacketTunnelProvider/lt.lproj/Localizable.strings index 64a0b1caff..f2e9b94eb0 100644 --- a/PacketTunnelProvider/lt.lproj/Localizable.strings +++ b/PacketTunnelProvider/lt.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/lv.lproj/Localizable.strings b/PacketTunnelProvider/lv.lproj/Localizable.strings index 6d6aea9404..5023945ee9 100644 --- a/PacketTunnelProvider/lv.lproj/Localizable.strings +++ b/PacketTunnelProvider/lv.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/nb.lproj/Localizable.strings b/PacketTunnelProvider/nb.lproj/Localizable.strings index 6622a5a33f..d69b9546a0 100644 --- a/PacketTunnelProvider/nb.lproj/Localizable.strings +++ b/PacketTunnelProvider/nb.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/nl.lproj/Localizable.strings b/PacketTunnelProvider/nl.lproj/Localizable.strings index e02130059a..1b6ea4629c 100644 --- a/PacketTunnelProvider/nl.lproj/Localizable.strings +++ b/PacketTunnelProvider/nl.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/pl.lproj/Localizable.strings b/PacketTunnelProvider/pl.lproj/Localizable.strings index 109655cedc..54f90fc27c 100644 --- a/PacketTunnelProvider/pl.lproj/Localizable.strings +++ b/PacketTunnelProvider/pl.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/pt.lproj/Localizable.strings b/PacketTunnelProvider/pt.lproj/Localizable.strings index 0ca58d3bbd..b6791c7790 100644 --- a/PacketTunnelProvider/pt.lproj/Localizable.strings +++ b/PacketTunnelProvider/pt.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/ro.lproj/Localizable.strings b/PacketTunnelProvider/ro.lproj/Localizable.strings index af14a25999..ef6af74673 100644 --- a/PacketTunnelProvider/ro.lproj/Localizable.strings +++ b/PacketTunnelProvider/ro.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/ru.lproj/Localizable.strings b/PacketTunnelProvider/ru.lproj/Localizable.strings index f79b5934d8..e7f7dfb788 100644 --- a/PacketTunnelProvider/ru.lproj/Localizable.strings +++ b/PacketTunnelProvider/ru.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* The body of the notification shown when Network Protection fails to reconnect */ "network.protection.failure.notification.body" = "Функции защиты сети (Network Protection) не удалось установить соединение. Повторите попытку позже."; diff --git a/PacketTunnelProvider/sk.lproj/Localizable.strings b/PacketTunnelProvider/sk.lproj/Localizable.strings index a80c5e11da..6b75ee4f28 100644 --- a/PacketTunnelProvider/sk.lproj/Localizable.strings +++ b/PacketTunnelProvider/sk.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/sl.lproj/Localizable.strings b/PacketTunnelProvider/sl.lproj/Localizable.strings index 595f11f8e1..b08a6a094b 100644 --- a/PacketTunnelProvider/sl.lproj/Localizable.strings +++ b/PacketTunnelProvider/sl.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/sv.lproj/Localizable.strings b/PacketTunnelProvider/sv.lproj/Localizable.strings index 9d9aec7f48..a26d457092 100644 --- a/PacketTunnelProvider/sv.lproj/Localizable.strings +++ b/PacketTunnelProvider/sv.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; diff --git a/PacketTunnelProvider/tr.lproj/Localizable.strings b/PacketTunnelProvider/tr.lproj/Localizable.strings index 2bbd374209..0a383313a5 100644 --- a/PacketTunnelProvider/tr.lproj/Localizable.strings +++ b/PacketTunnelProvider/tr.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* The body of the notification when Privacy Pro subscription expired */ +"network.protection.entitlement.expired.notification.body" = "VPN disconnected due to expired subscription. Subscribe to Privacy Pro to reconnect DuckDuckGo VPN."; + /* 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."; From 161bad380c9825dca43ae9588f752bc716847511 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20=C5=9Apiewak?= Date: Wed, 10 Apr 2024 12:45:45 +0200 Subject: [PATCH 09/63] Fix status bar color on regular width size class (#2705) --- DuckDuckGo/BlankSnapshotViewController.swift | 30 +++++++++++++------- DuckDuckGo/MainViewController.swift | 20 +++++++------ 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/DuckDuckGo/BlankSnapshotViewController.swift b/DuckDuckGo/BlankSnapshotViewController.swift index a9194656aa..2143424548 100644 --- a/DuckDuckGo/BlankSnapshotViewController.swift +++ b/DuckDuckGo/BlankSnapshotViewController.swift @@ -202,15 +202,30 @@ extension BlankSnapshotViewController: TabSwitcherButtonDelegate { extension BlankSnapshotViewController { - private func decorate() { + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + updateStatusBarBackgroundColor() + } + + private func updateStatusBarBackgroundColor() { let theme = ThemeManager.shared.currentTheme - setNeedsStatusBarAppearanceUpdate() - if AppWidthObserver.shared.isLargeWidth { - viewCoordinator.statusBackground.backgroundColor = theme.tabsBarBackgroundColor + if appSettings.currentAddressBarPosition == .bottom { + viewCoordinator.statusBackground.backgroundColor = theme.backgroundColor } else { - viewCoordinator.statusBackground.backgroundColor = theme.omniBarBackgroundColor + if AppWidthObserver.shared.isPad && traitCollection.horizontalSizeClass == .regular { + viewCoordinator.statusBackground.backgroundColor = theme.tabsBarBackgroundColor + } else { + viewCoordinator.statusBackground.backgroundColor = theme.omniBarBackgroundColor + } } + } + + private func decorate() { + let theme = ThemeManager.shared.currentTheme + + setNeedsStatusBarAppearanceUpdate() view.backgroundColor = theme.mainViewBackgroundColor @@ -223,11 +238,6 @@ extension BlankSnapshotViewController { viewCoordinator.toolbarTabSwitcherButton.tintColor = theme.barTintColor viewCoordinator.logoText.tintColor = theme.ddgTextTintColor - - if appSettings.currentAddressBarPosition == .bottom { - viewCoordinator.statusBackground.backgroundColor = theme.backgroundColor - } - } } diff --git a/DuckDuckGo/MainViewController.swift b/DuckDuckGo/MainViewController.swift index e52bf867a6..d4d92afa17 100644 --- a/DuckDuckGo/MainViewController.swift +++ b/DuckDuckGo/MainViewController.swift @@ -548,7 +548,7 @@ class MainViewController: UIViewController { @objc func onAddressBarPositionChanged() { viewCoordinator.moveAddressBarToPosition(appSettings.currentAddressBarPosition) refreshViewsBasedOnAddressBarPosition(appSettings.currentAddressBarPosition) - updateAddressBarPositionRelatedColors() + updateStatusBarBackgroundColor() } @objc private func onShowFullURLAddressChanged() { @@ -2411,13 +2411,19 @@ extension MainViewController: AutoClearWorker { extension MainViewController { - private func updateAddressBarPositionRelatedColors() { + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + updateStatusBarBackgroundColor() + } + + private func updateStatusBarBackgroundColor() { let theme = ThemeManager.shared.currentTheme if appSettings.currentAddressBarPosition == .bottom { viewCoordinator.statusBackground.backgroundColor = theme.backgroundColor } else { - if AppWidthObserver.shared.isLargeWidth { + if AppWidthObserver.shared.isPad && traitCollection.horizontalSizeClass == .regular { viewCoordinator.statusBackground.backgroundColor = theme.tabsBarBackgroundColor } else { viewCoordinator.statusBackground.backgroundColor = theme.omniBarBackgroundColor @@ -2428,22 +2434,20 @@ extension MainViewController { private func decorate() { let theme = ThemeManager.shared.currentTheme - setNeedsStatusBarAppearanceUpdate() + updateStatusBarBackgroundColor() - updateAddressBarPositionRelatedColors() + setNeedsStatusBarAppearanceUpdate() view.backgroundColor = theme.mainViewBackgroundColor viewCoordinator.navigationBarContainer.backgroundColor = theme.barBackgroundColor viewCoordinator.navigationBarContainer.tintColor = theme.barTintColor - - + viewCoordinator.toolbar.barTintColor = theme.barBackgroundColor viewCoordinator.toolbar.tintColor = theme.barTintColor viewCoordinator.toolbarTabSwitcherButton.tintColor = theme.barTintColor - viewCoordinator.logoText.tintColor = theme.ddgTextTintColor } From 9d21a6fea8ba381633a4e1733e11a9f880d320a5 Mon Sep 17 00:00:00 2001 From: Christopher Brind Date: Wed, 10 Apr 2024 12:53:20 +0100 Subject: [PATCH 10/63] update app store prompt logic (#2678) Task/Issue URL: https://app.asana.com/0/414235014887631/1206657927397548/f Tech Design URL: CC: Description: Updates the logic for showing the App Store prompt: Only triggers on SERP Only triggers the first time on or after the 3rd day of actual usage Only triggers the second time when 4 or more days of actual usage have passed Steps to test this PR: Clean install, run the app and go to the SERP - no prompt visible In the code edit AppRatingPrompt.uniqueAccessDays property to return 3 Add a breakpoint to the setter of that property Go to the SERP - should prompt for review, confirm that uniqueAccessDays was reset to 0 In the code edit unique AppRatingPrompt.uniqueAccessDays property to return 0 Go to the SERP - should NOT prompt for review In the code edit unique AppRatingPrompt.uniqueAccessDays property to return 4 Go to the SERP - should prompt for review In the code edit unique AppRatingPrompt.uniqueAccessDays property to return 0 Go to the SERP - should NOT prompt for review In the code edit unique AppRatingPrompt.uniqueAccessDays property to return 4 Go to the SERP - should NOT prompt for review --- DuckDuckGo.xcodeproj/project.pbxproj | 12 +- DuckDuckGo/AppRatingPrompt.swift | 34 ++++- .../.xccurrentversion | 8 + .../AppRatingPrompt 2.xcdatamodel/contents | 9 ++ DuckDuckGo/TabViewController.swift | 4 +- ...ppRatingPromptDatabaseMigrationTests.swift | 77 ++++++++++ DuckDuckGoTests/AppRatingPromptTests.swift | 142 +++++++++--------- .../AppRatingPrompt_v1/Database.sqlite | Bin 0 -> 45056 bytes .../AppRatingPrompt_v1/Database.sqlite-shm | Bin 0 -> 32768 bytes .../AppRatingPrompt_v1/Database.sqlite-wal | Bin 0 -> 65952 bytes 10 files changed, 208 insertions(+), 78 deletions(-) create mode 100644 DuckDuckGo/AppRatingPrompt.xcdatamodeld/.xccurrentversion create mode 100644 DuckDuckGo/AppRatingPrompt.xcdatamodeld/AppRatingPrompt 2.xcdatamodel/contents create mode 100644 DuckDuckGoTests/AppRatingPromptDatabaseMigrationTests.swift create mode 100644 DuckDuckGoTests/AppRatingPrompt_v1/Database.sqlite create mode 100644 DuckDuckGoTests/AppRatingPrompt_v1/Database.sqlite-shm create mode 100644 DuckDuckGoTests/AppRatingPrompt_v1/Database.sqlite-wal diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index 605d442885..b1aa3b3783 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -453,6 +453,8 @@ 8563A03C1F9288D600F04442 /* BrowserChromeManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8563A03B1F9288D600F04442 /* BrowserChromeManager.swift */; }; 8565A34B1FC8D96B00239327 /* LaunchTabNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8565A34A1FC8D96B00239327 /* LaunchTabNotification.swift */; }; 8565A34D1FC8DFE400239327 /* LaunchTabNotificationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8565A34C1FC8DFE400239327 /* LaunchTabNotificationTests.swift */; }; + 857229882BBEE74100E2E802 /* AppRatingPromptDatabaseMigrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857229872BBEE74100E2E802 /* AppRatingPromptDatabaseMigrationTests.swift */; }; + 8572298A2BBEF0C800E2E802 /* AppRatingPrompt_v1 in Resources */ = {isa = PBXBuildFile; fileRef = 857229892BBEF0C800E2E802 /* AppRatingPrompt_v1 */; }; 8577A1C5255D2C0D00D43FCD /* HitTestingToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8577A1C4255D2C0D00D43FCD /* HitTestingToolbar.swift */; }; 857EEB752095FFAC008A005C /* HomeRowInstructionsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857EEB742095FFAC008A005C /* HomeRowInstructionsViewController.swift */; }; 858479C92B8792D800D156C1 /* HistoryManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 858479C82B8792D800D156C1 /* HistoryManager.swift */; }; @@ -1576,6 +1578,7 @@ 8544C37A250B823600A0FE73 /* UserText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserText.swift; sourceTree = ""; }; 8546A5492A672959003929BF /* MainViewController+Email.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MainViewController+Email.swift"; sourceTree = ""; }; 85480CB229226B1E007E8F13 /* CrashCollectionExtensionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrashCollectionExtensionTests.swift; sourceTree = ""; }; + 85481A6A2BA46AFB00F9EFB0 /* AppRatingPrompt 2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "AppRatingPrompt 2.xcdatamodel"; sourceTree = ""; }; 85482D882462DCD100EDEDD1 /* OpenAction.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = OpenAction.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 85482D8C2462DCD100EDEDD1 /* ActionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionViewController.swift; sourceTree = ""; }; 85482D8F2462DCD100EDEDD1 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = ""; }; @@ -1595,6 +1598,8 @@ 8563A03B1F9288D600F04442 /* BrowserChromeManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrowserChromeManager.swift; sourceTree = ""; }; 8565A34A1FC8D96B00239327 /* LaunchTabNotification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LaunchTabNotification.swift; sourceTree = ""; }; 8565A34C1FC8DFE400239327 /* LaunchTabNotificationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LaunchTabNotificationTests.swift; sourceTree = ""; }; + 857229872BBEE74100E2E802 /* AppRatingPromptDatabaseMigrationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppRatingPromptDatabaseMigrationTests.swift; sourceTree = ""; }; + 857229892BBEF0C800E2E802 /* AppRatingPrompt_v1 */ = {isa = PBXFileReference; lastKnownFileType = folder; path = AppRatingPrompt_v1; sourceTree = ""; }; 8577A1C4255D2C0D00D43FCD /* HitTestingToolbar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HitTestingToolbar.swift; sourceTree = ""; }; 857EEB742095FFAC008A005C /* HomeRowInstructionsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeRowInstructionsViewController.swift; sourceTree = ""; }; 858479C82B8792D800D156C1 /* HistoryManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoryManager.swift; sourceTree = ""; }; @@ -3757,8 +3762,10 @@ 83134D7F20E2E013006CE65D /* Feedback */ = { isa = PBXGroup; children = ( + 857229892BBEF0C800E2E802 /* AppRatingPrompt_v1 */, 8528AE7D212EF5FF00D0BD74 /* AppRatingPromptTests.swift */, 8528AE82212FF91A00D0BD74 /* AppRatingPromptStorageTests.swift */, + 857229872BBEE74100E2E802 /* AppRatingPromptDatabaseMigrationTests.swift */, ); name = Feedback; sourceTree = ""; @@ -6383,6 +6390,7 @@ files = ( EA39B7E2268A1A35000C62CD /* privacy-reference-tests in Resources */, F17843E91F36226700390DCD /* MockFiles in Resources */, + 8572298A2BBEF0C800E2E802 /* AppRatingPrompt_v1 in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -7282,6 +7290,7 @@ B6AD9E3728D4510A0019CDE9 /* ContentBlockingUpdatingTests.swift in Sources */, C14882E427F20D9A00D59F0C /* BookmarksImporterTests.swift in Sources */, 8588026A24E424EE00C24AB6 /* AppWidthObserverTests.swift in Sources */, + 857229882BBEE74100E2E802 /* AppRatingPromptDatabaseMigrationTests.swift in Sources */, 8588026624E420BD00C24AB6 /* LargeOmniBarStateTests.swift in Sources */, 85AFA1212B45D14F0028A504 /* BookmarksMigrationAssertionTests.swift in Sources */, EE0153EB2A6FF970002A8B26 /* NetworkProtectionRootViewModelTests.swift in Sources */, @@ -10507,9 +10516,10 @@ 8528AE7F212F15D600D0BD74 /* AppRatingPrompt.xcdatamodeld */ = { isa = XCVersionGroup; children = ( + 85481A6A2BA46AFB00F9EFB0 /* AppRatingPrompt 2.xcdatamodel */, 8528AE80212F15D600D0BD74 /* AppRatingPrompt.xcdatamodel */, ); - currentVersion = 8528AE80212F15D600D0BD74 /* AppRatingPrompt.xcdatamodel */; + currentVersion = 85481A6A2BA46AFB00F9EFB0 /* AppRatingPrompt 2.xcdatamodel */; path = AppRatingPrompt.xcdatamodeld; sourceTree = ""; versionGroupType = wrapper.xcdatamodel; diff --git a/DuckDuckGo/AppRatingPrompt.swift b/DuckDuckGo/AppRatingPrompt.swift index 203cf9c864..3dc2d7aa74 100644 --- a/DuckDuckGo/AppRatingPrompt.swift +++ b/DuckDuckGo/AppRatingPrompt.swift @@ -23,6 +23,8 @@ import CoreData protocol AppRatingPromptStorage { + var firstShown: Date? { get set } + var lastAccess: Date? { get set } var uniqueAccessDays: Int? { get set } @@ -35,11 +37,17 @@ class AppRatingPrompt { var storage: AppRatingPromptStorage + var uniqueAccessDays: Int { + storage.uniqueAccessDays ?? 0 + } + init(storage: AppRatingPromptStorage = AppRatingPromptCoreDataStorage()) { self.storage = storage } func registerUsage(onDate date: Date = Date()) { + guard storage.lastShown == nil else { return } + if !date.isSameDay(storage.lastAccess), let currentUniqueAccessDays = storage.uniqueAccessDays { storage.uniqueAccessDays = currentUniqueAccessDays + 1 } @@ -47,17 +55,39 @@ class AppRatingPrompt { } func shouldPrompt(onDate date: Date = Date()) -> Bool { - return [3, 7].contains(storage.uniqueAccessDays) && !date.isSameDay(storage.lastShown) + // To keep the database migration "lightweight" we just need to check if lastShown has been set yet. + // If it has then this user won't see any more prompts, which is preferable to seeing too many or too frequently. + if uniqueAccessDays >= 3 && storage.firstShown == nil && storage.lastShown == nil { + return true + } else if uniqueAccessDays >= 4 && storage.lastShown == nil { + return true + } + return false } func shown(onDate date: Date = Date()) { - storage.lastShown = date + if storage.firstShown == nil { + storage.firstShown = date + storage.uniqueAccessDays = 0 + } else if storage.lastShown == nil { + storage.lastShown = date + } } } class AppRatingPromptCoreDataStorage: AppRatingPromptStorage { + var firstShown: Date? { + get { + return ratingPromptEntity()?.firstShown + } + set { + ratingPromptEntity()?.firstShown = newValue + try? context.save() + } + } + var lastAccess: Date? { get { return ratingPromptEntity()?.lastAccess diff --git a/DuckDuckGo/AppRatingPrompt.xcdatamodeld/.xccurrentversion b/DuckDuckGo/AppRatingPrompt.xcdatamodeld/.xccurrentversion new file mode 100644 index 0000000000..99ecc96d71 --- /dev/null +++ b/DuckDuckGo/AppRatingPrompt.xcdatamodeld/.xccurrentversion @@ -0,0 +1,8 @@ + + + + + _XCCurrentVersionName + AppRatingPrompt 2.xcdatamodel + + diff --git a/DuckDuckGo/AppRatingPrompt.xcdatamodeld/AppRatingPrompt 2.xcdatamodel/contents b/DuckDuckGo/AppRatingPrompt.xcdatamodeld/AppRatingPrompt 2.xcdatamodel/contents new file mode 100644 index 0000000000..2493c81ebd --- /dev/null +++ b/DuckDuckGo/AppRatingPrompt.xcdatamodeld/AppRatingPrompt 2.xcdatamodel/contents @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/DuckDuckGo/TabViewController.swift b/DuckDuckGo/TabViewController.swift index 1fa5aa747f..ce76912a2e 100644 --- a/DuckDuckGo/TabViewController.swift +++ b/DuckDuckGo/TabViewController.swift @@ -1085,8 +1085,8 @@ extension TabViewController: WKNavigationDelegate { appRatingPrompt.registerUsage() if let scene = self.view.window?.windowScene, - appRatingPrompt.shouldPrompt(), - webView.url?.isDuckDuckGoSearch == true { + webView.url?.isDuckDuckGoSearch == true, + appRatingPrompt.shouldPrompt() { SKStoreReviewController.requestReview(in: scene) appRatingPrompt.shown() } diff --git a/DuckDuckGoTests/AppRatingPromptDatabaseMigrationTests.swift b/DuckDuckGoTests/AppRatingPromptDatabaseMigrationTests.swift new file mode 100644 index 0000000000..0220d1d30a --- /dev/null +++ b/DuckDuckGoTests/AppRatingPromptDatabaseMigrationTests.swift @@ -0,0 +1,77 @@ +// +// AppRatingPromptDatabaseMigrationTests.swift +// DuckDuckGo +// +// Copyright © 2024 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import XCTest +@testable import DuckDuckGo +@testable import Core +import CoreData +import Persistence + +// If making future changes take a copy of the v2 momd and Database file like here and update / add tests as appropiate. +class AppRatingPromptDatabaseMigrationTests: XCTestCase { + + func testExpectedNumberOfModelVersionsInLatestModel() throws { + guard let modelURL = Bundle.main.url(forResource: "AppRatingPrompt", withExtension: "momd") else { + XCTFail("Error loading model URL") + return + } + let modelVersions = try FileManager.default.contentsOfDirectory(at: modelURL, includingPropertiesForKeys: nil, options: []) + .filter { $0.lastPathComponent.hasSuffix(".mom") } + XCTAssertEqual(2, modelVersions.count) + } + + func testMigrationFromV1toLatest() { + + guard let baseURL = Bundle(for: (type(of: self))).url(forResource: "AppRatingPrompt_v1", withExtension: nil) else { + XCTFail("could not get base url") + return + } + + guard let latestModel = CoreDataDatabase.loadModel(from: .main, named: "AppRatingPrompt") else { + XCTFail("could not load latest model") + return + } + + let storeURL = baseURL.appendingPathComponent("Database.sqlite") + + do { + let options = [NSMigratePersistentStoresAutomaticallyOption: true, + NSInferMappingModelAutomaticallyOption: true] + + // Run the migration + let newCoordinator = NSPersistentStoreCoordinator(managedObjectModel: latestModel) + let newStore = try newCoordinator.addPersistentStore(ofType: NSSQLiteStoreType, + configurationName: nil, + at: storeURL, + options: options) + + // Check the data exists + let context = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType) + context.persistentStoreCoordinator = newCoordinator + let fetchRequest = NSFetchRequest(entityName: "AppRatingPromptEntity") + let count = try context.count(for: fetchRequest) + XCTAssertGreaterThan(count, 0, "Migration failed, no entities found.") + + } catch { + XCTFail("Migration failed with error: \(error)") + } + + } + +} diff --git a/DuckDuckGoTests/AppRatingPromptTests.swift b/DuckDuckGoTests/AppRatingPromptTests.swift index 899034329a..f2a3186f97 100644 --- a/DuckDuckGoTests/AppRatingPromptTests.swift +++ b/DuckDuckGoTests/AppRatingPromptTests.swift @@ -29,98 +29,92 @@ class AppRatingPromptTests: XCTestCase { stub = AppRatingPromptStorageStub() } - func testWhenUserAlreadyShownThenDoesntShowAgainOnSameDay() { - - let stub = AppRatingPromptStorageStub() - - let appRatingPrompt = AppRatingPrompt(storage: stub) - appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 0)) - appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 1)) - appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 2)) - - appRatingPrompt.shown(onDate: Date().inDays(fromNow: 2)) - - XCTAssertFalse(appRatingPrompt.shouldPrompt(onDate: Date().inDays(fromNow: 2))) - - } - - func testWhenUserAccessSeventhDayAfterSkippingSomeThenShouldPrompt() { - - let appRatingPrompt = AppRatingPrompt(storage: stub) - - appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 0)) - appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 1)) - appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 2)) - appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 3)) - - appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 5)) - appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 6)) - - appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 7)) + func testPromptScenarios() { + + struct Scenario { + let currentUsageDay: Int + let firstShown: Date? + let lastShown: Date? + let shouldPrompt: Bool + } + + let scenarios = [ + Scenario(currentUsageDay: 0, firstShown: nil, lastShown: nil, shouldPrompt: false), + Scenario(currentUsageDay: 1, firstShown: nil, lastShown: nil, shouldPrompt: false), + Scenario(currentUsageDay: 2, firstShown: nil, lastShown: nil, shouldPrompt: false), + + // This is the first day that we should see first prompt + Scenario(currentUsageDay: 3, firstShown: nil, lastShown: nil, shouldPrompt: true), + + // But if not shown on that day it might happen later + Scenario(currentUsageDay: 4, firstShown: nil, lastShown: nil, shouldPrompt: true), + Scenario(currentUsageDay: 5, firstShown: nil, lastShown: nil, shouldPrompt: true), + Scenario(currentUsageDay: 6, firstShown: nil, lastShown: nil, shouldPrompt: true), + + // Showing it resets current usage day, so if first shown is set we shouldn't show the prompt again until later + Scenario(currentUsageDay: 0, firstShown: Date(), lastShown: nil, shouldPrompt: false), + Scenario(currentUsageDay: 1, firstShown: Date(), lastShown: nil, shouldPrompt: false), + Scenario(currentUsageDay: 2, firstShown: Date(), lastShown: nil, shouldPrompt: false), + Scenario(currentUsageDay: 3, firstShown: Date(), lastShown: nil, shouldPrompt: false), + + // This is the first day that we should see second prompt + Scenario(currentUsageDay: 4, firstShown: Date(), lastShown: nil, shouldPrompt: true), + + // But if not shown on that day it might happen later + Scenario(currentUsageDay: 5, firstShown: Date(), lastShown: nil, shouldPrompt: true), + Scenario(currentUsageDay: 6, firstShown: Date(), lastShown: nil, shouldPrompt: true), + Scenario(currentUsageDay: 7, firstShown: Date(), lastShown: nil, shouldPrompt: true), + + // Once last shown is set then we wouldn't show again + Scenario(currentUsageDay: 2, firstShown: Date(), lastShown: Date(), shouldPrompt: false), + Scenario(currentUsageDay: 3, firstShown: Date(), lastShown: Date(), shouldPrompt: false), + Scenario(currentUsageDay: 4, firstShown: Date(), lastShown: Date(), shouldPrompt: false), + Scenario(currentUsageDay: 5, firstShown: Date(), lastShown: Date(), shouldPrompt: false), + + // This scenario means the user migrated their database + Scenario(currentUsageDay: 3, firstShown: nil, lastShown: Date(), shouldPrompt: false), + Scenario(currentUsageDay: 4, firstShown: nil, lastShown: Date(), shouldPrompt: false), + Scenario(currentUsageDay: 5, firstShown: nil, lastShown: Date(), shouldPrompt: false), + ] + + for scenario in scenarios { + + let stub = AppRatingPromptStorageStub() + stub.firstShown = scenario.firstShown + stub.lastShown = scenario.lastShown + stub.uniqueAccessDays = scenario.currentUsageDay + + let appRatingPrompt = AppRatingPrompt(storage: stub) + XCTAssertEqual(scenario.shouldPrompt, appRatingPrompt.shouldPrompt(), "\(scenario)") + + } - XCTAssertTrue(appRatingPrompt.shouldPrompt(onDate: Date().inDays(fromNow: 7))) - } - func testWhenUserAccessFourthDayAfterSkippingSomeThenShouldNotPrompt() { - + func testWhenAppPromptIsShownThenUsageDaysIsReset() { + let stub = AppRatingPromptStorageStub() let appRatingPrompt = AppRatingPrompt(storage: stub) + appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 0)) appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 1)) appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 2)) appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 6)) - XCTAssertFalse(appRatingPrompt.shouldPrompt(onDate: Date().inDays(fromNow: 6))) - } + appRatingPrompt.shown() - func testWhenUserAccessThirdDayAfterSkippingOneThenShouldPrompt() { - - let stub = AppRatingPromptStorageStub() - - let appRatingPrompt = AppRatingPrompt(storage: stub) - appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 0)) - appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 1)) - appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 3)) - XCTAssertTrue(appRatingPrompt.shouldPrompt(onDate: Date().inDays(fromNow: 3))) - + XCTAssertEqual(0, stub.uniqueAccessDays) } - func testWhenUserAccessThirdDayThenShouldPrompt() { + func testWhenRegisterUsageOnUniqueDaysThenIncrementsUsageCounter() { let stub = AppRatingPromptStorageStub() - let appRatingPrompt = AppRatingPrompt(storage: stub) - appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 0)) - appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 1)) - appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 2)) - XCTAssertTrue(appRatingPrompt.shouldPrompt(onDate: Date().inDays(fromNow: 2))) - } - func testWhenUniqueAccessDaysIsNilDueToFetchErrorThenShouldNotPrompt() { - let storage = AppRatingPromptStorageStub() - storage.uniqueAccessDays = nil - let appRatingPrompt = AppRatingPrompt(storage: storage) appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 0)) appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 1)) appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 2)) - XCTAssertFalse(appRatingPrompt.shouldPrompt(onDate: Date().inDays(fromNow: 2))) - } - - func testWhenUserAccessSecondUniqueDayThenShouldNotPrompt() { - - let stub = AppRatingPromptStorageStub() - let appRatingPrompt = AppRatingPrompt(storage: stub) - _ = appRatingPrompt.shouldPrompt(onDate: Date().inDays(fromNow: 0)) - XCTAssertFalse(appRatingPrompt.shouldPrompt(onDate: Date().inDays(fromNow: 1))) - - } - - func testWhenUserAccessSecondTimeOnFirstDayThenShouldNotPrompt() { + appRatingPrompt.registerUsage(onDate: Date().inDays(fromNow: 6)) - let stub = AppRatingPromptStorageStub() - let appRatingPrompt = AppRatingPrompt(storage: stub) - _ = appRatingPrompt.shouldPrompt(onDate: Date().inDays(fromNow: 0)) - XCTAssertFalse(appRatingPrompt.shouldPrompt(onDate: Date().inDays(fromNow: 0))) - + XCTAssertEqual(4, stub.uniqueAccessDays) } func testWhenUserAccessFirstDayThenShouldNotPrompt() { @@ -130,6 +124,8 @@ class AppRatingPromptTests: XCTestCase { private class AppRatingPromptStorageStub: AppRatingPromptStorage { + var firstShown: Date? + var lastAccess: Date? var uniqueAccessDays: Int? = 0 diff --git a/DuckDuckGoTests/AppRatingPrompt_v1/Database.sqlite b/DuckDuckGoTests/AppRatingPrompt_v1/Database.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..3d7e0ea97c81351340963dafdc3bd837461b6bfb GIT binary patch literal 45056 zcmeI)do+|={{ZkAj6q^@k7P*ha=)c8#$YlGb8|~$Fc_H`8P}9tx>3@FRH8(b+?6B| zrHcqfR8&$)q*NktdPnJ;oL}d6&RS=!_mAHFtYMyK@9(pp{r&8{$J%SwLUh3~!stkU zb|{k;hBSa6AUr$}DqrNwY zA)#zgBoz0ixig_ZH#S#3+Y|*uAY$=ONG!KSI}8EoOu#y#2<}J+jJp>1xnwfd21!8? z(Do>Tn!b^d`fQ;y4ojSSc)SoCKATOv>)g}l?&sdljr-OX_gwH#J@}($whyzZ{KfN~ zP>z`I&!2rXk?hRvxv?x)e~SaxHORnP1x`ajev2)lQ51LA`xYWb+Y4*t}WKi5#@xk!`R@h z*I>{jkG~Ir&nN!-8<1+VL+S8c@6RLu!=TJMEiGspmxw8!O{dR8QpQaMG z1jCIYqe$HOMZ$8^BcU9fk$;@2$NTfarO{|;0`dPkVE#J)`BnUXo%j5}f0HlK9`E}5 z8sR3!O@%}z{*e10tAtzoZ6tr6w@CE_5ni}7nG8+X@-5M?6NX5_6EHU1C5(5p#o|cZ zb?A&iV{NhMuVCLM)&Cy@o1gkWX!YM1SYt_OJo%5M%1xAnC!uiMi9*0)e#F2K2zUZv zc5>L_@F>!(mpw|~$oTt0Mykgv@xY~xxGOc_2N2A>h4`~o#rKnh=il{j5}aGGbDwtH zPEw(8X)`lug8R2lqMV(%NpTmbGXd}DJo^ERCAoY2w3K&#M}HdgZ@Nl$!n%+#C^VY; znPG!+{}CUD;!e)56@M%>?g-2lf1AZWEWodu_ka59f8(z+$Px$u0U!VbfB+Bx0zd!= z00AHX1c1OVCoucnJoig~Z~y@y00e*l5C8%|00;m9AOHk_01yBIzpwz<|Np{+3sM6D zKmZ5;0U!VbfB+Bx0zd!=00AH{Cjj>UU@8CsAOHk_01yBIKmZ5;0U!VbfB+Eq^##EG z|JNU5kRcEN0zd!=00AHX1b_e#00KY&2mk@F{|9pb2mk>f00e*l5C8%|00;m9AOHk_ zz^^YLG@By$|9`*!K!Xf{01yBIKmZ5;0U!VbfB+Bx0zlw@T4473f0!r*BKl0US@gK* z7VarHfB+Bx0zd!=00AHX1b_e#00KY&2mpb9B%lg|L0kj`2y`YpjP6M1aA*MxRsfpK z@@E7%(pa?_%4UXy zVOU{|u;|(SKU6ps!hL}Q2mk>f00e*l5C8%|00;m9An@N5*v{haRmdq)Xnhl7lquR) z+gQ)YRNK%PWu$GUZ;jG6F*3D58`~J7jnF1OA;Anzn67RQl!uoO#t#<|6kaGIijZ4E zMJ#ptwpnsy`_Y3b^iU3We}wg;b9X%c4DOZZTs0{=gib|>QJsjW@Gv%o<{KW)#L*+@ z!Bm98Pg=02aRTWa8%6+~6ZZ3Gpabc?>p9^}2YNIWvG^~Wpd#d*h|aU!;)KyzzI5AA z8j~K$4qZRjRVo7cm-o(voDf>z>|#J6y5JaLbQgUp!j0&laS2H&X_>{cRK&7>uy3Uz#J@((-?LH?vOn&g=WmLs2&Eq@f4;S* zA|!vhd+z@DVulj@0RAz`! z0@HQV*7(yQ#XWb5Fk55n8p;|{kt*DfR^O66ThAs`t66e((jD9@bnWzZ_reP@+dfw% zS%~Ibaa&Kk?=Xwe5SY^*q5fP_gP!2bv_p6A;9iN3c`JX z0|)?t|B}FA7?igHk>U!EB9Wym0$#KZYeU7Hk!d>@S?dVyRNKp^q_Pz!khMYo{r=s! zBm*5Qz7HB&#zn)0$C!H1MGG{LQY6yVx{`{r5}0&(q>Wd1bM}Nv{1Y+cr*)x^FHUrR zsUOVtyo*T58&O0@Koj7#m*YjF5LVfTFSf7AS4x^J>h;zqDde0lTx;H;YhdES$(F1j z9*)y=h2wI2Et`TW8V5Y3FF}>;$v15p{U_t1SEwDgmc9{B^hOA8SJai*-Vh?QaNr5< z5Fb%PJaG4F*5=UdG=)u&W0zwm zrDEeABRX~{MKoxw68zkM`p}L7+Lk4I3I=Re!EcrE%tWo&UJh-$uAJX~jUJ`AF1h=u zc9eO^wa;UUy~+3|2PP%z;z|cRCs+I?XL(KMt;4j?1imfB#5VV$6|cOot|G5~j(AwM z*Qm~(hl|X8PV)FiT&TZVfgVr4_bG+aTvFk)u;cjamar8Qt_78DvQ>ebnOh$fa?l;# z8cnN&dzMJ`EOgH^k*l#bF%@*$KHAQ^k)k7Pi|wvWd#+rs)zgkh>TXqOiXf7G;w6uD z2#MV734TE@OuA@~)p_Z-X3C0sW4WY@=DL7xSM9PR1f1UH-46w40y|FY?yXhmOn&Nd zBk}HWOX0XpFML;tAG)Ee0&iI{ASbJlXneTXUgbuK9E*5)#PC94VI#HHRDvn&*?+=D zOC|~4Qa9>apJngSFW6zDL=j7RK)LhSdz;!z#1OW<@PJ0KTVqvo5lO=>ARRXF!DLle zxU%<0h9%ZtRpsfqeKpIZUTm>xv}P0t1hF3%=q#UeusziFAaA>XPy6y&CyjN{ab(Qg#$KVJI4DyA4fuid`|V z7w=fsAtQRRk`lxkz84sp)}}e}S#EvNz2c{J`!XqKR)^-^Q9`Jv?3jSx^6pzKwm9bQ zZ!d3d?6`4!-y4OHlFakSPOF`lmp((pj0gGWD^?vpcmvyS{Gj2;DYAs1*;4)kj@r)f zagnojnaTm8^=I8pMV}&q;$etwGPnG)+yzoUP`TV;!={P!u#|zj7RM9tEVEnrH<#MYuEx#a) zj@(L+N2EJB^liczY!uYOOi)xV%WXC1YpW{WM5&0)2n{yK8PK z>4u6~Z_o70x;|7q_Fz#itYq8p(W8;NZwSS$r4f%))63+Z=&%~~1*KGJF89*2()zvn zqXhZHR(DC5Gp~u?72}+{xZy6QIqg@#vVoTIL0e8`W5 zEM40gdPiT5c6S<`#&IAn2#!d;t5BD}{QTJin}nA}4jr*Q>lJ&1wqEnV7k1&miLpFS z!|aG%*CL|!G|#*@+_*36>1bu$sKs#GcEVWO$qt5{&KNT~8n$lR-pb(z7Sr;N;@Y#` zt{je39q}vBuUt7IRO_HlwMJ;2eD>wQJ#7`;gZoT&sSSxgp*};YKpVV8XEtZW>SPbJ zn|Yxdi}2eA1w;9j6IAg&Gj5ho71BKlC2Tah>lcqNdKh{n!&v%m^fY2=t+<5`uiI_b zq=ZFc+sy^yb;$M9eSPdDntM_{_#Z!Tk^7-(AQNs$X&-vNgfi6nB35IMhh8C0{UCl+ zI8S!9pVLZ-}+6a@|KQRES&XQF4jJhvVmcb&l-gNQ4`{woR>d=oJ~- zu^(+olAp?nSNUKEpZYC0&!N75#msHL0GC0%1lz`>ak1i&E5Rch`Q*p^MqoKcJ@PT$ z_!e5O8&uOTx7(XNlDJtfBZXE_Sw13sf>CH;8vN|kg@{HGTZYN@jOOnjPxY)odSStJP;sDHu84 zcj%Sc)HaD3rR2JuONvguT(3TLN0_aX9J?x-bT#>^ZM-fRj|$;9Le$zqx9!I$BCt_Ce*G$7sh^%jUCaA>?p} zjsac4{00GbPs1XUwldzF^&-5qDL?vo_eIVbrL9@=yN#BZ^X^jPZF)AWV#1qwRM@^# zj`x1v;A9F}kIt^tym-OUII|Y^!ZJ4UNzdk<^v$My@}?1Ij;dx2pMUs#b6dZ!+{Dw* ztm~YY$syI|GBr{Y{qRY}*v-9r4URn-Y@Jk(z4oFaIykoJY(JyE z?ixG)?hxaC>!guHe*NZM@Ril_h69m%Qth&GFJ9u*w-k6z%hc546N3)%zAuyRt6dPn zbNl4yaaeWQXt%IVL*`qN+SD863y(Ftu1;ii>-0aIwCF3gY-$^dm`Q}MO1671lP!!_ z#Y^L>0?G<{Dlc;m55~4hwHah*tTtcG-uQ8&#e1Q3eVK2x#~(bRKe|=x8s!>Y`f=Ux zrAIM|kvk#_B2y<~ocgCi2ddYsxZG5|ym!2JVQ)%rYp-@Mvsb=1sN}HcmA1oEaZYpktBFLfjYe76yD2yYkM z-S){ESGMhWqej0*zihuhEwKz6g`IStBu{$rbu0^2(n&s{Rd`~>5uf}+s(U2tl3-5* z%WbqI3wA#D+2*ExTdWkpmS9Vc@S(<#%%(^=Dr)49_Jc#`w|)GwtG=*fh9964V-mR_TeK74ZRi6Uo;Muxhp+L^R7 z>Fd+4rxiCJXf}Snn0~PW9gVtQy2QE8HI@`hh;@l2iWHt|4pKc=dF14aQW6&atFKIPDLt82JRu2Zfnv&*wnD!jPH$*c6ynMb88 z!ueD9)8?I}T{Ews{WyU1A{FHWE#piKUUFXg{SjoH;Q5tcq3Kir0@D%f2Rp7(31?K|Jxt?`B*L^l|<*Rjl1q*8OG;8wZ zHg11}eRCpU_`;O>M$6TBh102B*M|az#6J)=C$G!LcNGkA#>-;k>zt^ikIy_VV7DuD zn!L&!*Pen;*-fcV6-*6IWlVKX#m>a-^Zj5vC40fva#`C;_A|M}-8{MNGQK#&J}|UAfrID++>U`GXVkwQVZOsPA`0JfzENWZf*nVvkEj~ zUvxKiO!v!ORsy*R5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5coF& E2Z9(QrvLx| literal 0 HcmV?d00001 diff --git a/DuckDuckGoTests/AppRatingPrompt_v1/Database.sqlite-wal b/DuckDuckGoTests/AppRatingPrompt_v1/Database.sqlite-wal new file mode 100644 index 0000000000000000000000000000000000000000..73a62731599f369b6d668352b879f2814b5b750c GIT binary patch literal 65952 zcmeI5du$xl6~=dG;@BJS%s7di_>tH#iS2~26R%%u@o=p?tGyNppqM;IPB?1VLs!DC8N(D-wr2;}xRhm*!wdc%s z9j_k*3AG`~S$iYvo-_B({oOk&<=gYkqz)|nS|o9zF%qeZ;49H&JhAnwcm3qHYgTMM z^+M1AO)+@amfHvJYRFyv?$D1UXslB9MU*#{7nQ@x0r-<%M1Tko0U|&IhyW2F0z`la z5CI}U1c<;VBG6S;6}h&iW)IIh0pH1epJhxtv)!@NW@aa|S%w?Cv@xy+Z40U*BbAA~ zB4Mpq6&bCGUAcGf?$Ob}@wl9!MS5#$!pt2v=~ltu z#$`^PnRauuDw3+H8FAe`kZEUjdrsaBcG!U#Ou%%i;60@a9DDHA1K-)-SdY3uRCzE0 zzw{ykM1Tko0U|&IhyW2F0z`la5CI}U1kNUb>!YzqG`2vjzC{uv$2@VN_u=Npo;!8; z=*fdds)zOV53;n*2GgnTw2|!VOLcb-@w73-`*~jvV=30h2UvG9-9OZ8u%4a)Lt`3G zceC#9{vMcCMZLg@FCF@(v-z*RlJX+d3k+kuz%bPdoXy3jv55c?AOb{y2oM1xKm>>Y z5g-CY;4?~~Dg1&yI>#6E9cQCn04O!jP3jEw0t@h{vX9`&Lyy1kj|YE#Bi0La)IJ=E zUm1T&xk-6KUM%m8|6S@+UadVY-!4Bd<)p`IKa8(e7AU)=H>H2Y?}`6Gxkq_PPRg#- zAnmJtxb_wK0r_?5ko0oAE^aI6SfCdXAOb{y2oM1xKm>>Y5g-DemO$gmD)`ngDd<_| zSxyjepIer%>P~*yB8()2@$qpr;1+xvXjx3sletEH(k}ybgWjnVxk#!&f!S$@s1l;CZZU zz|7&&VBBYR#!mzu6h%WFv}*7!_&-@Rwkr&41rN@a+wc!d2MNvNron9udWFRLWtg~5 z7-yC>5qPHShP_vx?w#3Vz{PdOxi{ftSQu_8g^Q+NV3xjTeaI_6yXE0C($1dcWWsLU=&_3Y@T+e#EX!7yWHn<35rEQRRfC$b-4ZP(` zv3-MJ@W3)HiwB%R5xQ#RmegaQBcx~}7}cI^g%Wr?0o+SPmdh{?s@@^p^#Q+XTkTC4 z-(ETf_LNr0LyloXM%D=&9I|;Krj)kbn91Nb?-WZj$S-TgSm_)M*L8i>*KrFq*PcGc zWG)M`*i*h>L#=yz+vy>pWmVSP>XikVocdmI@o}408{n@D8#pe5bU}ROc+Jz9v@G@*m^b*q8)vEytxLuAVPKl{pez@AqjTsEtDD4Bm^({!sB0Imis6{^D-NCF zwb3)H4QpD&;nEPZrG|zMaaS1oSe-#wBCd;8iVVxjoz9^!RAX!&d7-6M9Er}aEz~R) zyP_4s!iskBis;9x3epO3Q*=H_p&b`#E2qBeagnArt zJ`JI&P266}o?Ad@DsP*a>cPVD8C6IJ6Cyhu4C0qKv^pLz& zu9CklJM#PTQScnBl7B1TuM8+LrDOWfxwN!&u0((c5CI}U1c(3;AOb{y2%KL8+ElEi z-U5~RIV{k2EtAn{!|;7aH=)$NRPf!6(NbN#i>3fO zlh7uNjN?!0ld5Yq^kRIypu=~^Oy@2$JshUK2bpEU&CRsLuk^dSaicDt)&rblxwoTZ+MR08Q#+;Fz zRQ($ZCfA^_9xMr(s#}d)OI>w+1gz*Wb~EZ>Nc4FdQR#?(@e;N$>5LBn=%&Ji#-bg9aCHZrIkE^%yHT zYBHu%@uH&rD)j(Oi2inj^*gg&*s76 zgZ;v_Ug0Bn`;i@Ah+TYpJ^Bb*rHv73qjW_2wscJPr5mK*$Su-I`BC{kMV5ajpHi+- z*2q!0Q~sj-4aHDiQXW_Cm7kRg%5CyyWl(uX9-01getoLYY={66AOb{y2oM1xKm>>Y z5g-Cc0PD=>RU6c1aVR>s)Q~LK-p{2obffcPhRD#1=7mayp$82L^T-SRXw;ZPTj;~C zX9x?avUy{cs?fPeY>Jj7g#qkv4n3i(JdwG?grV|5Gn9n2XhoPVBMg=kXJ`oPFmbwo zFpLHDv(3vLoQ3OB7Z(>Y5g-CYfC!vb0@n#KZ~=&7^(~U9 zom?rpPi=nexl@Oao;=u}HuN4XsijjxhS5Ki))_Z?dXn8eNj8ug(9%Q3;DFJir3QF< zFg=hOPeVZMZLi84?no$jo03}kLm@^>VnhYM1Tko0U|&IhyW2F z0z`la5CJ0a*(Y$udV$y;o_7Mi6CO>-GI0BW?G8LBFtd}{@EAm6mo^3uqHKeQ4vy5+ zOi$z$34q~$T`y1#V@%Zx)J52#Ur76IE!7LW7g65(>@NhJArT+~M1Tko0U|&IhyW2F z0z`la5CJ0aNeI+MtD)|orlz`T>Y5g-CYfCvx)B5(l{ILGP*Vk54*2W~iEXLft=SdL%^Ja8hIfb|pMJykDY ztUB=Y*M?uYyHqc5Dx#dafLEBNP6UVm5g-CYfCvx)B0vO)01+SpMBw}+Pz{9xu^3hg z%+Lj{yhHf)y;r~WPx29*p9@d3A_7E!2oM1xKm>>Y5g-CYfCvzQ3z-1=2x8G#bwofP z!AG5m=Yd8=y}+HHzpL|^>tEVOy1<3JPiXE$fCvx)B0vO)01+SpM1Tko0U~gI5}48j OM9>9_Pu_9)zW)F^iwtT2 literal 0 HcmV?d00001 From ae36b3fb73e367b9953597aa670a9b4b645ce165 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20=C5=9Apiewak?= Date: Wed, 10 Apr 2024 15:09:40 +0200 Subject: [PATCH 11/63] Update set-as-default onboarding illustration for dark mode (#2694) --- DuckDuckGo.xcodeproj/project.pbxproj | 4 + DuckDuckGo/Base.lproj/Onboarding.storyboard | 94 +++++------------- .../DaxOnboardingPadViewController.swift | 1 + .../Contents.json | 2 +- .../Default-Browser.svg | 33 ++++++ .../illustration.pdf | Bin 111042 -> 0 bytes DuckDuckGo/OnboardingButtonsView.swift | 56 +++++++++++ ...boardingDefaultBroswerViewController.swift | 2 +- DuckDuckGo/OnboardingViewController.swift | 92 ++++++++++++----- DuckDuckGo/Theme+DesignSystem.swift | 3 + DuckDuckGo/Theme.swift | 3 + .../DuckUI/Sources/DuckUI/Button.swift | 52 +++++++--- 12 files changed, 234 insertions(+), 108 deletions(-) create mode 100644 DuckDuckGo/Onboarding.xcassets/OnboardingDefaultBrowserImage.imageset/Default-Browser.svg delete mode 100644 DuckDuckGo/Onboarding.xcassets/OnboardingDefaultBrowserImage.imageset/illustration.pdf create mode 100644 DuckDuckGo/OnboardingButtonsView.swift diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index 39f9bbc866..47f83b0043 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -318,6 +318,7 @@ 6AC6DAB328804F97002723C0 /* BarsAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AC6DAB228804F97002723C0 /* BarsAnimator.swift */; }; 6AC98419288055C1005FA9CA /* BarsAnimatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AC98418288055C1005FA9CA /* BarsAnimatorTests.swift */; }; 6F655BE22BAB289E00AC3597 /* DefaultTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F655BE12BAB289E00AC3597 /* DefaultTheme.swift */; }; + 6F8496412BC3D8EE00ADA54E /* OnboardingButtonsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F8496402BC3D8EE00ADA54E /* OnboardingButtonsView.swift */; }; 6FDA1FB32B59584400AC962A /* AddressDisplayHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FDA1FB22B59584400AC962A /* AddressDisplayHelper.swift */; }; 83004E802193BB8200DA013C /* WKNavigationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83004E7F2193BB8200DA013C /* WKNavigationExtension.swift */; }; 83004E862193E5ED00DA013C /* TabViewControllerBrowsingMenuExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83004E852193E5ED00DA013C /* TabViewControllerBrowsingMenuExtension.swift */; }; @@ -1433,6 +1434,7 @@ 6AC6DAB228804F97002723C0 /* BarsAnimator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BarsAnimator.swift; sourceTree = ""; }; 6AC98418288055C1005FA9CA /* BarsAnimatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BarsAnimatorTests.swift; sourceTree = ""; }; 6F655BE12BAB289E00AC3597 /* DefaultTheme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultTheme.swift; sourceTree = ""; }; + 6F8496402BC3D8EE00ADA54E /* OnboardingButtonsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingButtonsView.swift; sourceTree = ""; }; 6FB030C7234331B400A10DB9 /* Configuration.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Configuration.xcconfig; path = Configuration/Configuration.xcconfig; sourceTree = ""; }; 6FDA1FB22B59584400AC962A /* AddressDisplayHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddressDisplayHelper.swift; sourceTree = ""; }; 83004E7F2193BB8200DA013C /* WKNavigationExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WKNavigationExtension.swift; sourceTree = ""; }; @@ -5400,6 +5402,7 @@ F4B0B795252CB35700830156 /* OnboardingWidgetsDetailsViewController.swift */, 851B128B2220483A004781BC /* OnboardingViewController.swift */, F47E53DA250A9A1C0037C686 /* Onboarding.xcassets */, + 6F8496402BC3D8EE00ADA54E /* OnboardingButtonsView.swift */, ); name = Onboarding; sourceTree = ""; @@ -6612,6 +6615,7 @@ D6E83C2E2B1EA06E006C8AFB /* SettingsViewModel.swift in Sources */, 8590CB612684D0600089F6BF /* CookieDebugViewController.swift in Sources */, 319A37152829A55F0079FBCE /* AutofillListItemTableViewCell.swift in Sources */, + 6F8496412BC3D8EE00ADA54E /* OnboardingButtonsView.swift in Sources */, 1EA513782866039400493C6A /* TrackerAnimationLogic.swift in Sources */, 854A01332A558B3A00FCC628 /* UIView+Constraints.swift in Sources */, C12726EE2A5FF88C00215B02 /* EmailSignupPromptView.swift in Sources */, diff --git a/DuckDuckGo/Base.lproj/Onboarding.storyboard b/DuckDuckGo/Base.lproj/Onboarding.storyboard index 2df197cfe4..d052444b85 100644 --- a/DuckDuckGo/Base.lproj/Onboarding.storyboard +++ b/DuckDuckGo/Base.lproj/Onboarding.storyboard @@ -1,9 +1,9 @@ - + - + @@ -35,10 +35,10 @@ - + - + - + - - - - - - + + - - - - - + - - - - - - + - - - + + + - - - - + - - @@ -262,14 +219,13 @@ - - +