diff --git a/Core/Pixel.swift b/Core/Pixel.swift index 1ff9d94a62c..7d8370a3301 100644 --- a/Core/Pixel.swift +++ b/Core/Pixel.swift @@ -139,9 +139,6 @@ public enum PixelName: String { case widgetNewSearch = "m_w_ns" case defaultBrowserButtonPressedSettings = "m_db_s" - case defaultBrowserButtonPressedHome = "m_db_h" - case defaultBrowserHomeMessageShown = "m_db_h_s" - case defaultBrowserHomeMessageDismissed = "m_db_h_d" case widgetsOnboardingCTAPressed = "m_o_w_a" case widgetsOnboardingDeclineOptionPressed = "m_o_w_d" @@ -171,6 +168,10 @@ public enum PixelName: String { case textSizeSettingsShown = "m_text_size_settings_shown" case textSizeSettingsChanged = "m_text_size_settings_changed" + case widgetEducationOpenedFromHomeScreen = "m_widget_education_opened_from_home" + case widgetEducationOpenedFromSettings = "m_widget_education_opened_from_settings" + case widgetEducationDismissed = "m_widget_education_dismissed" + case jsAlertShown = "m_js_alert_shown" case jsAlertBlocked = "m_js_alert_blocked" diff --git a/Core/UserDefaultsPropertyWrapper.swift b/Core/UserDefaultsPropertyWrapper.swift index 71988280de5..135f41f15f2 100644 --- a/Core/UserDefaultsPropertyWrapper.swift +++ b/Core/UserDefaultsPropertyWrapper.swift @@ -55,7 +55,7 @@ public struct UserDefaultsWrapper { case legacyCovidInfo = "com.duckduckgo.ios.home.covidInfo" - case homeDefaultBrowserMessageDateDismissed = "com.duckduckgo.ios.homeMessage.defaultBrowser.dateDismissed" + case homeWidgetEducationMessageDismissed = "com.duckduckgo.ios.homeMessage.widgetEducation.dismissed" case lastConfigurationRefreshDate = "com.duckduckgo.ios.lastConfigurationRefreshDate" diff --git a/Core/VariantManager.swift b/Core/VariantManager.swift index 429e6e8e990..c0cdb5a5567 100644 --- a/Core/VariantManager.swift +++ b/Core/VariantManager.swift @@ -26,6 +26,7 @@ public enum FeatureName: String { // Used for unit tests case dummy case voiceSearch + case widgetEducation case parameterStripping } @@ -44,9 +45,8 @@ public struct Variant { static let iOS15 = { () -> Bool in if #available(iOS 15, *) { return true - } else { - return false } + return false } static let supportsOnDeviceRecognizer = { SFSpeechRecognizer()?.supportsOnDeviceRecognition ?? false } @@ -54,6 +54,13 @@ public struct Variant { static let isIOS15EnglishWithOnDeviceSpeech = { return inEnglish() && iOS15() && supportsOnDeviceRecognizer() } + + static let supportsWidgets = { () -> Bool in + if #available(iOS 14, *) { + return true + } + return false + } } static let doNotAllocate = 0 @@ -66,11 +73,14 @@ public struct Variant { Variant(name: "sd", weight: doNotAllocate, isIncluded: When.always, features: []), Variant(name: "se", weight: doNotAllocate, isIncluded: When.always, features: []), - Variant(name: "ma", weight: 1, isIncluded: When.isIOS15EnglishWithOnDeviceSpeech, features: [.voiceSearch]), - Variant(name: "mb", weight: 1, isIncluded: When.isIOS15EnglishWithOnDeviceSpeech, features: []), - + Variant(name: "ma", weight: doNotAllocate, isIncluded: When.isIOS15EnglishWithOnDeviceSpeech, features: [.voiceSearch]), + Variant(name: "mb", weight: doNotAllocate, isIncluded: When.isIOS15EnglishWithOnDeviceSpeech, features: []), + Variant(name: "mc", weight: 1, isIncluded: When.always, features: [.parameterStripping]), - Variant(name: "md", weight: 1, isIncluded: When.always, features: []) + Variant(name: "md", weight: 1, isIncluded: When.always, features: []), + + Variant(name: "me", weight: 1, isIncluded: When.supportsWidgets, features: [.widgetEducation]), + Variant(name: "mf", weight: 1, isIncluded: When.supportsWidgets, features: []) ] public let name: String diff --git a/DuckDuckGo.xcodeproj/project.pbxproj b/DuckDuckGo.xcodeproj/project.pbxproj index b0307f486fd..a2a3595c064 100644 --- a/DuckDuckGo.xcodeproj/project.pbxproj +++ b/DuckDuckGo.xcodeproj/project.pbxproj @@ -482,6 +482,15 @@ AAF2E28523E0496F00962AF8 /* AppIconGreen83.5x83.5@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AAF2E28423E0496F00962AF8 /* AppIconGreen83.5x83.5@2x.png */; }; AAF2E28723E0498200962AF8 /* AppIconPurple83.5x83.5@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AAF2E28623E0498100962AF8 /* AppIconPurple83.5x83.5@2x.png */; }; AAF2E28B23E049DF00962AF8 /* AppIconYellow83.5x83.5@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = AAF2E28A23E049DF00962AF8 /* AppIconYellow83.5x83.5@2x.png */; }; + CB9B8739278C8E72001F4906 /* WidgetEducationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB9B8738278C8E72001F4906 /* WidgetEducationViewController.swift */; }; + CB9B873C278C8FEA001F4906 /* WidgetEducationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB9B873B278C8FEA001F4906 /* WidgetEducationView.swift */; }; + CB9B873E278C93C2001F4906 /* HomeMessage.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CB9B873D278C93C2001F4906 /* HomeMessage.xcassets */; }; + CBD4F13C279EBF4A00B20FD7 /* HomeMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBD4F13B279EBF4A00B20FD7 /* HomeMessage.swift */; }; + CBD4F13D279EBFA000B20FD7 /* HomeMessageCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBF14FC627970C8A001D94D0 /* HomeMessageCollectionViewCell.swift */; }; + CBD4F13E279EBFAB00B20FD7 /* HomeMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBF14FC227970072001D94D0 /* HomeMessageView.swift */; }; + CBD4F13F279EBFAF00B20FD7 /* HomeMessageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBF14FC427970AB0001D94D0 /* HomeMessageViewModel.swift */; }; + CBD4F140279EBFB300B20FD7 /* SwiftUICollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB1AEFB02799AA940031AE3D /* SwiftUICollectionViewCell.swift */; }; + CBD4F141279EBFC500B20FD7 /* WidgetEducationHomeMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB1AEFB4279AF5AA0031AE3D /* WidgetEducationHomeMessage.swift */; }; EA39B7E2268A1A35000C62CD /* privacy-reference-tests in Resources */ = {isa = PBXBuildFile; fileRef = EA39B7E1268A1A35000C62CD /* privacy-reference-tests */; }; EAB19EDA268963510015D3EA /* DomainMatchingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB19ED9268963510015D3EA /* DomainMatchingTests.swift */; }; F10307391E7C5E310059FEC7 /* NoBookmarksCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F10307381E7C5E310059FEC7 /* NoBookmarksCell.swift */; }; @@ -592,8 +601,6 @@ F41C2DA526C1975E00F9A760 /* BookmarksCoreDataStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = F41C2DA426C1975E00F9A760 /* BookmarksCoreDataStorage.swift */; }; F42EF9312614BABE00101FB9 /* ActionSheetDaxDialogViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F42EF9302614BABD00101FB9 /* ActionSheetDaxDialogViewController.swift */; }; F446B9B5251150AC00324016 /* HomeMessageViewSectionRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F446B9B4251150AC00324016 /* HomeMessageViewSectionRenderer.swift */; }; - F446B9B725115C1700324016 /* HomeMessageCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F446B9B625115C1700324016 /* HomeMessageCell.xib */; }; - F446B9B925115F9700324016 /* HomeMessageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F446B9B825115F9700324016 /* HomeMessageCell.swift */; }; F456B3B525810BB900B79B90 /* FireButtonAnimationSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F456B3B425810BB900B79B90 /* FireButtonAnimationSettingsViewController.swift */; }; F45B37762760183800CDCCA9 /* BookmarkItemDetailsDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = F45B37752760183800CDCCA9 /* BookmarkItemDetailsDataSource.swift */; }; F45B37792760277500CDCCA9 /* BookmarkFoldersSectionDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = F45B37782760277500CDCCA9 /* BookmarkFoldersSectionDataSource.swift */; }; @@ -611,9 +618,7 @@ F4D1BFA42587EA0600469046 /* Lottie in Frameworks */ = {isa = PBXBuildFile; productRef = F4D1BFA32587EA0600469046 /* Lottie */; }; F4D7220E26F15529007D6193 /* AddOrEditBookmarkViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4D7220D26F15529007D6193 /* AddOrEditBookmarkViewController.swift */; }; F4D7221026F29A70007D6193 /* BookmarkDetailsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4D7220F26F29A70007D6193 /* BookmarkDetailsCell.swift */; }; - F4D9C4F72511711800814B71 /* HomeMessageModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4D9C4F62511711800814B71 /* HomeMessageModel.swift */; }; F4D9C4FA25117A0F00814B71 /* HomeMessageStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4D9C4F925117A0F00814B71 /* HomeMessageStorage.swift */; }; - F4D9C4FC2514BBCF00814B71 /* HomeCells.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F4D9C4FB2514BBCF00814B71 /* HomeCells.xcassets */; }; F4E1936625AF722F001D2666 /* HighlightCutOutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4E1936525AF722F001D2666 /* HighlightCutOutView.swift */; }; F4F6DFB226E6AEC100ED7E12 /* AddOrEditBookmarkFolderViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F6DFB126E6AEC100ED7E12 /* AddOrEditBookmarkFolderViewController.swift */; }; F4F6DFB426E6B63700ED7E12 /* BookmarkFolderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F6DFB326E6B63700ED7E12 /* BookmarkFolderCell.swift */; }; @@ -1832,6 +1837,15 @@ AAF2E28423E0496F00962AF8 /* AppIconGreen83.5x83.5@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "AppIconGreen83.5x83.5@2x.png"; sourceTree = ""; }; AAF2E28623E0498100962AF8 /* AppIconPurple83.5x83.5@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "AppIconPurple83.5x83.5@2x.png"; sourceTree = ""; }; AAF2E28A23E049DF00962AF8 /* AppIconYellow83.5x83.5@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "AppIconYellow83.5x83.5@2x.png"; sourceTree = ""; }; + CB1AEFB02799AA940031AE3D /* SwiftUICollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUICollectionViewCell.swift; sourceTree = ""; }; + CB1AEFB4279AF5AA0031AE3D /* WidgetEducationHomeMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetEducationHomeMessage.swift; sourceTree = ""; }; + CB9B8738278C8E72001F4906 /* WidgetEducationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetEducationViewController.swift; sourceTree = ""; }; + CB9B873B278C8FEA001F4906 /* WidgetEducationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetEducationView.swift; sourceTree = ""; }; + CB9B873D278C93C2001F4906 /* HomeMessage.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = HomeMessage.xcassets; sourceTree = ""; }; + CBD4F13B279EBF4A00B20FD7 /* HomeMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeMessage.swift; sourceTree = ""; }; + CBF14FC227970072001D94D0 /* HomeMessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeMessageView.swift; sourceTree = ""; }; + CBF14FC427970AB0001D94D0 /* HomeMessageViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeMessageViewModel.swift; sourceTree = ""; }; + CBF14FC627970C8A001D94D0 /* HomeMessageCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeMessageCollectionViewCell.swift; sourceTree = ""; }; EA39B7E1268A1A35000C62CD /* privacy-reference-tests */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "privacy-reference-tests"; path = "submodules/privacy-reference-tests"; sourceTree = SOURCE_ROOT; }; EAB19ED9268963510015D3EA /* DomainMatchingTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DomainMatchingTests.swift; sourceTree = ""; }; F10307381E7C5E310059FEC7 /* NoBookmarksCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NoBookmarksCell.swift; sourceTree = ""; }; @@ -1956,8 +1970,6 @@ F41C2DA426C1975E00F9A760 /* BookmarksCoreDataStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksCoreDataStorage.swift; sourceTree = ""; }; F42EF9302614BABD00101FB9 /* ActionSheetDaxDialogViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActionSheetDaxDialogViewController.swift; sourceTree = ""; }; F446B9B4251150AC00324016 /* HomeMessageViewSectionRenderer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomeMessageViewSectionRenderer.swift; sourceTree = ""; }; - F446B9B625115C1700324016 /* HomeMessageCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeMessageCell.xib; sourceTree = ""; }; - F446B9B825115F9700324016 /* HomeMessageCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeMessageCell.swift; sourceTree = ""; }; F456B3B425810BB900B79B90 /* FireButtonAnimationSettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FireButtonAnimationSettingsViewController.swift; sourceTree = ""; }; F45B37752760183800CDCCA9 /* BookmarkItemDetailsDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarkItemDetailsDataSource.swift; sourceTree = ""; }; F45B37782760277500CDCCA9 /* BookmarkFoldersSectionDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarkFoldersSectionDataSource.swift; sourceTree = ""; }; @@ -1970,9 +1982,7 @@ F4D349D025502AC3002AAF35 /* EmailWaitlistViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmailWaitlistViewController.swift; sourceTree = ""; }; F4D7220D26F15529007D6193 /* AddOrEditBookmarkViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddOrEditBookmarkViewController.swift; sourceTree = ""; }; F4D7220F26F29A70007D6193 /* BookmarkDetailsCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarkDetailsCell.swift; sourceTree = ""; }; - F4D9C4F62511711800814B71 /* HomeMessageModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeMessageModel.swift; sourceTree = ""; }; F4D9C4F925117A0F00814B71 /* HomeMessageStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeMessageStorage.swift; sourceTree = ""; }; - F4D9C4FB2514BBCF00814B71 /* HomeCells.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = HomeCells.xcassets; sourceTree = ""; }; F4E1936525AF722F001D2666 /* HighlightCutOutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HighlightCutOutView.swift; sourceTree = ""; }; F4F6DFB126E6AEC100ED7E12 /* AddOrEditBookmarkFolderViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddOrEditBookmarkFolderViewController.swift; sourceTree = ""; }; F4F6DFB326E6B63700ED7E12 /* BookmarkFolderCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarkFolderCell.swift; sourceTree = ""; }; @@ -2656,12 +2666,9 @@ children = ( 9865DFFC22A84CF300D27829 /* FavoriteHomeCell.xib */, 85B9CB8821AEBDD5009001F1 /* FavoriteHomeCell.swift */, - F446B9B625115C1700324016 /* HomeMessageCell.xib */, - F446B9B825115F9700324016 /* HomeMessageCell.swift */, 984E291A22CD68D600EE7154 /* PrivacyProtectionHomeCell.xib */, 984E291822CD67B500EE7154 /* PrivacyProtectionHomeCell.swift */, 989B337422D7EF2100437824 /* EmptyCollectionReusableView.swift */, - F4D9C4FB2514BBCF00814B71 /* HomeCells.xcassets */, ); name = Cells; sourceTree = ""; @@ -3023,6 +3030,23 @@ name = Red; sourceTree = ""; }; + CB1AEFB6279AF6420031AE3D /* WidgetEducation */ = { + isa = PBXGroup; + children = ( + CB1AEFB4279AF5AA0031AE3D /* WidgetEducationHomeMessage.swift */, + CB9B8738278C8E72001F4906 /* WidgetEducationViewController.swift */, + CB9B873B278C8FEA001F4906 /* WidgetEducationView.swift */, + ); + name = WidgetEducation; + sourceTree = ""; + }; + CB9B873A278C8FD5001F4906 /* AddWidget */ = { + isa = PBXGroup; + children = ( + ); + name = AddWidget; + sourceTree = ""; + }; EA7EFE662677F5BD0075464E /* PrivacyReferenceTests */ = { isa = PBXGroup; children = ( @@ -3124,6 +3148,7 @@ F11CEF581EBB66C80088E4D7 /* Tutorials */ = { isa = PBXGroup; children = ( + CB9B873A278C8FD5001F4906 /* AddWidget */, 858650CF2469BCC100C36F8A /* DaxOnboarding */, 85EE7F53224667C3000FE757 /* WebContainer */, 85C11E4A209084DE00BFFEB4 /* HomeRow */, @@ -3847,8 +3872,14 @@ F4D9C4F8251179CC00814B71 /* HomeMessages */ = { isa = PBXGroup; children = ( - F4D9C4F62511711800814B71 /* HomeMessageModel.swift */, + CB9B873D278C93C2001F4906 /* HomeMessage.xcassets */, + CBD4F13B279EBF4A00B20FD7 /* HomeMessage.swift */, F4D9C4F925117A0F00814B71 /* HomeMessageStorage.swift */, + CBF14FC427970AB0001D94D0 /* HomeMessageViewModel.swift */, + CBF14FC227970072001D94D0 /* HomeMessageView.swift */, + CBF14FC627970C8A001D94D0 /* HomeMessageCollectionViewCell.swift */, + CB1AEFB02799AA940031AE3D /* SwiftUICollectionViewCell.swift */, + CB1AEFB6279AF6420031AE3D /* WidgetEducation */, ); name = HomeMessages; sourceTree = ""; @@ -4235,7 +4266,6 @@ AA4D6AB823DE4D15007E8790 /* AppIconYellow29x29@2x.png in Resources */, 984147C024F026A300362052 /* Tab.storyboard in Resources */, AA4D6AE123DE4D33007E8790 /* AppIconGreen76x76@2x.png in Resources */, - F4D9C4FC2514BBCF00814B71 /* HomeCells.xcassets in Resources */, AA4D6A9123DE49A5007E8790 /* AppIconBlack60x60@3x.png in Resources */, AA4D6A8E23DE49A5007E8790 /* AppIconBlack60x60@2x.png in Resources */, AA4D6AC023DE4D15007E8790 /* AppIconYellow76x76@2x.png in Resources */, @@ -4298,7 +4328,6 @@ F1ED309D1EDC2EA400651986 /* TabSwitcher.storyboard in Resources */, 982686B92600C0960011A8D6 /* ActionMessageView.xib in Resources */, F4F7F10A25813FE200045D62 /* 01_Fire_really_small.json in Resources */, - F446B9B725115C1700324016 /* HomeMessageCell.xib in Resources */, 8517D98B221783A0006A8DD0 /* FindInPage.xcassets in Resources */, 984147C924F02E9E00362052 /* DaxOnboarding.storyboard in Resources */, 858650DB246B111900C36F8A /* DaxOnboarding.xcassets in Resources */, @@ -4328,6 +4357,7 @@ 98EF177D21837E35006750C1 /* new_tab_dark.json in Resources */, 85C2970A247EB7AA0063A335 /* Text.xcassets in Resources */, 98788E9A2521DA1E00D55218 /* Localizable.stringsdict in Resources */, + CB9B873E278C93C2001F4906 /* HomeMessage.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4561,10 +4591,12 @@ 853C5F6121C277C7001F7A05 /* global.swift in Sources */, F13B4BD31F1822C700814661 /* Tab.swift in Sources */, F1BE54581E69DE1000FCF649 /* TutorialSettings.swift in Sources */, + CBD4F141279EBFC500B20FD7 /* WidgetEducationHomeMessage.swift in Sources */, 858650D12469BCDE00C36F8A /* DaxDialogs.swift in Sources */, 98196CFA23AA75D0007809AC /* OnboardingHomeRowViewController.swift in Sources */, 98D98A7425ED88D100D8E3DF /* BrowsingMenuEntryViewCell.swift in Sources */, 98F3A1D8217B37010011A0D4 /* Theme.swift in Sources */, + CB9B873C278C8FEA001F4906 /* WidgetEducationView.swift in Sources */, 85F200002215C17B006BB258 /* FindInPage.swift in Sources */, 85BD869D1FAA08C400252411 /* PrivacyProtectionEncryptionDetailController.swift in Sources */, F1386BA41E6846C40062FC3C /* TabDelegate.swift in Sources */, @@ -4575,6 +4607,7 @@ 8586A10D24CBA7070049720E /* FindInPageActivity.swift in Sources */, 8C4838B5221C8F7F008A6739 /* GestureToolbarButton.swift in Sources */, 986C7FA92417ADE700A3557D /* ReportBrokenSiteViewController.swift in Sources */, + CB9B8739278C8E72001F4906 /* WidgetEducationViewController.swift in Sources */, F4D9C4FA25117A0F00814B71 /* HomeMessageStorage.swift in Sources */, AA3D854523D9942200788410 /* AppIconSettingsViewController.swift in Sources */, 8565A3411FC4F78D00239327 /* PrivacyProtectionErrorController.swift in Sources */, @@ -4589,10 +4622,8 @@ 982E5630222C3D5B008D861B /* FeedbackPickerViewController.swift in Sources */, 85DFEDED24C7CCA500973FE7 /* AppWidthObserver.swift in Sources */, 85200F9D1FBC5A1C001AF290 /* NetworkLeaderboard.swift in Sources */, - F446B9B925115F9700324016 /* HomeMessageCell.swift in Sources */, F47E53D9250A97330037C686 /* OnboardingDefaultBroswerViewController.swift in Sources */, F13B4BD51F183B3600814661 /* TabsModelPersistenceExtension.swift in Sources */, - F4D9C4F72511711800814B71 /* HomeMessageModel.swift in Sources */, 980891A52237D4F500313A70 /* FeedbackNavigator.swift in Sources */, 98DD03D025064FD20017FE36 /* PrivacyProtectionHeaderCell.swift in Sources */, 85058366219AE9EA00ED4EDB /* HomePageConfiguration.swift in Sources */, @@ -4659,14 +4690,17 @@ 986C7FA724171C6000A3557D /* BrokenSiteCategories.swift in Sources */, 98DA6ECA2181E41F00E65433 /* ThemeManager.swift in Sources */, F1CA3C3B1F045B65005FADB3 /* Authenticator.swift in Sources */, + CBD4F13D279EBFA000B20FD7 /* HomeMessageCollectionViewCell.swift in Sources */, 8505836D219F424500ED4EDB /* Point.swift in Sources */, 981FED76220464EF008488D7 /* AutoClearSettingsModel.swift in Sources */, 984FD95823018E6700B3E4DE /* LocalNotifications.swift in Sources */, 83004E882193E8C700DA013C /* TabViewControllerLongPressMenuExtension.swift in Sources */, 98F78B8E22419093007CACF4 /* ThemableNavigationController.swift in Sources */, + CBD4F140279EBFB300B20FD7 /* SwiftUICollectionViewCell.swift in Sources */, F1D796EC1E7AB8930019D451 /* SaveBookmarkActivity.swift in Sources */, F4B0B78C252CAFF700830156 /* OnboardingWidgetsViewController.swift in Sources */, 8531A08E1F9950E6000484F0 /* UnprotectedSitesViewController.swift in Sources */, + CBD4F13C279EBF4A00B20FD7 /* HomeMessage.swift in Sources */, F1D477C61F2126CC0031ED49 /* OmniBarState.swift in Sources */, 85F2FFCD2211F615006BB258 /* MainViewController+KeyCommands.swift in Sources */, 858650D9246B0D3C00C36F8A /* DaxOnboardingViewController.swift in Sources */, @@ -4715,6 +4749,7 @@ 4B15817626706A2200F34D16 /* EmailProtectionViewController.swift in Sources */, F159BDA41F0BDB5A00B4A01D /* TabViewController.swift in Sources */, F103076B1E800DC30059FEC7 /* BookmarksManager.swift in Sources */, + CBD4F13E279EBFAB00B20FD7 /* HomeMessageView.swift in Sources */, 851DFD87212C39D300D95F20 /* TabSwitcherButton.swift in Sources */, F45B37792760277500CDCCA9 /* BookmarkFoldersSectionDataSource.swift in Sources */, 8505836A219F424500ED4EDB /* UIAlertControllerExtension.swift in Sources */, @@ -4758,6 +4793,7 @@ 85200FA41FBC607E001AF290 /* NetworkLeaderboard.xcdatamodeld in Sources */, 85BA58551F34F49E00C6E8CA /* AppUserDefaults.swift in Sources */, 8505836C219F424500ED4EDB /* TextFieldWithInsets.swift in Sources */, + CBD4F13F279EBFAF00B20FD7 /* HomeMessageViewModel.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/DuckDuckGo/AppDelegate.swift b/DuckDuckGo/AppDelegate.swift index 0e164bf288f..19909a6b26e 100644 --- a/DuckDuckGo/AppDelegate.swift +++ b/DuckDuckGo/AppDelegate.swift @@ -54,6 +54,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { // swiftlint:disable function_body_length func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + #if targetEnvironment(simulator) if ProcessInfo.processInfo.environment["UITESTING"] == "true" { // Disable hardware keyboards. @@ -123,6 +124,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { UNUserNotificationCenter.current().delegate = self window?.windowScene?.screenshotService?.delegate = self + ThemeManager.shared.updateUserInterfaceStyle(window: window) appIsLaunching = true return true @@ -273,12 +275,14 @@ class AppDelegate: UIResponder, UIApplicationDelegate { mainViewController?.newTab(reuseExisting: true) if url.getParam(name: "w") != nil { Pixel.fire(pixel: .widgetNewSearch) + HomePageConfiguration().dismissHomeMessage(.widgetEducation) mainViewController?.enterSearch() } } else if AppDeepLinks.isLaunchFavorite(url: url) { let query = AppDeepLinks.query(fromLaunchFavorite: url) mainViewController?.loadQueryInNewTab(query, reuseExisting: true) Pixel.fire(pixel: .widgetFavoriteLaunch) + HomePageConfiguration().dismissHomeMessage(.widgetEducation) } else if AppDeepLinks.isQuickLink(url: url) { let query = AppDeepLinks.query(fromQuickLink: url) mainViewController?.loadQueryInNewTab(query, reuseExisting: true) diff --git a/DuckDuckGo/AppDependencyProvider.swift b/DuckDuckGo/AppDependencyProvider.swift index fb9adb7feeb..54930e205c7 100644 --- a/DuckDuckGo/AppDependencyProvider.swift +++ b/DuckDuckGo/AppDependencyProvider.swift @@ -35,7 +35,7 @@ class AppDependencyProvider: DependencyProvider { let appSettings: AppSettings = AppUserDefaults() let variantManager: VariantManager = DefaultVariantManager() - let homePageConfiguration: HomePageConfiguration = HomePageConfiguration() + lazy var homePageConfiguration: HomePageConfiguration = HomePageConfiguration(variantManager: variantManager) let storageCache = StorageCacheProvider() lazy var voiceSearchHelper: VoiceSearchHelperProtocol = VoiceSearchHelper(variantManager) } diff --git a/DuckDuckGo/Base.lproj/Home.storyboard b/DuckDuckGo/Base.lproj/Home.storyboard index dacf98f3167..557df6faa8c 100644 --- a/DuckDuckGo/Base.lproj/Home.storyboard +++ b/DuckDuckGo/Base.lproj/Home.storyboard @@ -1,10 +1,11 @@ - + - + + @@ -65,7 +66,7 @@ - + @@ -118,6 +119,7 @@ + @@ -126,7 +128,6 @@ - @@ -181,6 +182,7 @@ + @@ -198,7 +200,6 @@ - @@ -239,5 +240,8 @@ + + + diff --git a/DuckDuckGo/Base.lproj/Settings.storyboard b/DuckDuckGo/Base.lproj/Settings.storyboard index 368c1a1f95d..c5c3721c13a 100644 --- a/DuckDuckGo/Base.lproj/Settings.storyboard +++ b/DuckDuckGo/Base.lproj/Settings.storyboard @@ -1,9 +1,9 @@ - + - + @@ -63,18 +63,18 @@ - + diff --git a/DuckDuckGo/HomeMessageCollectionViewCell.swift b/DuckDuckGo/HomeMessageCollectionViewCell.swift new file mode 100644 index 00000000000..0fef1d3598b --- /dev/null +++ b/DuckDuckGo/HomeMessageCollectionViewCell.swift @@ -0,0 +1,35 @@ +// +// HomeMessageCollectionViewCell.swift +// DuckDuckGo +// +// Copyright © 2022 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 + +final class HomeMessageCollectionViewCell: SwiftUICollectionViewCell { + + static let maximumWidth: CGFloat = 380 + static let maximumWidthPad: CGFloat = 455 + + static var reuseIdentifier = "HomeMessageCell" + + func configure(with viewModel: HomeMessageViewModel, parent: UIViewController) { + embed(in: parent, withView: HomeMessageView(viewModel: viewModel)) + host?.view.frame = contentView.bounds + host?.view.backgroundColor = .clear + } +} diff --git a/DuckDuckGo/HomeMessageModel.swift b/DuckDuckGo/HomeMessageModel.swift deleted file mode 100644 index 7d332b4b2a2..00000000000 --- a/DuckDuckGo/HomeMessageModel.swift +++ /dev/null @@ -1,42 +0,0 @@ -// -// HomeMessageModel.swift -// DuckDuckGo -// -// Copyright © 2020 DuckDuckGo. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -import UIKit - -enum HomeMessage: String { - case defaultBrowserPrompt -} - -struct HomeMessageModel { - var homeMessage: HomeMessage - var header: String - var subheader: String - var topText: String - var buttonText: String - - static func homeMessageModel(forHomeMessage homeMessage: HomeMessage) -> HomeMessageModel { - switch homeMessage { - case .defaultBrowserPrompt: - return HomeMessageModel(homeMessage: .defaultBrowserPrompt, - header: UserText.defaultBrowserHomeMessageHeader, - subheader: UserText.defaultBrowserHomeMessageSubheader, - topText: UserText.defaultBrowserHomeMessageTopText, - buttonText: UserText.defaultBrowserHomeMessageButtonText) - } - } -} diff --git a/DuckDuckGo/HomeMessageStorage.swift b/DuckDuckGo/HomeMessageStorage.swift index 88c78468818..519cc1f2c33 100644 --- a/DuckDuckGo/HomeMessageStorage.swift +++ b/DuckDuckGo/HomeMessageStorage.swift @@ -19,39 +19,34 @@ import Core -public class HomeMessageStorage { +struct HomeMessageStorage { - struct Constants { - - static let homeRowReminderTimeInDays = 3.0 - - } + private let variantManager: VariantManager? - @UserDefaultsWrapper(key: .homeDefaultBrowserMessageDateDismissed, defaultValue: nil) - var homeDefaultBrowserMessageDateDismissed: Date? + init(variantManager: VariantManager? = nil) { + self.variantManager = variantManager + } - func homeMessagesThatShouldBeShown() -> [HomeMessageModel] { - var messages = [HomeMessageModel]() - if shouldShowDefaultBrowserMessage() { - messages.append(HomeMessageModel.homeMessageModel(forHomeMessage: .defaultBrowserPrompt)) + var messagesToBeShown: [HomeMessage] { + var messages = [HomeMessage]() + if shouldShowWidgetEducation { + messages.append(.widgetEducation) } - return messages } - func hasExpiredForHomeRow() -> Bool { - guard let date = homeDefaultBrowserMessageDateDismissed else { - return false - } - let days = abs(date.timeIntervalSinceNow / 24 / 60 / 60) - return days > Constants.homeRowReminderTimeInDays + // MARK: - Widget Education + + @UserDefaultsWrapper(key: .homeWidgetEducationMessageDismissed, defaultValue: false) + private var widgetEducationMessageDismissed: Bool + + mutating func hideWidgetEducation() { + widgetEducationMessageDismissed = true } - private func shouldShowDefaultBrowserMessage() -> Bool { - if #available(iOS 14, *), homeDefaultBrowserMessageDateDismissed == nil { - return true - } - return false + private var shouldShowWidgetEducation: Bool { + guard #available(iOS 14, *), let variantManager = variantManager else { return false } + let isFeatureSupported = variantManager.isSupported(feature: .widgetEducation) + return isFeatureSupported && !widgetEducationMessageDismissed } - } diff --git a/DuckDuckGo/HomeMessageView.swift b/DuckDuckGo/HomeMessageView.swift new file mode 100644 index 00000000000..774f13a32ca --- /dev/null +++ b/DuckDuckGo/HomeMessageView.swift @@ -0,0 +1,183 @@ +// +// HomeMessageView.swift +// DuckDuckGo +// +// Copyright © 2022 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 + +struct RoundedRectStyle: ButtonStyle { + let foregroundColor: Color + let backgroundColor: Color + + func makeBody(configuration: Self.Configuration) -> some View { + configuration.label + .padding(.horizontal, Const.Padding.buttonHorizontal) + .padding(.vertical, Const.Padding.buttonVertical) + .foregroundColor(configuration.isPressed ? foregroundColor.opacity(0.5) : foregroundColor) + .background(backgroundColor) + .cornerRadius(Const.Radius.corner) + } +} + +struct HomeMessageView: View { + let viewModel: HomeMessageViewModel + + var body: some View { + VStack(spacing: Const.Spacing.titleAndSubtitle) { + HStack(alignment: .top) { + Spacer() + VStack(spacing: Const.Spacing.imageAndTitle) { + topText + image + title + } + .offset(x: Const.Size.closeButtonWidth / 2, y: 0) + .layoutPriority(1) + Spacer() + closeButton + } + + VStack(spacing: Const.Spacing.subtitleAndButtons) { + subtitle + HStack { + buttons + } + } + } + .multilineTextAlignment(.center) + .padding() + .background(RoundedRectangle(cornerRadius: Const.Radius.corner) + .fill(Color.background) + .shadow(color: Color.shadow, + radius: Const.Radius.shadow, + x: 0, + y: Const.Offset.shadowVertical)) + } + + private var closeButton: some View { + Button(action: { viewModel.onDidClose() }, + label: { Image.dismiss }) + .layoutPriority(2) + .offset(x: Const.Offset.closeButton, + y: -Const.Offset.closeButton) + } + + private var topText: some View { + Group { + if let topText = viewModel.topText { + Text(topText) + .font(Font(uiFont: Const.Font.topText)) + } else { + EmptyView() + } + } + } + + private var image: some View { + Group { + if let image = viewModel.image { + Image(image) + .resizable() + .scaledToFit() + .frame(maxWidth: Const.Size.maxImageWidth) + } else { + EmptyView() + } + } + } + + private var title: some View { + Text(viewModel.title) + .font(Font(uiFont: Const.Font.title)) + } + + private var subtitle: some View { + Text(viewModel.subtitle) + .font(Font(uiFont: Const.Font.subtitle)) + .lineSpacing(Const.Spacing.line) + } + + private var buttons: some View { + ForEach(viewModel.buttons, id: \.title) { + let foreground: Color = $0.actionStyle == .default ? .white : .black + let background: Color = $0.actionStyle == .default ? .button : .gray + Button($0.title, action: $0.action) + .font(Font(uiFont: Const.Font.button)) + .buttonStyle(RoundedRectStyle(foregroundColor: foreground, + backgroundColor: background)) + } + } +} + +private extension Color { + static let button = Color(UIColor.cornflowerBlue) + static let background = Color("HomeMessageBackgroundColor") + static let shadow = Color("HomeMessageShadowColor") +} + +private extension Image { + static let dismiss = Image("HomeMessageDismissIcon") +} + +private enum Const { + enum Font { + static let topText = UIFont.boldAppFont(ofSize: 13) + static let title = UIFont.boldAppFont(ofSize: 17) + static let subtitle = UIFont.appFont(ofSize: 15) + static let button = UIFont.boldAppFont(ofSize: 15) + } + + enum Radius { + static let shadow: CGFloat = 3 + static let corner: CGFloat = 8 + } + + enum Padding { + static let buttonHorizontal: CGFloat = 16 + static let buttonVertical: CGFloat = 9 + } + + enum Spacing { + static let imageAndTitle: CGFloat = 16 + static let titleAndSubtitle: CGFloat = 8 + static let subtitleAndButtons: CGFloat = 16 + static let line: CGFloat = 4 + } + + enum Size { + static let maxImageWidth: CGFloat = 227 + static let closeButtonWidth: CGFloat = 24 + } + + enum Offset { + static let closeButton: CGFloat = 6 + static let shadowVertical: CGFloat = 2 + } +} + +struct HomeMessageView_Previews: PreviewProvider { + static var previews: some View { + let viewModel = HomeMessageViewModel(image: "home-screen", + topText: "TOP TEXT", + title: "Placeholder Title", + subtitle: "Body text goes here. This component can be used with one or two buttons.", + buttons: [.init(title: "Button1", actionStyle: .cancel) {}, + .init(title: "Button2") {}], + onDidClose: {}) + return HomeMessageView(viewModel: viewModel) + } +} diff --git a/DuckDuckGo/HomeMessageViewModel.swift b/DuckDuckGo/HomeMessageViewModel.swift new file mode 100644 index 00000000000..eb4ab867347 --- /dev/null +++ b/DuckDuckGo/HomeMessageViewModel.swift @@ -0,0 +1,41 @@ +// +// HomeMessageViewModel.swift +// DuckDuckGo +// +// Copyright © 2022 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 + +struct HomeMessageViewModel { + let image: String? + let topText: String? + let title: String + let subtitle: String + let buttons: [HomeMessageButtonViewModel] + + let onDidClose: () -> Void +} + +struct HomeMessageButtonViewModel { + enum ActionStyle { + case `default` + case cancel + } + + let title: String + var actionStyle: ActionStyle = .default + let action: () -> Void +} diff --git a/DuckDuckGo/HomeMessageViewSectionRenderer.swift b/DuckDuckGo/HomeMessageViewSectionRenderer.swift index b59138c528e..5302153e1ec 100644 --- a/DuckDuckGo/HomeMessageViewSectionRenderer.swift +++ b/DuckDuckGo/HomeMessageViewSectionRenderer.swift @@ -36,21 +36,10 @@ class HomeMessageViewSectionRenderer: NSObject, HomeViewSectionRenderer { } - private var isIPad: Bool { - return controller?.traitCollection.horizontalSizeClass == .regular - } - - private weak var controller: (UIViewController & HomeMessageViewSectionRendererDelegate)? + private weak var controller: HomeViewController? private let homePageConfiguration: HomePageConfiguration - private lazy var cellForSizing: HomeMessageCell = { - let nib = Bundle.main.loadNibNamed("HomeMessageCell", owner: HomeMessageCell.self, options: nil) - // swiftlint:disable force_cast - return nib!.first as! HomeMessageCell - // swiftlint:enable force_cast - }() - init(homePageConfiguration: HomePageConfiguration) { self.homePageConfiguration = homePageConfiguration super.init() @@ -58,10 +47,13 @@ class HomeMessageViewSectionRenderer: NSObject, HomeViewSectionRenderer { func install(into controller: HomeViewController) { self.controller = controller + hideLogoIfThereAreMessagesToDisplay() } - func install(into controller: UIViewController & HomeMessageViewSectionRendererDelegate) { - self.controller = controller + private func hideLogoIfThereAreMessagesToDisplay() { + if !homePageConfiguration.homeMessages.isEmpty { + controller?.hideLogo() + } } func collectionView(_ collectionView: UICollectionView, @@ -77,7 +69,7 @@ class HomeMessageViewSectionRenderer: NSObject, HomeViewSectionRenderer { } func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - return homePageConfiguration.homeMessages().count + return homePageConfiguration.homeMessages.count } func collectionView(_ collectionView: UICollectionView, @@ -89,65 +81,78 @@ class HomeMessageViewSectionRenderer: NSObject, HomeViewSectionRenderer { } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - - guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: HomeMessageCell.reuseIdentifier, - for: indexPath) as? HomeMessageCell else { - fatalError("not a HomeMessageCell") + guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: HomeMessageCollectionViewCell.reuseIdentifier, + for: indexPath) as? HomeMessageCollectionViewCell else { + fatalError("Could not dequeue cell") } - - cell.alpha = 1.0 - cell.setWidth(collectionViewCellWidth(collectionView)) - cell.configure(withModel: homeMessageModel(forIndexPath: indexPath)) - cell.delegate = self + configureCell(cell, in: collectionView, at: indexPath) return cell } - func collectionView(_ collectionView: UICollectionView, - layout collectionViewLayout: UICollectionViewLayout, - sizeForItemAt indexPath: IndexPath) -> CGSize { - let width = collectionViewCellWidth(collectionView) - - cellForSizing.setWidth(width) - cellForSizing.configure(withModel: homeMessageModel(forIndexPath: indexPath)) - - let targetSize = CGSize(width: width, height: CGFloat.greatestFiniteMagnitude) - let size = cellForSizing.systemLayoutSizeFitting(targetSize) - return size + private func configureCell(_ cell: HomeMessageCollectionViewCell, + in collectionView: UICollectionView, + at indexPath: IndexPath) { + if let controller = controller { + let viewModel = homeMessageViewModel(for: indexPath, collectionView: collectionView) + cell.configure(with: viewModel, parent: controller) + } } - - private func homeMessageModel(forIndexPath indexPath: IndexPath) -> HomeMessageModel { - return homePageConfiguration.homeMessages()[indexPath.row] + + private func homeMessageViewModel(for indexPath: IndexPath, + collectionView: UICollectionView) -> HomeMessageViewModel { + let message = homePageConfiguration.homeMessages[indexPath.row] + switch message { + case .widgetEducation: + return WidgetEducationHomeMessage.makeViewModel(presentingViewController: controller!, + onDidClose: { [weak self] in + Pixel.fire(pixel: .widgetEducationDismissed) + self?.dismissHomeMessage(message, at: indexPath, in: collectionView) + }) + } } - private func collectionViewCellWidth(_ collectionView: UICollectionView) -> CGFloat { - let marginWidth = Constants.horizontalMargin * 2 - let availableWidth = collectionView.bounds.size.width - marginWidth - let maxCellWidth = isIPad ? HomeMessageCell.maximumWidthIpad : HomeMessageCell.maximumWidth - return min(availableWidth, maxCellWidth) + private func dismissHomeMessage(_ message: HomeMessage, + at indexPath: IndexPath, + in collectionView: UICollectionView) { + homePageConfiguration.dismissHomeMessage(message) + animateCellDismissal(at: indexPath, in: collectionView) { + self.controller?.homeMessageRenderer(self, didDismissHomeMessage: message) + } } -} - -extension HomeMessageViewSectionRenderer: HomeMessageCellDelegate { - func homeMessageCellDismissButtonWasPressed(_ cell: HomeMessageCell) { - Pixel.fire(pixel: .defaultBrowserHomeMessageDismissed) - homePageConfiguration.homeMessageDismissed(cell.homeMessage) + private func animateCellDismissal(at indexPath: IndexPath, + in collectionView: UICollectionView, + completion: @escaping () -> Void) { + guard let cell = collectionView.cellForItem(at: indexPath) else { + completion() + return + } + UIView.animate(withDuration: 0.3, animations: { cell.alpha = 0 }, completion: { _ in - self.controller?.homeMessageRenderer(self, didDismissHomeMessage: cell.homeMessage) + completion() }) } + + func collectionView(_ collectionView: UICollectionView, + layout collectionViewLayout: UICollectionViewLayout, + sizeForItemAt indexPath: IndexPath) -> CGSize { + let cell = HomeMessageCollectionViewCell() + configureCell(cell, in: collectionView, at: indexPath) + let size = cell.host?.sizeThatFits(in: CGSize(width: collectionViewCellWidth(collectionView), + height: CGFloat.greatestFiniteMagnitude)) ?? .zero + return size + } - func homeMessageCellMainButtonWaspressed(_ cell: HomeMessageCell) { - switch cell.homeMessage { - case .defaultBrowserPrompt: - Pixel.fire(pixel: .defaultBrowserButtonPressedHome) - if let url = URL(string: UIApplication.openSettingsURLString) { - UIApplication.shared.open(url) - } - } - homePageConfiguration.homeMessageDismissed(cell.homeMessage) - controller?.homeMessageRenderer(self, didDismissHomeMessage: cell.homeMessage) + private func collectionViewCellWidth(_ collectionView: UICollectionView) -> CGFloat { + let marginWidth = Constants.horizontalMargin * 2 + let availableWidth = collectionView.safeAreaLayoutGuide.layoutFrame.width - marginWidth + let maxCellWidth = isPad ? HomeMessageCollectionViewCell.maximumWidthPad : HomeMessageCollectionViewCell.maximumWidth + return min(availableWidth, maxCellWidth) + } + + private var isPad: Bool { + return controller?.traitCollection.horizontalSizeClass == .regular } } diff --git a/DuckDuckGo/HomePageConfiguration.swift b/DuckDuckGo/HomePageConfiguration.swift index 10c8f8fa150..eb1ee2b76b0 100644 --- a/DuckDuckGo/HomePageConfiguration.swift +++ b/DuckDuckGo/HomePageConfiguration.swift @@ -20,7 +20,7 @@ import Foundation import Core -class HomePageConfiguration { +final class HomePageConfiguration { enum Component: Equatable { case navigationBarSearch(fixed: Bool) @@ -37,16 +37,20 @@ class HomePageConfiguration { ] } - private let homeMessageStorage = HomeMessageStorage() + // MARK: - Messages - func homeMessages() -> [HomeMessageModel] { - return homeMessageStorage.homeMessagesThatShouldBeShown() + private var homeMessageStorage: HomeMessageStorage + + init(variantManager: VariantManager? = nil) { + homeMessageStorage = HomeMessageStorage(variantManager: variantManager) } - func homeMessageDismissed(_ homeMessage: HomeMessage) { + var homeMessages: [HomeMessage] { homeMessageStorage.messagesToBeShown } + + func dismissHomeMessage(_ homeMessage: HomeMessage) { switch homeMessage { - case .defaultBrowserPrompt: - homeMessageStorage.homeDefaultBrowserMessageDateDismissed = Date() + case .widgetEducation: + homeMessageStorage.hideWidgetEducation() } } } diff --git a/DuckDuckGo/HomeRowReminder.swift b/DuckDuckGo/HomeRowReminder.swift index e74eddc58fd..c5a0441644f 100644 --- a/DuckDuckGo/HomeRowReminder.swift +++ b/DuckDuckGo/HomeRowReminder.swift @@ -43,11 +43,9 @@ class HomeRowReminder { self.homeMessageStorage = homeMessageStorage } - func showNow(isDefaultBrowserSupported: Bool) -> Bool { - // Note this is also depedent on when the Default browser home message was dismissed - // we should bare this depedency in mind when experimenting in the future + func showNow() -> Bool { guard !hasShownBefore() else { return false } - guard hasReminderTimeElapsed(isDefaultBrowserSupported: isDefaultBrowserSupported) else { return false } + guard hasReminderTimeElapsed else { return false } return true } @@ -59,17 +57,13 @@ class HomeRowReminder { return storage.shown } - private func hasReminderTimeElapsed(isDefaultBrowserSupported: Bool) -> Bool { - if isDefaultBrowserSupported { - return homeMessageStorage.hasExpiredForHomeRow() - } else { - guard let date = storage.firstAccessDate else { - storage.firstAccessDate = Date() - return false - } - let days = abs(date.timeIntervalSinceNow / 24 / 60 / 60) - return days > Constants.reminderTimeInDays + private var hasReminderTimeElapsed: Bool { + guard let date = storage.firstAccessDate else { + storage.firstAccessDate = Date() + return false } + let days = abs(date.timeIntervalSinceNow / 24 / 60 / 60) + return days > Constants.reminderTimeInDays } } diff --git a/DuckDuckGo/HomeViewController.swift b/DuckDuckGo/HomeViewController.swift index ef40381cfc4..37c24ea0e2f 100644 --- a/DuckDuckGo/HomeViewController.swift +++ b/DuckDuckGo/HomeViewController.swift @@ -109,6 +109,7 @@ class HomeViewController: UIViewController { coordinator.animate(alongsideTransition: { _ in self.collectionView.viewDidTransition(to: size) }) + self.collectionView.collectionViewLayout.invalidateLayout() } func refresh() { @@ -134,10 +135,6 @@ class HomeViewController: UIViewController { if presentedViewController == nil { // prevents these being called when settings forces this controller to be reattached showNextDaxDialog() Pixel.fire(pixel: .homeScreenShown) - - if collectionView.isShowingHomeMessage(.defaultBrowserPrompt) { - Pixel.fire(pixel: .defaultBrowserHomeMessageShown) - } } viewHasAppeared = true diff --git a/DuckDuckGo/MainViewController.swift b/DuckDuckGo/MainViewController.swift index 3182ae6d24b..0b104171512 100644 --- a/DuckDuckGo/MainViewController.swift +++ b/DuckDuckGo/MainViewController.swift @@ -843,23 +843,16 @@ class MainViewController: UIViewController { } func showHomeRowReminder() { - let feature = HomeRowReminder() - if #available(iOS 14, *) { - guard feature.showNow(isDefaultBrowserSupported: true) else { return } - } else { - guard feature.showNow(isDefaultBrowserSupported: false) else { return } - } - - showNotification(title: UserText.homeRowReminderTitle, message: UserText.homeRowReminderMessage) { tapped in - if tapped { - self.launchInstructions() + if feature.showNow() { + showNotification(title: UserText.homeRowReminderTitle, message: UserText.homeRowReminderMessage) { tapped in + if tapped { + self.launchInstructions() + } + self.hideNotification() } - - self.hideNotification() + feature.setShown() } - - feature.setShown() } func animateBackgroundTab() { diff --git a/DuckDuckGo/OnboardingDefaultBroswerViewController.swift b/DuckDuckGo/OnboardingDefaultBroswerViewController.swift index a2cdb6225b3..e27d79a6991 100644 --- a/DuckDuckGo/OnboardingDefaultBroswerViewController.swift +++ b/DuckDuckGo/OnboardingDefaultBroswerViewController.swift @@ -33,11 +33,6 @@ class OnboardingDefaultBroswerViewController: OnboardingContentViewController { return UserText.onboardingSkip } - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - HomeMessageStorage().homeDefaultBrowserMessageDateDismissed = Date() - } - override func onContinuePressed(navigationHandler: @escaping () -> Void) { if let url = URL(string: UIApplication.openSettingsURLString) { UIApplication.shared.open(url) diff --git a/DuckDuckGo/SettingsViewController.swift b/DuckDuckGo/SettingsViewController.swift index 335a10e155b..ba3ea15e03a 100644 --- a/DuckDuckGo/SettingsViewController.swift +++ b/DuckDuckGo/SettingsViewController.swift @@ -46,7 +46,8 @@ class SettingsViewController: UITableViewController { @IBOutlet weak var versionCell: UITableViewCell! @IBOutlet weak var textSizeCell: UITableViewCell! @IBOutlet weak var textSizeAccessoryText: UILabel! - + @IBOutlet weak var widgetEducationCell: UITableViewCell! + @IBOutlet var labels: [UILabel]! @IBOutlet var accessoryLabels: [UILabel]! @@ -61,11 +62,15 @@ class SettingsViewController: UITableViewController { private static var shouldShowDefaultBrowserSection: Bool { if #available(iOS 14, *) { return true - } else { - return false } + return false } + private lazy var shouldShowWidgetEducationCell: Bool = { + guard #available(iOS 14, *), variantManager.isSupported(feature: .widgetEducation) else { return false } + return true + }() + static func loadFromStoryboard() -> UIViewController { return UIStoryboard(name: "Settings", bundle: nil).instantiateInitialViewController()! } @@ -75,6 +80,7 @@ class SettingsViewController: UITableViewController { configureVersionCell() configureDefaultBroswerCell() + configureWidgetEducationCell() configureThemeCellAccessory() configureFireButtonAnimationCellAccessory() configureTextSizeCell() @@ -127,6 +133,10 @@ class SettingsViewController: UITableViewController { private func configureDefaultBroswerCell() { defaultBrowserCell.isHidden = !SettingsViewController.shouldShowDefaultBrowserSection } + + private func configureWidgetEducationCell() { + widgetEducationCell.isHidden = !shouldShowWidgetEducationCell + } private func configureThemeCellAccessory() { switch appSettings.currentThemeName { @@ -224,7 +234,7 @@ class SettingsViewController: UITableViewController { Pixel.fire(pixel: .defaultBrowserButtonPressedSettings) guard let url = URL(string: UIApplication.openSettingsURLString) else { return } UIApplication.shared.open(url) - + case emailProtectionCell: if emailManager.isSignedIn { showEmailProtectionViewController() @@ -234,6 +244,9 @@ class SettingsViewController: UITableViewController { case versionCell: showDebug() + + case widgetEducationCell: + Pixel.fire(pixel: .widgetEducationOpenedFromSettings) default: break } diff --git a/DuckDuckGo/SwiftUICollectionViewCell.swift b/DuckDuckGo/SwiftUICollectionViewCell.swift new file mode 100644 index 00000000000..e1e8cfb0f37 --- /dev/null +++ b/DuckDuckGo/SwiftUICollectionViewCell.swift @@ -0,0 +1,48 @@ +// +// SwiftUICollectionViewCell.swift +// DuckDuckGo +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import UIKit +import SwiftUI + +/// Subclass for embedding a SwiftUI View inside of UICollectionViewCell +class SwiftUICollectionViewCell: UICollectionViewCell where Content: View { + + private(set) var host: UIHostingController? + + func embed(in parent: UIViewController, withView content: Content) { + if let host = self.host { + host.rootView = content + host.view.layoutIfNeeded() + } else { + let host = UIHostingController(rootView: content) + parent.addChild(host) + host.didMove(toParent: parent) + contentView.addSubview(host.view) + self.host = host + } + } + + deinit { + host?.willMove(toParent: nil) + host?.view.removeFromSuperview() + host?.removeFromParent() + host = nil + } + +} diff --git a/DuckDuckGo/UserText.swift b/DuckDuckGo/UserText.swift index f8a52e27cca..12aebf87c66 100644 --- a/DuckDuckGo/UserText.swift +++ b/DuckDuckGo/UserText.swift @@ -333,12 +333,7 @@ public struct UserText { public static let daxDialogHideCancel = NSLocalizedString("dax.hide.cancel", value: "Cancel", comment: "") public static let tabSwitcherAccessibilityLabel = NSLocalizedString("tab.switcher.accessibility.label", value: "Tab Switcher", comment: "Tab Switcher Accessibility Label") - - public static let defaultBrowserHomeMessageHeader = NSLocalizedString("home.message.header", value: "Make DuckDuckGo your default browser.", comment: "") - public static let defaultBrowserHomeMessageSubheader = NSLocalizedString("home.message.subheader", value: "Open links with peace of mind, every time.", comment: "") - public static let defaultBrowserHomeMessageTopText = NSLocalizedString("home.message.topText", value: "NEW IN IOS 14", comment: "") - public static let defaultBrowserHomeMessageButtonText = NSLocalizedString("home.message.buttonText", value: "Set as Default Browser", comment: "") - + public static let onboardingWidgetsHeader = NSLocalizedString("onboarding.widgets.header", value: "Using DuckDuckGo just got easier.", comment: "") public static let onboardingWidgetsContinueButtonText = NSLocalizedString("onboarding.widgets.continueButton", value: "Add Widget", comment: "") public static let onboardingWidgetsSkipButtonText = NSLocalizedString("onboarding.widgets.skipButton", value: "Maybe Later", comment: "") @@ -424,6 +419,14 @@ public struct UserText { let message = NSLocalizedString("textSize.footer", value: "Text Size - %@", comment: "Replacement string is a current percent value e.g. '120%'") return message.format(arguments: percentage) } + + public static let addWidget = NSLocalizedString("addWidget.button", value: "Add Widget", comment: "") + public static let addWidgetTitle = NSLocalizedString("addWidget.title", value: "One tap to your favorite sites.", comment: "") + public static let addWidgetDescription = NSLocalizedString("addWidget.description", value: "Search privately and quickly visit sites you love.", comment: "") + public static let addWidgetSettingsFirstParagraph = NSLocalizedString("addWidget.settings.firstParagraph", value: "Long-press on the home screen to enter jiggle mode.", comment: "") + public static let addWidgetSettingsSecondParagraph = NSLocalizedString("addWidget.settings.secondParagraph.%@", value: "Tap the plus %@ button.", comment: "Replacement string is a plus button icon.") + public static let addWidgetSettingsThirdParagraph = NSLocalizedString("addWidget.settings.title", value: "Find and select DuckDuckGo. Then choose a widget.", comment: "") + public static let webJSAlertDisableAlertsButton = NSLocalizedString("webJSAlert.block-alerts.button", value: "Block Alerts", comment: "Block Alerts button for JavaScript alerts") } diff --git a/DuckDuckGo/WidgetEducationHomeMessage.swift b/DuckDuckGo/WidgetEducationHomeMessage.swift new file mode 100644 index 00000000000..b88245a758a --- /dev/null +++ b/DuckDuckGo/WidgetEducationHomeMessage.swift @@ -0,0 +1,74 @@ +// +// WidgetEducationHomeMessage.swift +// DuckDuckGo +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import UIKit +import Core + +struct WidgetEducationHomeMessage { + enum Const { + static let image = "WidgetEducationWidgetExample" + } + + static func makeViewModel(presentingViewController: UIViewController, + onDidClose: @escaping () -> Void) -> HomeMessageViewModel { + return HomeMessageViewModel(image: Const.image, + topText: nil, + title: UserText.addWidgetTitle, + subtitle: UserText.addWidgetDescription, + buttons: [makeAddWidgetButton(presentingViewController: presentingViewController)], + onDidClose: onDidClose) + } + + private static func makeAddWidgetButton(presentingViewController: UIViewController) -> HomeMessageButtonViewModel { + .init(title: UserText.addWidget) { presentWidgetEducation(presentingViewController: presentingViewController) } + } + + private static func presentWidgetEducation(presentingViewController: UIViewController) { + Pixel.fire(pixel: .widgetEducationOpenedFromHomeScreen) + let widgetEducationViewController = makeWidgetEducationViewController(presentingViewController: presentingViewController) + widgetEducationViewController.modalPresentationStyle = .formSheet + presentingViewController.present(widgetEducationViewController, animated: true) + } + + private static func makeWidgetEducationViewController(presentingViewController: UIViewController) -> UIViewController { + guard #available(iOS 14.0, *) else { fatalError() } + return WidgetEducationViewController().embeddedInNavigationController + } +} + +@available(iOS 14.0, *) +extension WidgetEducationViewController: Themable { + var embeddedInNavigationController: UIViewController { + let navigationController = ThemableNavigationController(rootViewController: self) + configureNavigationBar() + return navigationController + } + + private func configureNavigationBar() { + title = UserText.addWidget + navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, + target: self, + action: #selector(done)) + decorate(with: ThemeManager.shared.currentTheme) + } + + @objc private func done() { + dismiss(animated: true) + } +} diff --git a/DuckDuckGo/WidgetEducationView.swift b/DuckDuckGo/WidgetEducationView.swift new file mode 100644 index 00000000000..c3ca3cf6403 --- /dev/null +++ b/DuckDuckGo/WidgetEducationView.swift @@ -0,0 +1,137 @@ +// +// WidgetEducationView.swift +// DuckDuckGo +// +// Copyright © 2022 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 + +extension Font { + init(uiFont: UIFont) { + self = Font(uiFont as CTFont) + } +} + +@available(iOS 14.0, *) +struct WidgetEducationView: View { + + var body: some View { + ZStack { + Color.background + .ignoresSafeArea() + ScrollView { + VStack(alignment: .leading, spacing: Const.Spacing.paragraph) { + NumberedParagraph(number: 1, + text: Text(UserText.addWidgetSettingsFirstParagraph)) + NumberedParagraph(number: 2, + text: secondParagraphText, + image: Image.homeScreen) + NumberedParagraph(number: 3, + text: Text(UserText.addWidgetSettingsThirdParagraph), + image: Image.widgetExample) + } + .padding(.horizontal) + .padding(.top, Const.Padding.top) + } + } + } + + private var secondParagraphText: Text { + // https://stackoverflow.com/questions/62168292/what-s-the-equivalent-to-string-localizedstringwithformat-for-swiftuis-lo + Text("addWidget.settings.secondParagraph.\(Image.add)") + } +} + +private struct NumberedParagraph: View { + var number: Int + var text: Text + var image: Image? + + var body: some View { + HStack(alignment: .firstTextBaseline, spacing: Const.Spacing.numberAndText) { + NumberedCircleView(number: number) + VStack(alignment: .leading, spacing: Const.Spacing.textAndImage) { + text + .font(Font(uiFont: Const.Font.text)) + .lineSpacing(Const.Spacing.line) + .foregroundColor(Color.font) + image? + .resizable() + .scaledToFit() + .frame(maxWidth: Const.Size.imageWidth) + } + } + } +} + +private struct NumberedCircleView: View { + var number: Int + + var body: some View { + ZStack { + Circle() + .foregroundColor(Color.circle) + Text("\(number)") + .font(Font(uiFont: Const.Font.numbers)) + .foregroundColor(Color.numbers) + } + .frame(width: Const.Size.circle.width, + height: Const.Size.circle.height) + } +} + +private extension Color { + static let background = Color("WidgetEducationBackgroundColor") + static let font = Color("WidgetEducationFontColor") + static let circle = Color(UIColor.cornflowerBlue) + static let numbers = Color.white +} + +private extension Image { + static let add = Image("WidgetEducationAddIcon") + static let widgetExample = Image("WidgetEducationWidgetExample") + static let homeScreen = Image("WidgetEducationHomeScreen") +} + +private enum Const { + enum Font { + static let text = UIFont.appFont(ofSize: 17) + static let numbers = UIFont.boldAppFont(ofSize: 16) + } + + enum Padding { + static let top: CGFloat = 32 + } + + enum Spacing { + static let paragraph: CGFloat = 24 + static let numberAndText: CGFloat = 16 + static let textAndImage: CGFloat = 16 + static let line: CGFloat = 4 + } + + enum Size { + static let circle = CGSize(width: 24, height: 24) + static let imageWidth: CGFloat = 270 + } +} + +@available(iOS 14.0, *) +struct WidgetEducationView_Previews: PreviewProvider { + static var previews: some View { + WidgetEducationView() + } +} diff --git a/DuckDuckGo/WidgetEducationViewController.swift b/DuckDuckGo/WidgetEducationViewController.swift new file mode 100644 index 00000000000..dbf5ab59e33 --- /dev/null +++ b/DuckDuckGo/WidgetEducationViewController.swift @@ -0,0 +1,45 @@ +// +// WidgetEducationViewController.swift +// DuckDuckGo +// +// Copyright © 2022 DuckDuckGo. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import UIKit +import SwiftUI + +@available(iOS 14.0, *) +final class WidgetEducationViewController: UIViewController { + + private let host = UIHostingController(rootView: WidgetEducationView()) + + override func viewDidLoad() { + super.viewDidLoad() + + addChild(host) + view.addSubview(host.view) + setupConstraints() + } + + private func setupConstraints() { + host.view.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + host.view.topAnchor.constraint(equalTo: view.topAnchor), + host.view.bottomAnchor.constraint(equalTo: view.bottomAnchor), + host.view.leftAnchor.constraint(equalTo: view.leftAnchor), + host.view.rightAnchor.constraint(equalTo: view.rightAnchor) + ]) + } +} diff --git a/DuckDuckGo/bg.lproj/Localizable.strings b/DuckDuckGo/bg.lproj/Localizable.strings index ce327a03c4f..6af0a36803b 100644 --- a/DuckDuckGo/bg.lproj/Localizable.strings +++ b/DuckDuckGo/bg.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Редактиране"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Споделяне"; +/* No comment provided by engineer. */ +"addWidget.button" = "Добави приспособлението"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Поверително търсене и бързо влизане в любимите страници."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Натиснете продължително началния екран, за да влезете в режим за пренареждане."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Натиснете бутона плюс %@."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Открийте и изберете DuckDuckGo. След това изберете приспособление."; + +/* No comment provided by engineer. */ +"addWidget.title" = "На едно докосване от любимите уебсайтове."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Съществуващите отметки няма да бъдат дублирани."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Водовъртеж"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Задаване като браузър по подразбиране"; - -/* No comment provided by engineer. */ -"home.message.header" = "Направете DuckDuckGo браузър по подразбиране."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Отваряйте връзки без притеснения, всеки път."; - -/* No comment provided by engineer. */ -"home.message.topText" = "НОВО В IOS 14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Добавете DuckDuckGo към началния си екран!"; diff --git a/DuckDuckGo/bg.lproj/Settings.strings b/DuckDuckGo/bg.lproj/Settings.strings index 3ebdf5c3c2c..2c8775ab930 100644 --- a/DuckDuckGo/bg.lproj/Settings.strings +++ b/DuckDuckGo/bg.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Глобален контрол на поверителността (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Добавяне на приспособлението към началния екран"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Анимация на огнения бутон"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Клавиатура"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Добавяне на DuckDuckGo към панела"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Добавяне на приложението към панела"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Помощ"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Начален екран"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Добавяне на приспособлението към началния екран"; + diff --git a/DuckDuckGo/cs.lproj/Localizable.strings b/DuckDuckGo/cs.lproj/Localizable.strings index 3e389eddc21..4df18e21406 100644 --- a/DuckDuckGo/cs.lproj/Localizable.strings +++ b/DuckDuckGo/cs.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Upravit"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Sdílet"; +/* No comment provided by engineer. */ +"addWidget.button" = "Přidat widget"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Bezpečně prohlížej obsah a snadno navštěvuj svoje oblíbené stránky."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Podržením prstu na ploše aktivuj režim úprav plochy."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Klepni na tlačítko plus %@."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Najdi aplikaci DuckDuckGo a vyber ji. Pak zvol widget."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Jedním klepnutím se dostaneš na svoje oblíbené stránky."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Existující záložky nebudou duplikovány."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Vodní vír"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Nastavit jako výchozí prohlížeč"; - -/* No comment provided by engineer. */ -"home.message.header" = "Nastavte si DuckDuckGo jako výchozí prohlížeč."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Otevírejte odkazy s klidem mysli, pokaždé."; - -/* No comment provided by engineer. */ -"home.message.topText" = "NOVINKY V IOS 14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Přidejte DuckDuckGo na svou domovskou obrazovku!"; diff --git a/DuckDuckGo/cs.lproj/Settings.strings b/DuckDuckGo/cs.lproj/Settings.strings index 20fe71ea0f8..19fc568cc24 100644 --- a/DuckDuckGo/cs.lproj/Settings.strings +++ b/DuckDuckGo/cs.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Globální kontrola ochrany osobních údajů (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Přidat widget na domovskou obrazovku"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Animace tlačítka pro mazání"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Klávesnice"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Přidejte DuckDuckGo do vašeho docku"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Přidat aplikaci do docku"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Nápověda"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Domovská obrazovka"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Přidat widget na domovskou obrazovku"; + diff --git a/DuckDuckGo/da.lproj/Localizable.strings b/DuckDuckGo/da.lproj/Localizable.strings index 97089c8c3a0..b6b83a988a3 100644 --- a/DuckDuckGo/da.lproj/Localizable.strings +++ b/DuckDuckGo/da.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Rediger"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Del"; +/* No comment provided by engineer. */ +"addWidget.button" = "Tilføj widget"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Søg privat, og besøg hurtigt websteder, som du elsker."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Tryk længe på startskærmen for at skifte til jiggle-tilstand."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Tryk på %@-knappen."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Find og vælg DuckDuckGo. Vælg derefter en widget."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Ét tryk til dine yndlingswebsteder."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Eksisterende bogmærker duplikeres ikke."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Whirlpool"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Angiv som standardbrowser"; - -/* No comment provided by engineer. */ -"home.message.header" = "Gør DuckDuckGo til din standardbrowser."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Åbne link med ro i sindet, hver gang."; - -/* No comment provided by engineer. */ -"home.message.topText" = "NYT I IOS 14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Føj DuckDuckGo til din startskærm!"; diff --git a/DuckDuckGo/da.lproj/Settings.strings b/DuckDuckGo/da.lproj/Settings.strings index b12e09798d1..e803dd83208 100644 --- a/DuckDuckGo/da.lproj/Settings.strings +++ b/DuckDuckGo/da.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Global Privacy Control (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Tilføj widget til startskærmen"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Ildknap-animation"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Tastatur"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Føj DuckDuckGo til din dock"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Føj appen til din dock"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Hjælp"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Startskærm"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Tilføj widget til startskærmen"; + diff --git a/DuckDuckGo/de.lproj/Localizable.strings b/DuckDuckGo/de.lproj/Localizable.strings index 5806370ea94..18493500053 100644 --- a/DuckDuckGo/de.lproj/Localizable.strings +++ b/DuckDuckGo/de.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Bearbeiten"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Teilen"; +/* No comment provided by engineer. */ +"addWidget.button" = "Widget hinzufügen"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Privat suchen und schnell Seiten besuchen, die du liebst."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Drücke lange auf den Startbildschirm, um in den Jiggle-Modus zu wechseln."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Tippe auf die Plus-Schaltfläche %@."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Finde DuckDuckGo und wähle es aus. Wähle dann ein Widget aus."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Mit nur einem Klick zu deinen Lieblingswebsites."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Bestehende Lesezeichen werden nicht kopiert."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Whirlpool"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Als Standard-Browser festlegen"; - -/* No comment provided by engineer. */ -"home.message.header" = "Stelle DuckDuckGo als Standard-Browser ein."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Öffne Links jederzeit sicher und ohne Sorge."; - -/* No comment provided by engineer. */ -"home.message.topText" = "NEU BEI IOS 14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Füge DuckDuckGo zu deinem Startbildschirm hinzu."; diff --git a/DuckDuckGo/de.lproj/Settings.strings b/DuckDuckGo/de.lproj/Settings.strings index 67dd2180304..d2d2bcb53e0 100644 --- a/DuckDuckGo/de.lproj/Settings.strings +++ b/DuckDuckGo/de.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Global Privacy Control (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Widget zum Startbildschirm hinzufügen"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Animation der Schaltfläche „Feuer“"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Tastatur"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "DuckDuckGo zum Dock hinzufügen"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "App zum Dock hinzufügen"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Hilfe"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Startbildschirm"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Widget zum Startbildschirm hinzufügen"; + diff --git a/DuckDuckGo/el.lproj/Localizable.strings b/DuckDuckGo/el.lproj/Localizable.strings index 853cb7302c4..5d73915c406 100644 --- a/DuckDuckGo/el.lproj/Localizable.strings +++ b/DuckDuckGo/el.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Επεξεργασία"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Κοινή χρήση"; +/* No comment provided by engineer. */ +"addWidget.button" = "Προσθήκη γραφικού στοιχείου"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Πραγματοποιήστε ιδιωτική αναζήτηση και επισκεφθείτε γρήγορα ιστότοπους που αγαπάτε."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Πατήστε παρατεταμένα στην αρχική οθόνη για να εισέλθετε σε λειτουργία αναδιάταξης."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Πατήστε το κουμπί συν %@."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Εύρεση και επιλογή του DuckDuckGo. Έπειτα, επιλέξτε τη μικροεφαρμογή."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Ένα μόνο πάτημα προς τους αγαπημένους ιστότοπούς σας."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Οι υπάρχοντες σελιδοδείκτες δεν θα αναπαραχθούν."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Δίνη νερού"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Ορισμός ως προεπιλεγμένο πρόγραμμα περιήγησης"; - -/* No comment provided by engineer. */ -"home.message.header" = "Ορίστε το DuckDuckGo ως το προεπιλεγμένο πρόγραμμα περιήγησής σας."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Ανοίξτε συνδέσμους με ηρεμία και ασφάλεια, κάθε φορά."; - -/* No comment provided by engineer. */ -"home.message.topText" = "ΝΕΑ ΣΤΟ IOS 14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Προσθήκη του DuckDuckGo στην αρχική οθόνη σας!"; diff --git a/DuckDuckGo/el.lproj/Settings.strings b/DuckDuckGo/el.lproj/Settings.strings index a38152744f6..9a761663091 100644 --- a/DuckDuckGo/el.lproj/Settings.strings +++ b/DuckDuckGo/el.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Παγκόσμιος έλεγχος απορρήτου (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Προσθήκη μικροεφαρμογής στην Αρχική οθόνη"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Κινούμενο κουμπί φωτιάς"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Πληκτρολόγιο"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Προσθήκη του DuckDuckGo στο Dock σας"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Προσθήκη εφαρμογής στο Dock σας"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Βοήθεια"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Αρχική οθόνη"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Προσθήκη μικροεφαρμογής στην Αρχική οθόνη"; + diff --git a/DuckDuckGo/en.lproj/Localizable.strings b/DuckDuckGo/en.lproj/Localizable.strings index 279ebf1aa8d..e895eea1702 100644 --- a/DuckDuckGo/en.lproj/Localizable.strings +++ b/DuckDuckGo/en.lproj/Localizable.strings @@ -85,6 +85,24 @@ /* Share action */ "action.title.share" = "Share"; +/* No comment provided by engineer. */ +"addWidget.button" = "Add Widget"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Search privately and quickly visit sites you love."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Long-press on the home screen to enter jiggle mode."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Tap the plus %@ button."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Find and select DuckDuckGo. Then choose a widget."; + +/* No comment provided by engineer. */ +"addWidget.title" = "One tap to your favorite sites."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Existing bookmarks will not be duplicated."; @@ -607,18 +625,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Whirlpool"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Set as Default Browser"; - -/* No comment provided by engineer. */ -"home.message.header" = "Make DuckDuckGo your default browser."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Open links with peace of mind, every time."; - -/* No comment provided by engineer. */ -"home.message.topText" = "NEW IN IOS 14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Add DuckDuckGo to your home screen!"; diff --git a/DuckDuckGo/es.lproj/Localizable.strings b/DuckDuckGo/es.lproj/Localizable.strings index 3bf383f6e62..c4eae8240a3 100644 --- a/DuckDuckGo/es.lproj/Localizable.strings +++ b/DuckDuckGo/es.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Editar"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Compartir"; +/* No comment provided by engineer. */ +"addWidget.button" = "Añadir widget"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Busca de manera privada y visita rápidamente los sitios que te gustan."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Mantén pulsada la pantalla de inicio para entrar en el modo jiggle."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Pulsa el botón más %@."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Busca y selecciona DuckDuckGo. A continuación, elige un widget."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Visita tus sitios favoritos con un toque."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Los marcadores existentes no se duplicarán."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Remolino"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Definir como navegador predeterminado"; - -/* No comment provided by engineer. */ -"home.message.header" = "Establece DuckDuckGo como tu navegador predeterminado."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Abre los enlaces con tranquilidad, siempre."; - -/* No comment provided by engineer. */ -"home.message.topText" = "NUEVO EN IOS 14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Añade DuckDuckGo a tu pantalla de inicio."; diff --git a/DuckDuckGo/es.lproj/Settings.strings b/DuckDuckGo/es.lproj/Settings.strings index 7fa368690e4..6245fc15a94 100644 --- a/DuckDuckGo/es.lproj/Settings.strings +++ b/DuckDuckGo/es.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Control Global de Privacidad (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Añadir widget a la pantalla de inicio"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Animación del botón Fuego"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Teclado"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Añadir DuckDuckGo a tu inicio"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Añadir una aplicación a tu Dock"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Ayuda"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Pantalla de inicio"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Añadir widget a la pantalla de inicio"; + diff --git a/DuckDuckGo/et.lproj/Localizable.strings b/DuckDuckGo/et.lproj/Localizable.strings index c4f355cfeb2..e412a92b7fe 100644 --- a/DuckDuckGo/et.lproj/Localizable.strings +++ b/DuckDuckGo/et.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Redigeeri"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Jaga"; +/* No comment provided by engineer. */ +"addWidget.button" = "Lisa vidin"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Otsige privaatselt ja külastage kiiresti lemmiksaite."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Pikk vajutus avaekraanile rakenduse ümberkorraldusrežiimi sisenemiseks."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Vajutage plussnupule %@."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Leidke ja valige DuckDuckGo. Seejärel valige vidin."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Ühe puudutusega oma lemmiksaitidele."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Olemasolevaid järjehoidjaid ei dubleerita."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Whirlpool"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Määrake vaikebrauseriks"; - -/* No comment provided by engineer. */ -"home.message.header" = "Muutke DuckDuckGo oma vaikimisi brauseriks."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Avage linke igal ajal, rahuliku meelega."; - -/* No comment provided by engineer. */ -"home.message.topText" = "UUS IOS 14-S"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Lisa DuckDuckGo oma avaekraanile!"; diff --git a/DuckDuckGo/et.lproj/Settings.strings b/DuckDuckGo/et.lproj/Settings.strings index 27b777a19e2..da6b62a9c60 100644 --- a/DuckDuckGo/et.lproj/Settings.strings +++ b/DuckDuckGo/et.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Üleilmne privaatsuskontroll (Global Privacy Control (GPC))"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Lisa vidin avakuvale"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Tulenupu animatsioon"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Klaviatuur"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Lisa DuckDuckGo oma dokki"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Lisa rakendus oma dokki"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Abi"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Avaekraan"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Lisa vidin avakuvale"; + diff --git a/DuckDuckGo/fi.lproj/Localizable.strings b/DuckDuckGo/fi.lproj/Localizable.strings index 076ca9f75c5..2ae615dee1b 100644 --- a/DuckDuckGo/fi.lproj/Localizable.strings +++ b/DuckDuckGo/fi.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Muokkaa"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Jaa"; +/* No comment provided by engineer. */ +"addWidget.button" = "Lisää widget"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Hae yksityisesti ja vieraile nopeasti suosikkisivustoillasi."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Paina pitkään aloitusnäyttöä siirtyäksesi heilutustilaan."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Napauta pluspainiketta %@."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Etsi ja valitse DuckDuckGo. Valitse sitten widget."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Yhdellä napautuksella suosikkisivustoillesi."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Olemassa olevia kirjanmerkkejä ei kopioida."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Pyörre"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Aseta oletusselaimeksi"; - -/* No comment provided by engineer. */ -"home.message.header" = "Tee DuckDuckGo:sta oletusselain."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Avaa linkit ilman stressiä, joka kerta."; - -/* No comment provided by engineer. */ -"home.message.topText" = "UUTTA IOS 14:SSÄ"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Lisää DuckDuckGo koti-valikkoon!"; diff --git a/DuckDuckGo/fi.lproj/Settings.strings b/DuckDuckGo/fi.lproj/Settings.strings index f5f5f96f569..01c870d1cba 100644 --- a/DuckDuckGo/fi.lproj/Settings.strings +++ b/DuckDuckGo/fi.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Global Privacy Control (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Lisää widget aloitusnäyttöön"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Liekki-painikkeen animaatio"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Näppäimistö"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Lisää DuckDuckGo dock-valikkoon"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Lisää sovellus telakkaasi"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Apua"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Koti-valikko"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Lisää widget aloitusnäyttöön"; + diff --git a/DuckDuckGo/fr.lproj/Localizable.strings b/DuckDuckGo/fr.lproj/Localizable.strings index 52b2b51df1a..a855ed3893d 100644 --- a/DuckDuckGo/fr.lproj/Localizable.strings +++ b/DuckDuckGo/fr.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Modifier"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Partager"; +/* No comment provided by engineer. */ +"addWidget.button" = "Ajouter un widget"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Faites des recherches privées et visitez en un clin d'œil les sites que vous aimez."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Appuyez longuement sur l'écran d'accueil pour passer en mode Jiggle."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Appuyez sur le bouton plus %@."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Trouvez et sélectionnez DuckDuckGo. Puis choisissez un widget."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Appuyez une fois et accédez à vos sites préférés."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Les signets existants ne seront pas dupliqués."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Tourbillon"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Définir comme navigateur par défaut"; - -/* No comment provided by engineer. */ -"home.message.header" = "Faites de DuckDuckGo votre navigateur par défaut."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Des liens ouverts en toute tranquillité d'esprit, à chaque fois."; - -/* No comment provided by engineer. */ -"home.message.topText" = "NOUVEAUTÉS IOS 14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Ajoutez DuckDuckGo à votre écran d'accueil !"; diff --git a/DuckDuckGo/fr.lproj/Settings.strings b/DuckDuckGo/fr.lproj/Settings.strings index 5cfb8a8e519..5c99bd5c5de 100644 --- a/DuckDuckGo/fr.lproj/Settings.strings +++ b/DuckDuckGo/fr.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Global Privacy Control (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Ajouter le widget à l'écran d'accueil"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Animation du bouton en forme de flamme"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Clavier"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Ajouter DuckDuckGo à votre Dock"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Ajouter l'application à votre Dock"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Aide"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Écran d'accueil"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Ajouter le widget à l'écran d'accueil"; + diff --git a/DuckDuckGo/hr.lproj/Localizable.strings b/DuckDuckGo/hr.lproj/Localizable.strings index 7993d4fb95a..13039c06e9e 100644 --- a/DuckDuckGo/hr.lproj/Localizable.strings +++ b/DuckDuckGo/hr.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Uredi"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Podijeli"; +/* No comment provided by engineer. */ +"addWidget.button" = "Dodaj widget"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Pretražujte u potpunoj privatnosti i u tren oka posjetite omiljene web stranice."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Duže zadržite prst na početnom zaslonu za ulaz u način tresenja."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Dodirnite gumb plus %@."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Pronađite i odaberite DuckDuckGo. Zatim odaberite widget."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Jednim dodirom do vaših omiljenih stranica."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Postojeće knjižne oznake neće se duplicirati."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Vrtlog"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Postavi kao zadani preglednik"; - -/* No comment provided by engineer. */ -"home.message.header" = "Postavi DuckDuckGo kao svoj zadani preglednik."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Svaki put poveznice otvori spokojno."; - -/* No comment provided by engineer. */ -"home.message.topText" = "NOVO U IOS-u 14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Dodaj DuckDuckGo na svoj početni zaslon!"; diff --git a/DuckDuckGo/hr.lproj/Settings.strings b/DuckDuckGo/hr.lproj/Settings.strings index cd53293abe1..09daaf29baa 100644 --- a/DuckDuckGo/hr.lproj/Settings.strings +++ b/DuckDuckGo/hr.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Globalna kontrola privatnosti (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Dodajte widget na početni zaslon"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Animacija gumba Vatre"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Tipkovnica"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Dodaj DuckDuckGo na svoju traku izbornika"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Dodajte aplikaciju na Dock"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Pomoć"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Početni zaslon"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Dodajte widget na početni zaslon"; + diff --git a/DuckDuckGo/hu.lproj/Localizable.strings b/DuckDuckGo/hu.lproj/Localizable.strings index 63c09a815ec..40f1ac7f4d7 100644 --- a/DuckDuckGo/hu.lproj/Localizable.strings +++ b/DuckDuckGo/hu.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Szerkesztés"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Megosztás"; +/* No comment provided by engineer. */ +"addWidget.button" = "Minialkalmazás hozzáadása"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Folytass privát keresést, és látogass el gyorsan kedvenc oldalaidra."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Az ugráló ikonos üzemmódba lépéshez tartsd nyomva hosszan a kezdőképernyőt."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Koppints a plusz %@ gombra."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Keresd meg és jelöld ki a DuckDuckGo elemet. Ezután válassz egy minialkalmazást."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Egyetlen koppintással nyisd meg kedvenc oldalaidat."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "A meglévő könyvjelzők nem kettőződnek."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Örvény"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Beállítás alapértelmezett böngészőként"; - -/* No comment provided by engineer. */ -"home.message.header" = "Tedd a DuckDuckGót az alapértelmezett böngésződdé."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Nyugodtan kattints a linkekre, mindig."; - -/* No comment provided by engineer. */ -"home.message.topText" = "ÚJDONSÁG AZ IOS 14-BEN"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Add hozzá a DuckDuckGo-t a kezdőképernyődhöz!"; diff --git a/DuckDuckGo/hu.lproj/Settings.strings b/DuckDuckGo/hu.lproj/Settings.strings index f631deff5fb..67065d1bfd8 100644 --- a/DuckDuckGo/hu.lproj/Settings.strings +++ b/DuckDuckGo/hu.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Nemzetközi adatvédelmi szabályozás (Global Privacy Control, GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Minialkalmazás hozzáadása a kezdőképernyőhöz"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Tűz gomb animáció"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Billentyűzet"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "DuckDuckGo hozzáadása a dokkodhoz"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Alkalmazás hozzáadása a dokkodhoz"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Segítség"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Kezdőképernyő"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Minialkalmazás hozzáadása a kezdőképernyőhöz"; + diff --git a/DuckDuckGo/it.lproj/Localizable.strings b/DuckDuckGo/it.lproj/Localizable.strings index 4e4f36b47ed..59763e0c641 100644 --- a/DuckDuckGo/it.lproj/Localizable.strings +++ b/DuckDuckGo/it.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Modifica"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Condividi"; +/* No comment provided by engineer. */ +"addWidget.button" = "Aggiungi widget"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Cerca in privato e visita velocemente i siti che preferisci."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Premi a lungo sulla schermata iniziale per accedere alla modalità Jiggle."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Tocca il pulsante più %@."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Trova e seleziona DuckDuckGo. Quindi scegli un widget."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Accedi ai tuoi siti preferiti con un solo tocco."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "I segnalibri già presenti non saranno duplicati."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Mulinello"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Imposta come browser predefinito"; - -/* No comment provided by engineer. */ -"home.message.header" = "Imposta DuckDuckGo come browser predefinito."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Apri i collegamenti con la massima tranquillità, ogni volta."; - -/* No comment provided by engineer. */ -"home.message.topText" = "NOVITÀ IN IOS 14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Aggiungi DuckDuckGo alla tua schermata iniziale!"; diff --git a/DuckDuckGo/it.lproj/Settings.strings b/DuckDuckGo/it.lproj/Settings.strings index 100d2e35b53..ba6b4f65ebc 100644 --- a/DuckDuckGo/it.lproj/Settings.strings +++ b/DuckDuckGo/it.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Global Privacy Control (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Aggiungi widget alla schermata iniziale"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Animazione pulsante fuoco"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Tastiera"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Aggiungi DuckDuckGo al tuo dock"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Aggiungi app al tuo dock"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Aiuto"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Schermata iniziale"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Aggiungi widget alla schermata iniziale"; + diff --git a/DuckDuckGo/lt.lproj/Localizable.strings b/DuckDuckGo/lt.lproj/Localizable.strings index df815e249a9..2acac0d544d 100644 --- a/DuckDuckGo/lt.lproj/Localizable.strings +++ b/DuckDuckGo/lt.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Redaguoti"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Bendrinti"; +/* No comment provided by engineer. */ +"addWidget.button" = "Pridėti valdiklį"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Ieškokite privačiai ir greitai apsilankykite mėgstamose svetainėse."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Ilgai spauskite pagrindinį ekraną, kad įjungtumėte į programėlių perkėlimo ir ištrynimo režimą."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Bakstelėkite pliuso mygtuką %@."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Raskite ir pasirinkite „DuckDuckGo“. Tuomet pasirinkite valdiklį."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Tik vienas bakstelėjimas – ir jūs jau mėgstamiausiose svetainėse."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Esamos žymės nebus kopijuojamos."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "„Whirlpool“"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Nustatyti kaip numatytąją naršyklę"; - -/* No comment provided by engineer. */ -"home.message.header" = "Nustatykite „DuckDuckGo“ savo numatytąja naršykle."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Kiekvieną kartą be jaudulio atverkite nuorodas."; - -/* No comment provided by engineer. */ -"home.message.topText" = "NAUJIENA „IOS 14“"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Pridėti „DuckDuckGo“ prie pagrindinio ekrano!"; diff --git a/DuckDuckGo/lt.lproj/Settings.strings b/DuckDuckGo/lt.lproj/Settings.strings index e4c2d64df32..0b5c963a109 100644 --- a/DuckDuckGo/lt.lproj/Settings.strings +++ b/DuckDuckGo/lt.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Visuotinė privatumo kontrolė (VPK)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Įtraukti valdiklį į pagrindinį ekraną"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Mygtuko „Fire“ animacija"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Klaviatūra"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Pridėti „DuckDuckGo“ prie juostos"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Įtraukti programėlę į stotelę"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Pagalba"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Pagrindinis ekranas"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Įtraukti valdiklį į pagrindinį ekraną"; + diff --git a/DuckDuckGo/lv.lproj/Localizable.strings b/DuckDuckGo/lv.lproj/Localizable.strings index dcb58cee71c..88a5782344d 100644 --- a/DuckDuckGo/lv.lproj/Localizable.strings +++ b/DuckDuckGo/lv.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Rediģēt"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Kopīgot"; +/* No comment provided by engineer. */ +"addWidget.button" = "Pievienot logrīku"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Meklē privāti un ātri apmeklē mīļākās vietnes."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Ilgi nospied sākuma ekrānā, lai pārietu pārkārtošanas režīmā."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Pieskaries plus %@ pogai."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Atrodi un atlasi DuckDuckGo. Pēc tam izvēlies logrīku."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Viens pieskāriens līdz tavām mīļākajām vietnēm."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Esošās grāmatzīmes netiks dublētas."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Atvars"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Iestatīt kā noklusējuma pārlūku"; - -/* No comment provided by engineer. */ -"home.message.header" = "Padari DuckDuckGo par savu noklusējuma pārlūku!"; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Katru reizi atver saites bez raizēm."; - -/* No comment provided by engineer. */ -"home.message.topText" = "JAUNUMS IOS 14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Pievieno DuckDuckGo savam sākuma ekrānam!"; diff --git a/DuckDuckGo/lv.lproj/Settings.strings b/DuckDuckGo/lv.lproj/Settings.strings index 762d7d619f3..e7c60f3b164 100644 --- a/DuckDuckGo/lv.lproj/Settings.strings +++ b/DuckDuckGo/lv.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Globālā privātuma kontrole (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Pievienot logrīku sākuma ekrānam"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Uguns pogas animācija"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Tastatūra"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Pievienot DuckDuckGo savam dokam"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Pievienot lietotni dokam"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Palīdzība"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Sākuma ekrāns"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Pievienot logrīku sākuma ekrānam"; + diff --git a/DuckDuckGo/nb.lproj/Localizable.strings b/DuckDuckGo/nb.lproj/Localizable.strings index cce5acae425..dac97b32d30 100644 --- a/DuckDuckGo/nb.lproj/Localizable.strings +++ b/DuckDuckGo/nb.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Rediger"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Del"; +/* No comment provided by engineer. */ +"addWidget.button" = "Legg til widget"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Søk privat og gå raskt til nettstedene du liker best."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Trykk lenge på startskjermen for å gå inn i ristemodus."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Trykk på %@-knappen."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Finn og velg DuckDuckGo. Velg deretter en widget."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Ett trykk til favorittnettstedene dine."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Eksisterende bokmerker blir ikke duplisert."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Malstrøm"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Gjør til standardnettleser"; - -/* No comment provided by engineer. */ -"home.message.header" = "Ha DuckDuckGo som standardnettleser."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Åpne lenker med ro i sinnet, hver gang."; - -/* No comment provided by engineer. */ -"home.message.topText" = "NYTT I IOS 14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Legg til DuckDuckGo på startskjermen!"; diff --git a/DuckDuckGo/nb.lproj/Settings.strings b/DuckDuckGo/nb.lproj/Settings.strings index 0e4d97b2169..1f0945ca790 100644 --- a/DuckDuckGo/nb.lproj/Settings.strings +++ b/DuckDuckGo/nb.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Global Privacy Control (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Legg til widgeten på startskjermen"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Animasjon for brannknappen"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Tastatur"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Legg til DuckDuckGo i docken"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Legg til appen i docken"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Hjelp"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Startskjerm"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Legg til widgeten på startskjermen"; + diff --git a/DuckDuckGo/nl.lproj/Localizable.strings b/DuckDuckGo/nl.lproj/Localizable.strings index 681c7cdc92b..30fb24041f8 100644 --- a/DuckDuckGo/nl.lproj/Localizable.strings +++ b/DuckDuckGo/nl.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Bewerken"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Delen"; +/* No comment provided by engineer. */ +"addWidget.button" = "Widget toevoegen"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Zoek privé en bezoek snel sites die je leuk vindt."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Druk lang op het startscherm om de schudmodus te gebruiken."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Tik op de plus %@-knop."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Zoek en selecteer DuckDuckGo. Kies vervolgens een widget."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Eén tik naar uw favoriete sites."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Bestaande bladwijzers worden niet gedupliceerd."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Draaikolk"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Instellen als standaardbrowser"; - -/* No comment provided by engineer. */ -"home.message.header" = "Stel DuckDuckGo in als standaardbrowser."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Open links altijd met een gerust hart."; - -/* No comment provided by engineer. */ -"home.message.topText" = "NIEUW VOOR IOS 14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Voeg DuckDuckGo toe aan je beginscherm!"; diff --git a/DuckDuckGo/nl.lproj/Settings.strings b/DuckDuckGo/nl.lproj/Settings.strings index 798dab00c03..0d86b1a27d3 100644 --- a/DuckDuckGo/nl.lproj/Settings.strings +++ b/DuckDuckGo/nl.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Global Privacy Control (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Widget toevoegen aan startscherm"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Animatie vuurknop"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Toetsenbord"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "DuckDuckGo toevoegen aan je dock"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "App toevoegen aan je dock"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Help"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Beginscherm"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Widget toevoegen aan startscherm"; + diff --git a/DuckDuckGo/pl.lproj/Localizable.strings b/DuckDuckGo/pl.lproj/Localizable.strings index c413a6de901..3a20519f372 100644 --- a/DuckDuckGo/pl.lproj/Localizable.strings +++ b/DuckDuckGo/pl.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Edytuj"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Udostępnij"; +/* No comment provided by engineer. */ +"addWidget.button" = "Dodaj widżet"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Wyszukuj prywatnie i szybko odwiedzaj ulubione witryny."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Przyciśnij i przytrzymaj na ekranie głównym, aby przejść do trybu porządkowania."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Dotknij przycisku ze znakiem plus %@."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Znajdź i zaznacz DuckDuckGo. Następnie wybierz widżet."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Odwiedzaj swoje ulubione witryny jednym dotknięciem."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Istniejące zakładki nie zostaną zduplikowane."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Wir wodny"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Ustaw jako domyślną przeglądarkę"; - -/* No comment provided by engineer. */ -"home.message.header" = "Ustaw DuckDuckGo jako domyślną przeglądarkę."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Zawsze otwieraj linki ze spokojem."; - -/* No comment provided by engineer. */ -"home.message.topText" = "NOWOŚĆ W iOS 14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Dodaj DuckDuckGo do ekranu głównego!"; diff --git a/DuckDuckGo/pl.lproj/Settings.strings b/DuckDuckGo/pl.lproj/Settings.strings index 56d8a487d50..19667af0202 100644 --- a/DuckDuckGo/pl.lproj/Settings.strings +++ b/DuckDuckGo/pl.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Globalna Kontrola Prywatności (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Dodaj widżet do ekranu głównego"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Animacja przycisku ognia"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Klawiatura"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Dodaj DuckDuckGo do Docka"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Dodaj aplikację do Docka"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Pomoc"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Ekran główny"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Dodaj widżet do ekranu głównego"; + diff --git a/DuckDuckGo/pt.lproj/Localizable.strings b/DuckDuckGo/pt.lproj/Localizable.strings index 6d87f010485..771f084e116 100644 --- a/DuckDuckGo/pt.lproj/Localizable.strings +++ b/DuckDuckGo/pt.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Editar"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Partilhar"; +/* No comment provided by engineer. */ +"addWidget.button" = "Adicionar widget"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Pesquise de forma privada e visite rapidamente os sites que adora."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Prima prolongadamente o ecrã inicial para entrar no modo jiggle."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Toque no botão de mais %@."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Encontre e selecione DuckDuckGo. Depois, escolha um widget."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Um toque para os seus sites favoritos."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Os marcadores existentes não serão duplicados."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Remoinho"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Definir como navegador padrão"; - -/* No comment provided by engineer. */ -"home.message.header" = "Faça do DuckDuckGo o seu navegador predefinido."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Abra links com tranquilidade, sempre."; - -/* No comment provided by engineer. */ -"home.message.topText" = "NOVO NO IOS14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Adicione o DuckDuckGo ao seu ecrã inicial!"; diff --git a/DuckDuckGo/pt.lproj/Settings.strings b/DuckDuckGo/pt.lproj/Settings.strings index fe6db3a28db..c9e0c272667 100644 --- a/DuckDuckGo/pt.lproj/Settings.strings +++ b/DuckDuckGo/pt.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Controlo Global de Privacidade (CGP)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Adicionar widget ao ecrã inicial"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Animação do Botão de Fogo"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Teclado"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Adicione o DuckDuckGo à sua dock"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Adicionar aplicação à sua dock"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Ajuda"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Ecrã inicial"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Adicionar widget ao ecrã inicial"; + diff --git a/DuckDuckGo/ro.lproj/Localizable.strings b/DuckDuckGo/ro.lproj/Localizable.strings index 83cdface6d4..bb9db9b9f45 100644 --- a/DuckDuckGo/ro.lproj/Localizable.strings +++ b/DuckDuckGo/ro.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Editați"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Partajare"; +/* No comment provided by engineer. */ +"addWidget.button" = "Adăugare widget"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Caută în mod privat și vizitează rapid site-urile care îți plac."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Ține apăsat pe ecranul de întâmpinare pentru a intra în modul în care elementele „tremură”."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Atinge butonul plus %@."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Găsește și selectează DuckDuckGo. Apoi alege un widget."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Atinge o dată pentru a ajunge la site-urile tale preferate."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Marcajele existente nu vor fi duplicate."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Vârtej de apă"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Setare ca browser implicit"; - -/* No comment provided by engineer. */ -"home.message.header" = "Setează DuckDuckGo ca browser implicit."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Deschide link-urile în siguranță, de fiecare dată."; - -/* No comment provided by engineer. */ -"home.message.topText" = "NOU ÎN IOS 14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Adaugă DuckDuckGo pe ecranul de start!"; diff --git a/DuckDuckGo/ro.lproj/Settings.strings b/DuckDuckGo/ro.lproj/Settings.strings index a4b7e52c2ae..ee05fbad8c8 100644 --- a/DuckDuckGo/ro.lproj/Settings.strings +++ b/DuckDuckGo/ro.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Global Privacy Control (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Adaugă un widget la ecranul de întâmpinare"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Animație buton Foc"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Tastatură"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Adaugă DuckDuckGo pe rândul de jos de pictograme"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Adaugă aplicația la secțiunea ta fixă"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Ajutor"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Ecranul de pornire"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Adaugă un widget la ecranul de întâmpinare"; + diff --git a/DuckDuckGo/ru.lproj/Localizable.strings b/DuckDuckGo/ru.lproj/Localizable.strings index 4ed67c7f07f..0b494b37e08 100644 --- a/DuckDuckGo/ru.lproj/Localizable.strings +++ b/DuckDuckGo/ru.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Редактировать"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Поделиться"; +/* No comment provided by engineer. */ +"addWidget.button" = "Добавить виджет"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Конфиденциальный поиск и быстрый доступ к любимым сайтам."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Удерживайте нажатие на домашнем экране, чтобы запустить режим настройки."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Нажмите кнопку «плюс» %@."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Найдите и выберите DuckDuckGo. Затем выберите виджет."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Доступ к любимым сайтам в одно касание."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Существующие закладки дублироваться не будут."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Водоворот"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Сделать браузером по умолчанию"; - -/* No comment provided by engineer. */ -"home.message.header" = "Выберите DuckDuckGo браузером по умолчанию!"; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Открывайте ссылки, ни о чем не беспокоясь."; - -/* No comment provided by engineer. */ -"home.message.topText" = "ЧТО НОВОГО В IOS 14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Добавьте DuckDuckGo на домашний экран!"; diff --git a/DuckDuckGo/ru.lproj/Settings.strings b/DuckDuckGo/ru.lproj/Settings.strings index 4391aa67c18..ba959e13ab3 100644 --- a/DuckDuckGo/ru.lproj/Settings.strings +++ b/DuckDuckGo/ru.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Глобальный контроль конфиденциальности (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Добавьте виджет на домашний экран"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Анимация кнопки «Пожар»"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Клавиатура"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Добавить DuckDuckGo на док-панель"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Добавьте приложение на док-панель"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Помощь"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Домашний экран"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Добавьте виджет на домашний экран"; + diff --git a/DuckDuckGo/sk.lproj/Localizable.strings b/DuckDuckGo/sk.lproj/Localizable.strings index 7411281573e..7b1ac11448f 100644 --- a/DuckDuckGo/sk.lproj/Localizable.strings +++ b/DuckDuckGo/sk.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Upraviť"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Zdieľať"; +/* No comment provided by engineer. */ +"addWidget.button" = "Pridať miniaplikáciu"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Vyhľadávajte súkromne a rýchlo navštívte svoje obľúbené webové lokality."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Dlhým stlačením na domovskej obrazovke spustíte režim zatrasenia."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Klepnite na tlačidlo plus %@."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Nájdite a vyberte DuckDuckGo. Potom vyberte miniaplikáciu."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Jedným kliknutím na vaše obľúbené webové lokality."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Existujúce záložky sa nebudú duplikovať."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Vodný vír"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Nastaviť ako predvolený prehliadač"; - -/* No comment provided by engineer. */ -"home.message.header" = "Nastavte DuckDuckGo ako svoj predvolený prehliadač."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Vždy otvor odkazy s pokojom mysle."; - -/* No comment provided by engineer. */ -"home.message.topText" = "NOVINKA V IOS 14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Pridajte DuckDuckGo na svoju domovskú obrazovku!"; diff --git a/DuckDuckGo/sk.lproj/Settings.strings b/DuckDuckGo/sk.lproj/Settings.strings index f13b7dc8b25..c37ec9b79c9 100644 --- a/DuckDuckGo/sk.lproj/Settings.strings +++ b/DuckDuckGo/sk.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Globálna kontrola súkromia (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Pridať miniaplikáciu na domovskú obrazovku"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Animácia tlačidla ohňa"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Klávesnica"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Pridať DuckDuckGo do svojho doku"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Pridať aplikáciu do Docku"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Pomoc"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Domovská obrazovka"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Pridať miniaplikáciu na domovskú obrazovku"; + diff --git a/DuckDuckGo/sl.lproj/Localizable.strings b/DuckDuckGo/sl.lproj/Localizable.strings index fbfce34de1c..a53ddd042f9 100644 --- a/DuckDuckGo/sl.lproj/Localizable.strings +++ b/DuckDuckGo/sl.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Uredi"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Deli"; +/* No comment provided by engineer. */ +"addWidget.button" = "Dodaj gradnik"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Iščite zasebno in hitro obiščite spletna mesta, ki so vam všeč."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Pritisnite in pridržite točko na začetnem zaslonu, da vstopite v način premikanja."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Tapnite gumb plus %@."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Poiščite in izberite DuckDuckGo. Nato izberite pripomoček."; + +/* No comment provided by engineer. */ +"addWidget.title" = "En dotik do vaših priljubljenih spletnih mest."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Obstoječi zaznamki ne bodo podvojeni."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Vodni mehurčki"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Nastavite za privzeti brskalnik"; - -/* No comment provided by engineer. */ -"home.message.header" = "Nastavite DuckDuckGo kot privzet brskalnik."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Bodite pomirjeni, ko odpirate povezave."; - -/* No comment provided by engineer. */ -"home.message.topText" = "NOVO V IOS 14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Dodaj DuckDuckGo na domači zaslon!"; diff --git a/DuckDuckGo/sl.lproj/Settings.strings b/DuckDuckGo/sl.lproj/Settings.strings index 1ae50a1fb85..0f22aa58022 100644 --- a/DuckDuckGo/sl.lproj/Settings.strings +++ b/DuckDuckGo/sl.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Globalni nadzor zasebnosti (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Dodajte pripomoček na domači zaslon"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Animacija za gumb ogenj"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Tipkovnica"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Dodajte DuckDuckGo na domači zaslon"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Dodajte aplikacijo na svoj domači zaslon"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Pomoč"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Domači zaslon"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Dodajte pripomoček na domači zaslon"; + diff --git a/DuckDuckGo/sv.lproj/Localizable.strings b/DuckDuckGo/sv.lproj/Localizable.strings index 439a529e39a..66214979b5d 100644 --- a/DuckDuckGo/sv.lproj/Localizable.strings +++ b/DuckDuckGo/sv.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Redigera"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Dela"; +/* No comment provided by engineer. */ +"addWidget.button" = "Lägg till widget"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Sök privat och besök dina favoritwebbplatser snabbt."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Tryck länge på startskärmen tills apparna börjar vicka."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Tryck på plusknappen för %@."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "Leta upp och välj DuckDuckGo. Välj sedan en widget."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Besök dina favoritwebbplatser med ett enda tryck."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Befintliga bokmärken kommer inte att kopieras."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Virvel"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Ställ in som standardwebbläsare"; - -/* No comment provided by engineer. */ -"home.message.header" = "Gör DuckDuckGo till din standardwebbläsare."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Sluta oroa dig varje gång du öppnar länkar."; - -/* No comment provided by engineer. */ -"home.message.topText" = "NYTT I IOS 14"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "Lägg till DuckDuckGo på din hemskärm!"; diff --git a/DuckDuckGo/sv.lproj/Settings.strings b/DuckDuckGo/sv.lproj/Settings.strings index 4ba2aafc705..fb4a01601db 100644 --- a/DuckDuckGo/sv.lproj/Settings.strings +++ b/DuckDuckGo/sv.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Global Privacy Control (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Lägg till widget på startsidan"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Animation för brännarknapp"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Tangentbord"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "Lägg till DuckDuckGo i din Dock"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Lägg till app i din Dock"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Hjälp"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Hemskärm"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Lägg till widget på startsidan"; + diff --git a/DuckDuckGo/tr.lproj/Localizable.strings b/DuckDuckGo/tr.lproj/Localizable.strings index a83308c54be..fc5cb6ecc8a 100644 --- a/DuckDuckGo/tr.lproj/Localizable.strings +++ b/DuckDuckGo/tr.lproj/Localizable.strings @@ -1,3 +1,6 @@ +/* No comment provided by engineer. */ +"%@" = "%@"; + /* Buton label for Edit action */ "action.generic.edit" = "Düzenle"; @@ -85,6 +88,24 @@ /* Share action */ "action.title.share" = "Paylaş"; +/* No comment provided by engineer. */ +"addWidget.button" = "Widget Ekle"; + +/* No comment provided by engineer. */ +"addWidget.description" = "Gizlice arama yapın ve sevdiğiniz siteleri hızlı bir şekilde ziyaret edin."; + +/* No comment provided by engineer. */ +"addWidget.settings.firstParagraph" = "Sallama moduna girmek için ana ekranda uzun basın."; + +/* Replacement string is a plus button icon. */ +"addWidget.settings.secondParagraph.%@" = "Artı %@ düğmesine dokunun."; + +/* No comment provided by engineer. */ +"addWidget.settings.title" = "DuckDuckGo'yu bulun ve seçin. Ardından bir widget seçin."; + +/* No comment provided by engineer. */ +"addWidget.title" = "Favori sitelerinize tek dokunuşla erişin."; + /* No comment provided by engineer. */ "alert.message.bookmarkAll" = "Mevcut yer imleri çoğaltılmayacaktır."; @@ -607,18 +628,6 @@ /* No comment provided by engineer. */ "fireButtonAnimation.waterSwirl.name" = "Girdap"; -/* No comment provided by engineer. */ -"home.message.buttonText" = "Varsayılan Tarayıcı olarak ayarla"; - -/* No comment provided by engineer. */ -"home.message.header" = "DuckDuckGo'yu varsayılan tarayıcınız yapın."; - -/* No comment provided by engineer. */ -"home.message.subheader" = "Her zaman gönül rahatlığıyla açık bağlantılar."; - -/* No comment provided by engineer. */ -"home.message.topText" = "IOS 14'TE YENİ"; - /* No comment provided by engineer. */ "home.row.onboarding.header" = "DuckDuckGo'yu ana ekranınıza ekleyin!"; diff --git a/DuckDuckGo/tr.lproj/Settings.strings b/DuckDuckGo/tr.lproj/Settings.strings index 608d45318c8..4cb34fa84ef 100644 --- a/DuckDuckGo/tr.lproj/Settings.strings +++ b/DuckDuckGo/tr.lproj/Settings.strings @@ -133,6 +133,9 @@ /* Class = "UITableViewController"; title = "Global Privacy Control (GPC)"; ObjectID = "fV3-86-QQj"; */ "fV3-86-QQj.title" = "Küresel Gizlilik Kontrolü (GPC)"; +/* Class = "UILabel"; text = "Add Widget to Home Screen"; ObjectID = "Fxu-zn-51Z"; */ +"Fxu-zn-51Z.text" = "Widget'ı Ana Ekrana Ekle"; + /* Class = "UILabel"; text = "Fire Button Animation"; ObjectID = "gBo-Cu-e2k"; Note = "Fire button animation settings item"; */ "gBo-Cu-e2k.text" = "Yangın Düğmesi Animasyonu"; @@ -241,8 +244,8 @@ /* Class = "UILabel"; text = "Keyboard"; ObjectID = "yoZ-jw-Cu3"; */ "yoZ-jw-Cu3.text" = "Klavye"; -/* Class = "UILabel"; text = "Add DuckDuckGo to Your Dock"; ObjectID = "yvj-LL-MiR"; */ -"yvj-LL-MiR.text" = "DuckDuckGo'yu Dock'una Ekle"; +/* Class = "UILabel"; text = "Add App to Your Dock"; ObjectID = "yvj-LL-MiR"; */ +"yvj-LL-MiR.text" = "Uygulamayı Dock'a Ekle"; /* Class = "UITableViewSection"; headerTitle = "Help"; ObjectID = "zMK-jc-4bJ"; */ "zMK-jc-4bJ.headerTitle" = "Yardım"; @@ -253,3 +256,6 @@ /* Class = "UITableViewController"; title = "Home Screen"; ObjectID = "zWP-d3-nVc"; */ "zWP-d3-nVc.title" = "Ana Ekran"; +/* Class = "UINavigationItem"; title = "Add Widget to Home Screen"; ObjectID = "zZa-pF-SHk"; */ +"zZa-pF-SHk.title" = "Widget'ı Ana Ekrana Ekle"; + diff --git a/DuckDuckGoTests/HomeRowReminderTests.swift b/DuckDuckGoTests/HomeRowReminderTests.swift index cba1f5e6c76..8408a14df35 100644 --- a/DuckDuckGoTests/HomeRowReminderTests.swift +++ b/DuckDuckGoTests/HomeRowReminderTests.swift @@ -32,7 +32,7 @@ class HomeRowReminderTests: XCTestCase { func testWhenFeatureFirstAccessedThenDateIsStored() { let feature = HomeRowReminder(storage: storage) - _ = feature.showNow(isDefaultBrowserSupported: false) + _ = feature.showNow() XCTAssertNotNil(storage.firstAccessDate) } @@ -43,19 +43,19 @@ class HomeRowReminderTests: XCTestCase { let feature = HomeRowReminder(storage: storage) feature.setShown() - XCTAssertFalse(feature.showNow(isDefaultBrowserSupported: false)) + XCTAssertFalse(feature.showNow()) } func testWhenIsNewAndTimeHasElapsedThenShow() { setReminderTimeElapsed() let feature = HomeRowReminder(storage: storage) - XCTAssertTrue(feature.showNow(isDefaultBrowserSupported: false)) + XCTAssertTrue(feature.showNow()) } func testWhenIsNewAndTimeNotElapsedThenDontShow() { let feature = HomeRowReminder(storage: storage) - XCTAssertFalse(feature.showNow(isDefaultBrowserSupported: false)) + XCTAssertFalse(feature.showNow()) } private func setReminderTimeElapsed() {