From 9f0bce7201f087bea7272107b64017e2fc59a244 Mon Sep 17 00:00:00 2001 From: Olivier Halligon Date: Thu, 25 Nov 2021 19:30:22 +0100 Subject: [PATCH 01/12] Replace LocalizedStringKey constants with AppLocalizedString calls To be parsed and recognized by genstrings --- WordPress/WordPress.xcodeproj/project.pbxproj | 8 +- .../Model/GroupedViewData.swift | 10 +- .../Model/ListViewData.swift | 2 +- .../Views/Cards/FlexibleCard.swift | 4 +- .../Views/Cards/ListRow.swift | 4 +- .../Views/Cards/VerticalCard.swift | 2 +- .../Localization/AppLocalizedString.swift | 18 +++ .../Localization/LocalizableStrings.swift | 110 +++++++++--------- .../LocalizedStringKey+extension.swift | 11 -- .../Views/MultiStatsView.swift | 4 +- .../Views/UnconfiguredView.swift | 2 +- 11 files changed, 91 insertions(+), 84 deletions(-) create mode 100644 WordPress/WordPressStatsWidgets/Views/Localization/AppLocalizedString.swift delete mode 100644 WordPress/WordPressStatsWidgets/Views/Localization/LocalizedStringKey+extension.swift diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index 9496251ddb0a..2af9e5631e86 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -476,7 +476,7 @@ 3F1FD2502548AD8B0060C53A /* TodayWidgetStats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98E58A2E2360D23400E5534B /* TodayWidgetStats.swift */; }; 3F1FD27B2548AE900060C53A /* CocoaLumberjack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 938CF3DB1EF1BE6800AF838E /* CocoaLumberjack.swift */; }; 3F1FD30D2548B0A80060C53A /* Constants.m in Sources */ = {isa = PBXBuildFile; fileRef = B5CC05F51962150600975CAC /* Constants.m */; }; - 3F2656A125AF4DFA0073A832 /* LocalizedStringKey+extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F2656A025AF4DFA0073A832 /* LocalizedStringKey+extension.swift */; }; + 3F2656A125AF4DFA0073A832 /* AppLocalizedString.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F2656A025AF4DFA0073A832 /* AppLocalizedString.swift */; }; 3F29EB7224042276005313DE /* MeViewController+UIViewControllerRestoration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F29EB7124042276005313DE /* MeViewController+UIViewControllerRestoration.swift */; }; 3F2F0C16256C6B2C003351C7 /* StatsWidgetsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F2F0C15256C6B2C003351C7 /* StatsWidgetsService.swift */; }; 3F2F854026FAE9DC000FCDA5 /* BlockEditorScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC2BB0C92289CC3B0034F9AB /* BlockEditorScreen.swift */; }; @@ -5116,7 +5116,7 @@ 3F1AD48023FC87A400BB1375 /* BlogDetailsViewController+MeButtonTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BlogDetailsViewController+MeButtonTests.swift"; sourceTree = ""; }; 3F1B66A223A2F54B0075F09E /* ReaderReblogActionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReaderReblogActionTests.swift; sourceTree = ""; }; 3F1FD31C2548B30D0060C53A /* WordPressStatsWidgets-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "WordPressStatsWidgets-Bridging-Header.h"; sourceTree = ""; }; - 3F2656A025AF4DFA0073A832 /* LocalizedStringKey+extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "LocalizedStringKey+extension.swift"; sourceTree = ""; }; + 3F2656A025AF4DFA0073A832 /* AppLocalizedString.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppLocalizedString.swift; sourceTree = ""; }; 3F26DFD124930B5900B5EBD1 /* WordPress 96.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "WordPress 96.xcdatamodel"; sourceTree = ""; }; 3F29EB7124042276005313DE /* MeViewController+UIViewControllerRestoration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MeViewController+UIViewControllerRestoration.swift"; sourceTree = ""; }; 3F2F0C15256C6B2C003351C7 /* StatsWidgetsService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatsWidgetsService.swift; sourceTree = ""; }; @@ -9027,7 +9027,7 @@ isa = PBXGroup; children = ( 3FE77C8225B0CA89007DE9E5 /* LocalizableStrings.swift */, - 3F2656A025AF4DFA0073A832 /* LocalizedStringKey+extension.swift */, + 3F2656A025AF4DFA0073A832 /* AppLocalizedString.swift */, ); path = Localization; sourceTree = ""; @@ -18485,7 +18485,7 @@ 3F1FD2502548AD8B0060C53A /* TodayWidgetStats.swift in Sources */, 3F2F0C16256C6B2C003351C7 /* StatsWidgetsService.swift in Sources */, 3F526D572539FAC60069706C /* StatsWidgetsView.swift in Sources */, - 3F2656A125AF4DFA0073A832 /* LocalizedStringKey+extension.swift in Sources */, + 3F2656A125AF4DFA0073A832 /* AppLocalizedString.swift in Sources */, 3F568A0025420DE80048A9E4 /* MultiStatsView.swift in Sources */, 3F6BC05C25B24773007369D3 /* FeatureFlagOverrideStore.swift in Sources */, 3FD675EA25C87A25009AB3C1 /* WordPressHomeWidgetToday.swift in Sources */, diff --git a/WordPress/WordPressStatsWidgets/Model/GroupedViewData.swift b/WordPress/WordPressStatsWidgets/Model/GroupedViewData.swift index e2d43b615ec6..3c3f3afdcda6 100644 --- a/WordPress/WordPressStatsWidgets/Model/GroupedViewData.swift +++ b/WordPress/WordPressStatsWidgets/Model/GroupedViewData.swift @@ -2,15 +2,15 @@ import SwiftUI struct GroupedViewData { - let widgetTitle: LocalizedStringKey + let widgetTitle: LocalizedString let siteName: String - let upperLeftTitle: LocalizedStringKey + let upperLeftTitle: LocalizedString let upperLeftValue: Int - let upperRightTitle: LocalizedStringKey + let upperRightTitle: LocalizedString let upperRightValue: Int - let lowerLeftTitle: LocalizedStringKey + let lowerLeftTitle: LocalizedString let lowerLeftValue: Int - let lowerRightTitle: LocalizedStringKey + let lowerRightTitle: LocalizedString let lowerRightValue: Int let statsURL: URL? diff --git a/WordPress/WordPressStatsWidgets/Model/ListViewData.swift b/WordPress/WordPressStatsWidgets/Model/ListViewData.swift index 605055e2bcdd..8f484f19b16b 100644 --- a/WordPress/WordPressStatsWidgets/Model/ListViewData.swift +++ b/WordPress/WordPressStatsWidgets/Model/ListViewData.swift @@ -2,7 +2,7 @@ import SwiftUI struct ListViewData { - let widgetTitle: LocalizedStringKey + let widgetTitle: LocalizedString let siteName: String let items: [ThisWeekWidgetDay] diff --git a/WordPress/WordPressStatsWidgets/Views/Cards/FlexibleCard.swift b/WordPress/WordPressStatsWidgets/Views/Cards/FlexibleCard.swift index 3e201ea2565e..0f5c64b468b3 100644 --- a/WordPress/WordPressStatsWidgets/Views/Cards/FlexibleCard.swift +++ b/WordPress/WordPressStatsWidgets/Views/Cards/FlexibleCard.swift @@ -3,11 +3,11 @@ import SwiftUI /// A card with a title and a numeric or string value that can be either vertically or horizontally stacked struct FlexibleCard: View { let axis: Axis - let title: LocalizedStringKey + let title: LocalizedString let value: Value let lineLimit: Int - init(axis: Axis, title: LocalizedStringKey, value: Value, lineLimit: Int = 1) { + init(axis: Axis, title: LocalizedString, value: Value, lineLimit: Int = 1) { self.axis = axis self.title = title self.value = value diff --git a/WordPress/WordPressStatsWidgets/Views/Cards/ListRow.swift b/WordPress/WordPressStatsWidgets/Views/Cards/ListRow.swift index f31824a6e737..cd641190d306 100644 --- a/WordPress/WordPressStatsWidgets/Views/Cards/ListRow.swift +++ b/WordPress/WordPressStatsWidgets/Views/Cards/ListRow.swift @@ -48,12 +48,12 @@ struct ListRow: View { return percentValue < 0 ? Constants.negativeColor : Constants.positiveColor } - private var differenceLabelText: LocalizedStringKey { + private var differenceLabelText: LocalizedString { guard !isToday else { return LocalizableStrings.todayWidgetTitle } - return LocalizedStringKey(dateFormatter.string(from: date)) + return dateFormatter.string(from: date) } var body: some View { diff --git a/WordPress/WordPressStatsWidgets/Views/Cards/VerticalCard.swift b/WordPress/WordPressStatsWidgets/Views/Cards/VerticalCard.swift index de1d19e2dbd6..254c26a4b49a 100644 --- a/WordPress/WordPressStatsWidgets/Views/Cards/VerticalCard.swift +++ b/WordPress/WordPressStatsWidgets/Views/Cards/VerticalCard.swift @@ -2,7 +2,7 @@ import SwiftUI /// A card with a title and a value stacked vertically struct VerticalCard: View { - let title: LocalizedStringKey + let title: LocalizedString let value: Int let largeText: Bool diff --git a/WordPress/WordPressStatsWidgets/Views/Localization/AppLocalizedString.swift b/WordPress/WordPressStatsWidgets/Views/Localization/AppLocalizedString.swift new file mode 100644 index 000000000000..240f0dcc7182 --- /dev/null +++ b/WordPress/WordPressStatsWidgets/Views/Localization/AppLocalizedString.swift @@ -0,0 +1,18 @@ +import SwiftUI + +extension Bundle { + static let app: Bundle = { + var url = Bundle.main.bundleURL + while url.pathExtension != "app" && url.lastPathComponent != "/" { + url.deleteLastPathComponent() + } + guard let appBundle = Bundle(url: url) else { fatalError("Unable to find the parent app bundle") } + return appBundle + }() +} + +typealias LocalizedString = String // Useful only to express intent on your API; does not provide any compile-time guarantee + +func AppLocalizedString(_ key: String, value: String?, comment: String) -> LocalizedString { + Bundle.app.localizedString(forKey: key, value: value, table: nil) +} diff --git a/WordPress/WordPressStatsWidgets/Views/Localization/LocalizableStrings.swift b/WordPress/WordPressStatsWidgets/Views/Localization/LocalizableStrings.swift index 81c78506cc70..c8df017cda9f 100644 --- a/WordPress/WordPressStatsWidgets/Views/Localization/LocalizableStrings.swift +++ b/WordPress/WordPressStatsWidgets/Views/Localization/LocalizableStrings.swift @@ -2,77 +2,77 @@ import SwiftUI enum LocalizableStrings { // Today Widget title - static let todayWidgetTitle = LocalizedStringKey("widget.today.title", - defaultValue: "Today", - comment: "Title of today widget") - + static let todayWidgetTitle = AppLocalizedString("widget.today.title", + value: "Today", + comment: "Title of today widget") + // All Time Widget title - static let allTimeWidgetTitle = LocalizedStringKey("widget.alltime.title", - defaultValue: "All Time", + static let allTimeWidgetTitle = AppLocalizedString("widget.alltime.title", + value: "All Time", comment: "Title of all time widget") - + // This Week Widget title - static let thisWeekWidgetTitle = LocalizedStringKey("widget.thisweek.title", - defaultValue: "This Week", - comment: "Title of this week widget") - + static let thisWeekWidgetTitle = AppLocalizedString("widget.thisweek.title", + value: "This Week", + comment: "Title of this week widget") + // Widgets content - static let viewsTitle = LocalizedStringKey("widget.today.views.label", - defaultValue: "Views", + static let viewsTitle = AppLocalizedString("widget.today.views.label", + value: "Views", comment: "Title of views label in today widget") - - static let visitorsTitle = LocalizedStringKey("widget.today.visitors.label", - defaultValue: "Visitors", + + static let visitorsTitle = AppLocalizedString("widget.today.visitors.label", + value: "Visitors", comment: "Title of visitors label in today widget") - - static let likesTitle = LocalizedStringKey("widget.today.likes.label", - defaultValue: "Likes", + + static let likesTitle = AppLocalizedString("widget.today.likes.label", + value: "Likes", comment: "Title of likes label in today widget") - - static let commentsTitle = LocalizedStringKey("widget.today.comments.label", - defaultValue: "Comments", + + static let commentsTitle = AppLocalizedString("widget.today.comments.label", + value: "Comments", comment: "Title of comments label in today widget") - - static let postsTitle = LocalizedStringKey("widget.alltime.posts.label", - defaultValue: "Posts", + + static let postsTitle = AppLocalizedString("widget.alltime.posts.label", + value: "Posts", comment: "Title of posts label in all time widget") - - static let bestViewsTitle = LocalizedStringKey("widget.alltime.bestviews.label", - defaultValue: "Best views ever", + + static let bestViewsTitle = AppLocalizedString("widget.alltime.bestviews.label", + value: "Best views ever", comment: "Title of best views ever label in all time widget") // Unconfigured view - static let unconfiguredViewTodayTitle = LocalizedStringKey("widget.today.unconfigured.view.title", - defaultValue: "Log in to WordPress to see today's stats.", - comment: "Title of the unconfigured view in today widget") - - static let unconfiguredViewAllTimeTitle = LocalizedStringKey("widget.alltime.unconfigured.view.title", - defaultValue: "Log in to WordPress to see all time stats.", - comment: "Title of the unconfigured view in all time widget") - - static let unconfiguredViewThisWeekTitle = LocalizedStringKey("widget.thisweek.unconfigured.view.title", - defaultValue: "Log in to WordPress to see this week's stats.", - comment: "Title of the unconfigured view in this week widget") + static let unconfiguredViewTodayTitle = AppLocalizedString("widget.today.unconfigured.view.title", + value: "Log in to WordPress to see today's stats.", + comment: "Title of the unconfigured view in today widget") + + static let unconfiguredViewAllTimeTitle = AppLocalizedString("widget.alltime.unconfigured.view.title", + value: "Log in to WordPress to see all time stats.", + comment: "Title of the unconfigured view in all time widget") + + static let unconfiguredViewThisWeekTitle = AppLocalizedString("widget.thisweek.unconfigured.view.title", + value: "Log in to WordPress to see this week's stats.", + comment: "Title of the unconfigured view in this week widget") // No data view - static let noDataViewTitle = LocalizedStringKey("widget.today.nodata.view.title", - defaultValue: "Unable to load site stats.", - comment: "Title of the nodata view in today widget") - + static let noDataViewTitle = AppLocalizedString("widget.today.nodata.view.title", + value: "Unable to load site stats.", + comment: "Title of the nodata view in today widget") + // Today Widget Preview - static let todayPreviewDescription = LocalizedStringKey("widget.today.preview.description", - defaultValue: "Stay up to date with today's activity on your WordPress site.", - comment: "Description of today widget in the preview") + static let todayPreviewDescription = AppLocalizedString("widget.today.preview.description", + value: "Stay up to date with today's activity on your WordPress site.", + comment: "Description of today widget in the preview") // All Time Widget preview - static let allTimePreviewDescription = LocalizedStringKey("widget.alltime.preview.description", - defaultValue: "Stay up to date with all time activity on your WordPress site.", + static let allTimePreviewDescription = AppLocalizedString("widget.alltime.preview.description", + value: "Stay up to date with all time activity on your WordPress site.", comment: "Description of all time widget in the preview") - + // This Week Widget preview - static let thisWeekPreviewDescription = LocalizedStringKey("widget.thisweek.preview.description", - defaultValue: "Stay up to date with this week activity on your WordPress site.", - comment: "Description of all time widget in the preview") - + static let thisWeekPreviewDescription = AppLocalizedString("widget.thisweek.preview.description", + value: "Stay up to date with this week activity on your WordPress site.", + comment: "Description of all time widget in the preview") + // Errors - static let unavailableViewTitle = LocalizedStringKey("widget.today.view.unavailable.title", - defaultValue: "View is unavailable", + static let unavailableViewTitle = AppLocalizedString("widget.today.view.unavailable.title", + value: "View is unavailable", comment: "Error message to show if a widget view is unavailable") } diff --git a/WordPress/WordPressStatsWidgets/Views/Localization/LocalizedStringKey+extension.swift b/WordPress/WordPressStatsWidgets/Views/Localization/LocalizedStringKey+extension.swift deleted file mode 100644 index 1efd51a016a6..000000000000 --- a/WordPress/WordPressStatsWidgets/Views/Localization/LocalizedStringKey+extension.swift +++ /dev/null @@ -1,11 +0,0 @@ -import SwiftUI - -extension LocalizedStringKey { - static let defaultBundle = Bundle(for: StatsWidgetsService.self) - - /// LocalizedStringKey is used as a wrapper of NSLocalizedString, in order to use synthetic keys and assign a default value - /// in case of missing localization. This will need to be updated (if and) as soon as LocalizedStringKey supports default values - init(_ key: String, defaultValue: String, comment: String) { - self.init(NSLocalizedString(key, tableName: nil, bundle: Self.defaultBundle, value: defaultValue, comment: comment)) - } -} diff --git a/WordPress/WordPressStatsWidgets/Views/MultiStatsView.swift b/WordPress/WordPressStatsWidgets/Views/MultiStatsView.swift index f2cca9878490..86b86be89bdc 100644 --- a/WordPress/WordPressStatsWidgets/Views/MultiStatsView.swift +++ b/WordPress/WordPressStatsWidgets/Views/MultiStatsView.swift @@ -26,9 +26,9 @@ } /// Constructs a two-card column for the medium size Today widget - private func makeColumn(upperTitle: LocalizedStringKey, + private func makeColumn(upperTitle: LocalizedString, upperValue: Int, - lowerTitle: LocalizedStringKey, + lowerTitle: LocalizedString, lowerValue: Int) -> some View { VStack(alignment: .leading) { VerticalCard(title: upperTitle, value: upperValue, largeText: false) diff --git a/WordPress/WordPressStatsWidgets/Views/UnconfiguredView.swift b/WordPress/WordPressStatsWidgets/Views/UnconfiguredView.swift index 823e9a1fbd9e..e78eb4fc89a6 100644 --- a/WordPress/WordPressStatsWidgets/Views/UnconfiguredView.swift +++ b/WordPress/WordPressStatsWidgets/Views/UnconfiguredView.swift @@ -12,7 +12,7 @@ struct UnconfiguredView: View { .padding() } - var unconfiguredMessage: LocalizedStringKey { + var unconfiguredMessage: LocalizedString { switch widgetKind { case .today: return LocalizableStrings.unconfiguredViewTodayTitle From 1e5c937b5e0d49d7bad8a85c919750ef62c41be8 Mon Sep 17 00:00:00 2001 From: Olivier Halligon Date: Thu, 25 Nov 2021 19:30:54 +0100 Subject: [PATCH 02/12] Update Fastfile to recognize AppLocalizedString as a L10n routine --- fastlane/Fastfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 485f649085d8..7d4c10dc3552 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -418,7 +418,8 @@ platform :ios do en_lproj = 'WordPress/Resources/en.lproj' ios_generate_strings_file_from_code( paths: ['WordPress/', 'Pods/WordPress*/', 'Pods/WPMediaPicker/', 'WordPressShared/WordPressShared/', 'Pods/Gutenberg/'], - exclude: ['*Vendor*', 'WordPress/WordPressTest/I18n.swift', 'WordPress/WordPressStatsWidgets/Views/Localization/LocalizedStringKey+extension.swift', '*/Secrets.swift'], + exclude: ['*Vendor*', 'WordPress/WordPressTest/I18n.swift', 'WordPress/WordPressStatsWidgets/Views/Localization/AppLocalizedString.swift'], + routines: ['AppLocalizedString'], output_dir: en_lproj ) From 85fe5c7db68804f89c4124dd6331575a0f3ded4e Mon Sep 17 00:00:00 2001 From: Olivier Halligon Date: Thu, 25 Nov 2021 19:32:04 +0100 Subject: [PATCH 03/12] Update strings for localization --- .../Resources/en.lproj/Localizable.strings | Bin 856116 -> 862912 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/WordPress/Resources/en.lproj/Localizable.strings b/WordPress/Resources/en.lproj/Localizable.strings index 05c0a13ad3ceb99d1eaf3edb026f28a1d6881221..1ace02d3158c2211c57476b408fd3e6df3954abe 100644 GIT binary patch delta 3340 zcmbtXdrVVj6u-Ck*?TXg?QJP7AT1yWLMg`hi0Fo9&TKefvbhkN$G;LPKsl*qs)c%y>YzHc z$bePbdr3KUZJ_8JoT#A9$zAT7Iy2nzFxha#C0R_JR5$ek<)gZy`_UF`cgS{OD-Lv0 z?Lf;JHrU@tXRF;*E1GvwtItny&YpygIP@r=4qVwo_(4N4V}&oS%L)`N=FF>B$N1r*8r&XVgkwIc z0LPZ&Q$Rh2CR?M%)2`MUPN|ylEf(B$x`m;(CET~R{vcz~jCvNv-jFaqYXznM6P-oh zhGw5foNZ9INY00M=I}g}F|-0-%Tg{!@O$CpE4)kFb4fAPjxUZA@Pg@a&Ylt7pBSpd zAsDvPxv+T|vl^V$g47$V=kVb}!Fu7C3ZI=~CP_t~kP3V$ORmsLudvMnLsq5$a(@#X z{crNDW{B`y7b5M3$ZgRI$3El@FwDsa_kBUBa8hMdB_&~Ko+N7!DCP;XkPO*`ad3q> z749w;3PRzaFs}wy)Y4hnjlGB}BC!1<0t?2A_|I~lx6p1aA}oh7g*Nv8#VNEK=noVX z#2YaE}#3y9E8OMKENfjoN`OzHg5RbCwDs-2x~3q&&E4))}>9 zUNLVC)ri<@(V!0vkUAk%Oyh>cr7T}dIvY? zLxUTn(XurApxi(!8I4%!Br4I3@ZKgx)s7z(d;4}vp}yVn%KgzkNN<5Zy6Lx9 zwxAC}CsyTz8h*j~LdL#oTHG12~p23>iD< zrEr7O8R6gEf?`ihr1iLLb{_qhUg9y;Q`LMyg`?LvBZNJYlS}f@vOYFw;U`!){+z(W z==ZFl;{J^M7<6BPj~kl(v<(bjv68S3y*6XhZwM(iJ88J%tvVjJSXi_R2W?t+o)Jbg z&J3Fm=@l4aI0JaTqb(C~mCTN9H*9}~SG7A=ML2symqk+OV0KU)u$_}tlvd5(f+|eR zTj}iVj+@BzV#3Cg=f<{2+(Gr*oCWsn;>_CJTMCTS>kSMh95$9P`7_72GBv*BbS0J3 zgHiS28Ry0mY&H>wf;D^=xQiJHZs~O9bRorHWWl^*#t3KTGKOiGPxT)s`6?$#^m^?= zvo&2*ZQ6mQe9S#DK0kd}ry75t!0Hu|;5RUMeSwEcnNn@|A`b(_I-_YyeZs*KCeJk; z4AN3jo0JrNxLYxar06FWI{hqX z1^;^VKm;n|4J?WW>xC%P3WrOW>}l$owCgx_JggG?(#bM>PU0avC}qRpBD}u&OBjX7 zaSnV`!Z@ZDdg){#CLPUAf+sZw0&TQua zBxfQwmQ*I2P*#2a)wcz)aN<1njR{FibQ7q_ z?W&O-IqBz0RX(T#vAM*0hsQ^{Ap|PW}OKXfIs@ SVLvTG?FwEB1=lD;-~0zPmq&E~ delta 207 zcmV;=05Jc+)ikuAG_cH=vqG6L#D|Dp0f&fQ0*8oR1Gk7?1UTE15QYSo?nwtUw|qMV z$QPGT!2uALE}aM>mkvDxB!|9K1&6*=2DiRc2euQJf@}vAm!N6~2A5!H2Mo6kX$M9y zmk?wJ1eXvy2OyJBu>`j|ng=97w^G~(EW(p8e-xKcga;hA;-3g6Z?}#Q3G5`7kT?lK zx2!e^@-3I}V+j_AEM*C|EM*GVDu;TI3b%TY3rvug5I+Y5w~j9idNP;r3^KVw Jw;*E-pvOrPO+^3z From da86de6de722d36da77d69a04f74f0c0cb5db849 Mon Sep 17 00:00:00 2001 From: Olivier Halligon Date: Thu, 25 Nov 2021 19:33:29 +0100 Subject: [PATCH 04/12] Revert changes to generated .strings file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 85fe5c7db68804f89c4124dd6331575a0f3ded4e – which was created after we ran `fastlane generate_strings_file_for_glotpress` to confirm that the changes in the Fastfile worked as expected and were able to detect strings in the Widget code. We need to revert those changes to the generated `Localizable.strings` file because this branch will be merged in `develop` and we should not update that `.strings` file – imported by GlotPress – outside of code freeze; otherwise newer strings, associated with not-yet-frozen code, would be imported in GlotPress too soon. --- .../Resources/en.lproj/Localizable.strings | Bin 862912 -> 856116 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/WordPress/Resources/en.lproj/Localizable.strings b/WordPress/Resources/en.lproj/Localizable.strings index 1ace02d3158c2211c57476b408fd3e6df3954abe..05c0a13ad3ceb99d1eaf3edb026f28a1d6881221 100644 GIT binary patch delta 207 zcmV;=05Jc+)ikuAG_cH=vqG6L#D|Dp0f&fQ0*8oR1Gk7?1UTE15QYSo?nwtUw|qMV z$QPGT!2uALE}aM>mkvDxB!|9K1&6*=2DiRc2euQJf@}vAm!N6~2A5!H2Mo6kX$M9y zmk?wJ1eXvy2OyJBu>`j|ng=97w^G~(EW(p8e-xKcga;hA;-3g6Z?}#Q3G5`7kT?lK zx2!e^@-3I}V+j_AEM*C|EM*GVDu;TI3b%TY3rvug5I+Y5w~j9idNP;r3^KVw Jw;*E-pvOrPO+^3z delta 3340 zcmbtXdrVVj6u-Ck*?TXg?QJP7AT1yWLMg`hi0Fo9&TKefvbhkN$G;LPKsl*qs)c%y>YzHc z$bePbdr3KUZJ_8JoT#A9$zAT7Iy2nzFxha#C0R_JR5$ek<)gZy`_UF`cgS{OD-Lv0 z?Lf;JHrU@tXRF;*E1GvwtItny&YpygIP@r=4qVwo_(4N4V}&oS%L)`N=FF>B$N1r*8r&XVgkwIc z0LPZ&Q$Rh2CR?M%)2`MUPN|ylEf(B$x`m;(CET~R{vcz~jCvNv-jFaqYXznM6P-oh zhGw5foNZ9INY00M=I}g}F|-0-%Tg{!@O$CpE4)kFb4fAPjxUZA@Pg@a&Ylt7pBSpd zAsDvPxv+T|vl^V$g47$V=kVb}!Fu7C3ZI=~CP_t~kP3V$ORmsLudvMnLsq5$a(@#X z{crNDW{B`y7b5M3$ZgRI$3El@FwDsa_kBUBa8hMdB_&~Ko+N7!DCP;XkPO*`ad3q> z749w;3PRzaFs}wy)Y4hnjlGB}BC!1<0t?2A_|I~lx6p1aA}oh7g*Nv8#VNEK=noVX z#2YaE}#3y9E8OMKENfjoN`OzHg5RbCwDs-2x~3q&&E4))}>9 zUNLVC)ri<@(V!0vkUAk%Oyh>cr7T}dIvY? zLxUTn(XurApxi(!8I4%!Br4I3@ZKgx)s7z(d;4}vp}yVn%KgzkNN<5Zy6Lx9 zwxAC}CsyTz8h*j~LdL#oTHG12~p23>iD< zrEr7O8R6gEf?`ihr1iLLb{_qhUg9y;Q`LMyg`?LvBZNJYlS}f@vOYFw;U`!){+z(W z==ZFl;{J^M7<6BPj~kl(v<(bjv68S3y*6XhZwM(iJ88J%tvVjJSXi_R2W?t+o)Jbg z&J3Fm=@l4aI0JaTqb(C~mCTN9H*9}~SG7A=ML2symqk+OV0KU)u$_}tlvd5(f+|eR zTj}iVj+@BzV#3Cg=f<{2+(Gr*oCWsn;>_CJTMCTS>kSMh95$9P`7_72GBv*BbS0J3 zgHiS28Ry0mY&H>wf;D^=xQiJHZs~O9bRorHWWl^*#t3KTGKOiGPxT)s`6?$#^m^?= zvo&2*ZQ6mQe9S#DK0kd}ry75t!0Hu|;5RUMeSwEcnNn@|A`b(_I-_YyeZs*KCeJk; z4AN3jo0JrNxLYxar06FWI{hqX z1^;^VKm;n|4J?WW>xC%P3WrOW>}l$owCgx_JggG?(#bM>PU0avC}qRpBD}u&OBjX7 zaSnV`!Z@ZDdg){#CLPUAf+sZw0&TQua zBxfQwmQ*I2P*#2a)wcz)aN<1njR{FibQ7q_ z?W&O-IqBz0RX(T#vAM*0hsQ^{Ap|PW}OKXfIs@ SVLvTG?FwEB1=lD;-~0zPmq&E~ From 82df966f9ceab7166bffa58b6ff56c27b2300f8c Mon Sep 17 00:00:00 2001 From: Olivier Halligon Date: Thu, 25 Nov 2021 20:55:32 +0100 Subject: [PATCH 05/12] Add env vars in scheme to test the iOS14 Widget easily See https://developer.apple.com/documentation/widgetkit/debugging-widgets --- .../xcschemes/WordPressStatsWidgets.xcscheme | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/WordPress/WordPress.xcodeproj/xcshareddata/xcschemes/WordPressStatsWidgets.xcscheme b/WordPress/WordPress.xcodeproj/xcshareddata/xcschemes/WordPressStatsWidgets.xcscheme index 1aed5ace8657..0dec3d56383b 100644 --- a/WordPress/WordPress.xcodeproj/xcshareddata/xcschemes/WordPressStatsWidgets.xcscheme +++ b/WordPress/WordPress.xcodeproj/xcshareddata/xcschemes/WordPressStatsWidgets.xcscheme @@ -80,9 +80,19 @@ + + + + Date: Thu, 25 Nov 2021 23:33:54 +0100 Subject: [PATCH 06/12] Move already-localized strings from Widget to App For each locale, I appended the content of the .strings from the Stats Widget to the .strings of the App, then removed the .strings from the Widget (which are not used anymore) --- .../Resources/ar.lproj/Localizable.strings | 11 +++ .../Resources/bg.lproj/Localizable.strings | 10 +++ .../Resources/cs.lproj/Localizable.strings | 11 +++ .../Resources/cy.lproj/Localizable.strings | 10 +++ .../Resources/da.lproj/Localizable.strings | 10 +++ .../Resources/de.lproj/Localizable.strings | 11 +++ .../Resources/en-AU.lproj/Localizable.strings | 11 +++ .../Resources/en-CA.lproj/Localizable.strings | 11 +++ .../Resources/en-GB.lproj/Localizable.strings | 11 +++ .../Resources/en.lproj/Localizable.strings | Bin 856116 -> 859430 bytes .../Resources/es.lproj/Localizable.strings | 11 +++ .../Resources/fr.lproj/Localizable.strings | 11 +++ .../Resources/he.lproj/Localizable.strings | 11 +++ .../Resources/hr.lproj/Localizable.strings | 10 +++ .../Resources/hu.lproj/Localizable.strings | 10 +++ .../Resources/id.lproj/Localizable.strings | 11 +++ .../Resources/is.lproj/Localizable.strings | 10 +++ .../Resources/it.lproj/Localizable.strings | 11 +++ .../Resources/ja.lproj/Localizable.strings | 11 +++ .../Resources/ko.lproj/Localizable.strings | 11 +++ .../Resources/nb.lproj/Localizable.strings | 11 +++ .../Resources/nl.lproj/Localizable.strings | 11 +++ .../Resources/pl.lproj/Localizable.strings | 10 +++ .../Resources/pt-BR.lproj/Localizable.strings | 10 +++ .../Resources/pt.lproj/Localizable.strings | 10 +++ .../Resources/ro.lproj/Localizable.strings | 11 +++ .../Resources/ru.lproj/Localizable.strings | 11 +++ .../Resources/sk.lproj/Localizable.strings | 10 +++ .../Resources/sq.lproj/Localizable.strings | 11 +++ .../Resources/sv.lproj/Localizable.strings | 11 +++ .../Resources/th.lproj/Localizable.strings | 10 +++ .../Resources/tr.lproj/Localizable.strings | 11 +++ .../zh-Hans.lproj/Localizable.strings | 11 +++ .../zh-Hant.lproj/Localizable.strings | 11 +++ WordPress/WordPress.xcodeproj/project.pbxproj | 80 ------------------ .../Base.lproj/Localizable.strings | Bin 3236 -> 0 bytes .../ar.lproj/Localizable.strings | Bin 419 -> 0 bytes .../bg.lproj/Localizable.strings | Bin 359 -> 0 bytes .../cs.lproj/Localizable.strings | Bin 447 -> 0 bytes .../cy.lproj/Localizable.strings | Bin 277 -> 0 bytes .../da.lproj/Localizable.strings | Bin 296 -> 0 bytes .../de.lproj/Localizable.strings | Bin 378 -> 0 bytes .../en-AU.lproj/Localizable.strings | Bin 342 -> 0 bytes .../en-CA.lproj/Localizable.strings | Bin 342 -> 0 bytes .../en-GB.lproj/Localizable.strings | Bin 342 -> 0 bytes .../en.lproj/Localizable.strings | 44 ---------- .../es.lproj/Localizable.strings | Bin 384 -> 0 bytes .../fr.lproj/Localizable.strings | Bin 359 -> 0 bytes .../he.lproj/Localizable.strings | Bin 427 -> 0 bytes .../hr.lproj/Localizable.strings | Bin 282 -> 0 bytes .../hu.lproj/Localizable.strings | Bin 348 -> 0 bytes .../id.lproj/Localizable.strings | Bin 375 -> 0 bytes .../is.lproj/Localizable.strings | Bin 319 -> 0 bytes .../it.lproj/Localizable.strings | Bin 347 -> 0 bytes .../ja.lproj/Localizable.strings | Bin 339 -> 0 bytes .../ko.lproj/Localizable.strings | Bin 325 -> 0 bytes .../nb.lproj/Localizable.strings | Bin 369 -> 0 bytes .../nl.lproj/Localizable.strings | Bin 362 -> 0 bytes .../pl.lproj/Localizable.strings | Bin 276 -> 0 bytes .../pt-BR.lproj/Localizable.strings | Bin 369 -> 0 bytes .../pt.lproj/Localizable.strings | Bin 335 -> 0 bytes .../ro.lproj/Localizable.strings | Bin 410 -> 0 bytes .../ru.lproj/Localizable.strings | Bin 449 -> 0 bytes .../sk.lproj/Localizable.strings | Bin 320 -> 0 bytes .../sq.lproj/Localizable.strings | Bin 399 -> 0 bytes .../sv.lproj/Localizable.strings | Bin 414 -> 0 bytes .../th.lproj/Localizable.strings | Bin 335 -> 0 bytes .../tr.lproj/Localizable.strings | Bin 465 -> 0 bytes .../zh-Hans.lproj/Localizable.strings | Bin 329 -> 0 bytes .../zh-Hant.lproj/Localizable.strings | Bin 335 -> 0 bytes 70 files changed, 352 insertions(+), 124 deletions(-) delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/Base.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/ar.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/bg.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/cs.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/cy.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/da.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/de.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/en-AU.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/en-CA.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/en-GB.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/en.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/es.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/fr.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/he.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/hr.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/hu.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/id.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/is.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/it.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/ja.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/ko.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/nb.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/nl.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/pl.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/pt-BR.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/pt.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/ro.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/ru.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/sk.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/sq.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/sv.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/th.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/tr.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/zh-Hans.lproj/Localizable.strings delete mode 100644 WordPress/WordPressStatsWidgets/Supporting Files/zh-Hant.lproj/Localizable.strings diff --git a/WordPress/Resources/ar.lproj/Localizable.strings b/WordPress/Resources/ar.lproj/Localizable.strings index 5f6a840cb3b6..91a9f242fcde 100644 --- a/WordPress/Resources/ar.lproj/Localizable.strings +++ b/WordPress/Resources/ar.lproj/Localizable.strings @@ -9164,3 +9164,14 @@ translators: Block name. %s: The localized block name */ /* Item 2 of delete screen section listing things that will be deleted. */ "• Users & Authors" = "• المستخدمون والكاتبون"; + +// MARK: WordPressStatsWidgets Strings + +"widget.alltime.bestviews.label" = "أفضل المشاهدات على الإطلاق"; +"widget.alltime.posts.label" = "مقالات"; +"widget.today.comments.label" = "تعليقات"; +"widget.today.likes.label" = "إعجابات"; +"widget.today.title" = "اليوم"; +"widget.today.views.label" = "مشاهدات"; +"widget.today.visitors.label" = "الزوار"; + diff --git a/WordPress/Resources/bg.lproj/Localizable.strings b/WordPress/Resources/bg.lproj/Localizable.strings index 891741b3ff93..b379873c86d2 100644 --- a/WordPress/Resources/bg.lproj/Localizable.strings +++ b/WordPress/Resources/bg.lproj/Localizable.strings @@ -9164,3 +9164,13 @@ translators: Block name. %s: The localized block name */ /* Item 2 of delete screen section listing things that will be deleted. */ "• Users & Authors" = "• Потребители и автори"; + +// MARK: WordPressStatsWidgets Strings + +"widget.alltime.posts.label" = "Публикации"; +"widget.today.comments.label" = "Коментари"; +"widget.today.likes.label" = "Харесвания"; +"widget.today.title" = "Днес"; +"widget.today.views.label" = "Преглеждания"; +"widget.today.visitors.label" = "Посетители"; + diff --git a/WordPress/Resources/cs.lproj/Localizable.strings b/WordPress/Resources/cs.lproj/Localizable.strings index c0a8f8370ac1..af157c7f39ac 100644 --- a/WordPress/Resources/cs.lproj/Localizable.strings +++ b/WordPress/Resources/cs.lproj/Localizable.strings @@ -9164,3 +9164,14 @@ translators: Block name. %s: The localized block name */ /* Item 2 of delete screen section listing things that will be deleted. */ "• Users & Authors" = "• Uživatelé a autoři"; + +// MARK: WordPressStatsWidgets Strings + +"widget.alltime.bestviews.label" = "Nejlepší pohledy ze všech"; +"widget.alltime.posts.label" = "Příspěvky"; +"widget.today.comments.label" = "Komentáře"; +"widget.today.likes.label" = "To se mi líbí"; +"widget.today.title" = "Dnes"; +"widget.today.views.label" = "Zobrazení"; +"widget.today.visitors.label" = "Návštěvníci"; + diff --git a/WordPress/Resources/cy.lproj/Localizable.strings b/WordPress/Resources/cy.lproj/Localizable.strings index 44d2f29e4625..5819b1771442 100644 --- a/WordPress/Resources/cy.lproj/Localizable.strings +++ b/WordPress/Resources/cy.lproj/Localizable.strings @@ -9164,3 +9164,13 @@ translators: Block name. %s: The localized block name */ /* Item 2 of delete screen section listing things that will be deleted. */ "• Users & Authors" = "• Users & Authors"; + +// MARK: WordPressStatsWidgets Strings + +"widget.alltime.posts.label" = "Cofnodion"; +"widget.today.comments.label" = "Nodiadau"; +"widget.today.likes.label" = "Hoffi"; +"widget.today.title" = "Heddiw"; +"widget.today.views.label" = "Golwg"; +"widget.today.visitors.label" = "Ymwelwyr"; + diff --git a/WordPress/Resources/da.lproj/Localizable.strings b/WordPress/Resources/da.lproj/Localizable.strings index 0082b9dc94ce..79671f8ad58d 100644 --- a/WordPress/Resources/da.lproj/Localizable.strings +++ b/WordPress/Resources/da.lproj/Localizable.strings @@ -9164,3 +9164,13 @@ translators: Block name. %s: The localized block name */ /* Item 2 of delete screen section listing things that will be deleted. */ "• Users & Authors" = "• Users & Authors"; + +// MARK: WordPressStatsWidgets Strings + +"widget.alltime.posts.label" = "Indlæg"; +"widget.today.comments.label" = "Kommentarer"; +"widget.today.likes.label" = "Likes"; +"widget.today.title" = "I dag"; +"widget.today.views.label" = "Visninger"; +"widget.today.visitors.label" = "Besøgende"; + diff --git a/WordPress/Resources/de.lproj/Localizable.strings b/WordPress/Resources/de.lproj/Localizable.strings index 4d417fc54702..0afe0b387603 100644 --- a/WordPress/Resources/de.lproj/Localizable.strings +++ b/WordPress/Resources/de.lproj/Localizable.strings @@ -9164,3 +9164,14 @@ translators: Block name. %s: The localized block name */ /* Item 2 of delete screen section listing things that will be deleted. */ "• Users & Authors" = "• Benutzer und Autoren"; + +// MARK: WordPressStatsWidgets Strings + +"widget.alltime.bestviews.label" = "Bisher bestes Aufrufergebnis"; +"widget.alltime.posts.label" = "Artikel"; +"widget.today.comments.label" = "Kommentare"; +"widget.today.likes.label" = "Gefällt mir"; +"widget.today.title" = "Heute"; +"widget.today.views.label" = "Aufrufe"; +"widget.today.visitors.label" = "Besucher"; + diff --git a/WordPress/Resources/en-AU.lproj/Localizable.strings b/WordPress/Resources/en-AU.lproj/Localizable.strings index 3a54983f8e83..463ac2abc3f9 100644 --- a/WordPress/Resources/en-AU.lproj/Localizable.strings +++ b/WordPress/Resources/en-AU.lproj/Localizable.strings @@ -9164,3 +9164,14 @@ translators: Block name. %s: The localized block name */ /* Item 2 of delete screen section listing things that will be deleted. */ "• Users & Authors" = "• Users & Authors"; + +// MARK: WordPressStatsWidgets Strings + +"widget.alltime.bestviews.label" = "Best views ever"; +"widget.alltime.posts.label" = "Posts"; +"widget.today.comments.label" = "Comments"; +"widget.today.likes.label" = "Likes"; +"widget.today.title" = "Today"; +"widget.today.views.label" = "Views"; +"widget.today.visitors.label" = "Visitors"; + diff --git a/WordPress/Resources/en-CA.lproj/Localizable.strings b/WordPress/Resources/en-CA.lproj/Localizable.strings index 581feaac76af..5d1062eeaa88 100644 --- a/WordPress/Resources/en-CA.lproj/Localizable.strings +++ b/WordPress/Resources/en-CA.lproj/Localizable.strings @@ -9164,3 +9164,14 @@ translators: Block name. %s: The localized block name */ /* Item 2 of delete screen section listing things that will be deleted. */ "• Users & Authors" = "• Users & Authors"; + +// MARK: WordPressStatsWidgets Strings + +"widget.alltime.bestviews.label" = "Best views ever"; +"widget.alltime.posts.label" = "Posts"; +"widget.today.comments.label" = "Comments"; +"widget.today.likes.label" = "Likes"; +"widget.today.title" = "Today"; +"widget.today.views.label" = "Views"; +"widget.today.visitors.label" = "Visitors"; + diff --git a/WordPress/Resources/en-GB.lproj/Localizable.strings b/WordPress/Resources/en-GB.lproj/Localizable.strings index 6a9d18ab8e76..51a93dd5c9ac 100644 --- a/WordPress/Resources/en-GB.lproj/Localizable.strings +++ b/WordPress/Resources/en-GB.lproj/Localizable.strings @@ -9164,3 +9164,14 @@ translators: Block name. %s: The localized block name */ /* Item 2 of delete screen section listing things that will be deleted. */ "• Users & Authors" = "• Users & Authors"; + +// MARK: WordPressStatsWidgets Strings + +"widget.alltime.bestviews.label" = "Best views ever"; +"widget.alltime.posts.label" = "Posts"; +"widget.today.comments.label" = "Comments"; +"widget.today.likes.label" = "Likes"; +"widget.today.title" = "Today"; +"widget.today.views.label" = "Views"; +"widget.today.visitors.label" = "Visitors"; + diff --git a/WordPress/Resources/en.lproj/Localizable.strings b/WordPress/Resources/en.lproj/Localizable.strings index 05c0a13ad3ceb99d1eaf3edb026f28a1d6881221..3e019edf0f81b0cf12e2239ee8af40280ac7cb7f 100644 GIT binary patch delta 1705 zcmbtUO-vI(6rSDfcH7xy+5SS&_vWFE!tSM*dihE;9)%J z!MG;Rco6)F2M@*riN=F5L=Pqy;bM#j1BvlOh+d5Gp;vyzhJOd*7SM ziLNKFx~?&f@l0S2CNd|Jn2Wg?WinGHYr3>rN;>e1kV7O%j*^3*$CY687%31PSDy5f z3`vo*BwhTA5cA|R?p?&aJm~wlFx+kBHBW?OF=7z!Wf2U|VLU2?o7xbYlI>))3?_jP zmk?AZVcy`J@c-bLq7RB2E$y>Wr=H?`tU#OI5w;X`Q9@%dq z`{8j^sBd0hhyn~Bclu!eNm_5lH3%cvqhV3@aVbdtk^)7Xmi2M$u-X(VYL|{JwcvYi zh<>=qM6dDVo8n1hoy)zBqG3*>DQ^GX3Nw?U)|eqfctOWiZjXqK3du&f33|UvuIBRd z3j5f1(MZX#GsKnBNW^3ccSPC-Go5rBJd6qrM%^RTm^ti#XQw15EPimPv9(ci=<#$J zww~jHpuTfZ$(oEY=zF0ALssGia;~b*d7cj#g|G(GhUkSe58Mh&2xzy?_ncqMnll0) zn}twxb-i`GkVWM(3LbUuQY$&vi)&t#DLP&Sm(Xjlt(|9P>z5Y2aOP z$p=qAiJ}<6*ikh+KB*L0Y-(&{5^Q3SVETw#6)-2*8x!L2X23yVN2{R0>lQ&> zgU)ni1~ncF7M2#)7Pc1l7LFFq7OocV7M?A^eL->HIhrVtckc!%KT3kS-fJi9f=iAQMI8LxbpoFSQ2~NB_ zyR$Rq=es9eiDW2K$z>)A_X~N)|2KSo;!nvOPcp2`B$ZcupW%Lr)d=eg8DVvc`wiAc zGRE^9-@4M1j>MJKr1XB`#ZOA{V??;Y70dk|ide1@w}a?m)H9&?0EYJQy2xRq{UUP{ z#xK07(3$ozy2xRS&qd~AFlKn046iPPv>d-4Z~3hz)aT4&uB)X2-1H5L`EJfU!Olq5 z&;^wMslmnA8(P-|AvuAV-Sje*6fH?&tI+k0e#BA`wDxOy7Qa>>!hxK`?Xpg%R0~Yl$ z9$MXzV9r7~9RE+6IlA>4I4vi1@LV%ZCUP)Tc6P&git0E~M3-y7Hx+KdCTBc6M@GBK zn-l-ENx?1873ScXv)`#O+h&*D6Xx@F7nwO3xyqc6WQmG6;bC`f2dB#s_Ps%Yp$RR| zW1@BbLfi^GDb0$1X17y;&1b`;#fxU3wS8oPBK#mEJ;m)QH;--Sdz1Te1T+`XK*erpH zyugZq3RQtz9iY4hNMRaSp%GA_I-6m>fE1fDnpBS xCk74%aRw6xe})u>CWg5TyBY2N<%5eQ~-y0WdZ;I diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/bg.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/bg.lproj/Localizable.strings deleted file mode 100644 index 1409932121522f32b01d052820b88becdb42ee39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 359 zcmY+6%}&Bl5QXQ$QSmQnj3fjXtX$gEA4mg2phUMmLR09C8N9W`-ay#+B0LGN!NQI2 z;4?UZ0_iN~oIB@!XEZgOSfKp#y!q9eP7 zCwS<>$6JhRF-;5@b@cEowu?a0KKu!8H%3xC?0|_h4RJ3$KH7486_uY2fd>Ky@(e^J irV3TbqZb;}H!W#JYx<=>RaQ0HOi68(E_2OA-Tec|I#p%> diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/cs.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/cs.lproj/Localizable.strings deleted file mode 100644 index e2964c51d77d9ea1d758829f025103f6421fd0d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 447 zcmZ`zJ5Iwu5Pcgy34eF8K%xL4iZswfc03}3cWo=Xa%4KV2PfemG&DJY zMZ*CYj1@2vTg=nG-%ONiwr)6lRh^a9we@aqV{>bJXLsx!&N;p#7q~1A%b;MI+dzjA z>9M!pk{mltW3S(kq1KKK1$k!OGBIc+CYdpm{;2I$niKjbSg>W6&6eu%pPdm|_v=!| zEiy!yA;bd+DXP&~N|tf0ZcxD@R|6DCP%fsMb*T{G9UiFpt!fl+5x7zx=kyw9H87{IoovNPb>KWNvwCPI+Y! ehp2&Ta^38m`;VQ!dY=Id7#Sfn122?@Q7-^E8Ct*q diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/da.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/da.lproj/Localizable.strings deleted file mode 100644 index 298685531b79239579fbbf965f7ac8e2448c6fd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmYc)$jK}&F)+Bs$i&RT%Er#Y$;HhRFCbB#nUbDbqF0iil31x%mYG^!te2CRl$sMS zAcP`Sl39|I8ZRJ?BAA??o12fsMg4^%;LPvy!6zfP)~)F#Pn!yh^2`|KoK916=@8f40#MG3^@$X7}7HtoETCW oiWz<|qyuS?a4LtWfopQz?45^CUcLQ-0Sp)!Av6Ool!j5i0mTnpP5=M^ diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/de.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/de.lproj/Localizable.strings deleted file mode 100644 index ac83140ac5b5615e3a27bb3397aa53112a682f9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmZ{ey-veG5QOK#U--8oBoKe{6Ic;7P0}P1H437!?06kkImgl6IuUK&BTvGE&`?rQ zrbpsPtbmc&D`s`0`DWv>W-HC+tEz2mZf)<>clY)W4v#|bY|6=iB#=Cbo`VU~)CM|= zNrzseVhM|;&^s?bBdvuq3dXsWb>gCu=;v8RqaU|grFlsI1Sf1+az6rRVsuOjE<h=q75_Rza diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/en-AU.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/en-AU.lproj/Localizable.strings deleted file mode 100644 index 13e96a10a17375eaf99485261077514d30bd7abb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 342 zcmYc)$jK}&F)+B!$i&RT%Er#Y$;HjX%NH*oRi2rWo?4=pn3GeInVYItkY8Lb`;#fxU3wS83~613#38Qj8J+)~sxb diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/en-CA.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/en-CA.lproj/Localizable.strings deleted file mode 100644 index 13e96a10a17375eaf99485261077514d30bd7abb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 342 zcmYc)$jK}&F)+B!$i&RT%Er#Y$;HjX%NH*oRi2rWo?4=pn3GeInVYItkY8Lb`;#fxU3wS83~613#38Qj8J+)~sxb diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/en-GB.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/en-GB.lproj/Localizable.strings deleted file mode 100644 index 68dde15c3595a9c9dcc080cd123d05c13900cf5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 342 zcmYc)$jK}&F)+B!$i&RT%Er#Y$;HjX%NH*oQJ$HSo?4<;lAn@TsaKYnT3)P|lbDp6 z6E7fyB2|)El9L)QAO#gn%*iRq%uUrR$S*E|>ySp#k({5Ko0^A^MYSp?GdmTB#fxU3wSok^+1B}gs}4FkD4Gz8>>&;XEoBAlUChx&kQi3o!l7%#x@1k|el)~t|P zmRiKX!643H#Nf`5!qCJpmti-<9fn5?FBsl2d}sK}$i@H$OpFkkfgegkDMkqZ&6sR} diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/en.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/en.lproj/Localizable.strings deleted file mode 100644 index 16167a84c44e..000000000000 --- a/WordPress/WordPressStatsWidgets/Supporting Files/en.lproj/Localizable.strings +++ /dev/null @@ -1,44 +0,0 @@ -/* Title of comments label in today widget */ -"widget.today.comments.label" = "Comments"; - -/* Title of likes label in today widget */ -"widget.today.likes.label" = "Likes"; - -/* Title of views label in today widget */ -"widget.today.views.label" = "Views"; - -/* Title of visitors label in today widget */ -"widget.today.visitors.label" = "Visitors"; - -/* Title of today widget */ -"widget.today.title" = "Today"; - -/* Title of the unconfigured view in today widget */ -"widget.today.unconfigured.view.title" = "Log in to WordPress to see today's stats."; - -/* Error message to show if a widget view is unavailable */ -"widget.today.view.unavailable.title" = "View is unavailable"; - -/* Description of today widget in the preview */ -"widget.today.preview.description" = "Stay up to date with today's activity on your WordPress site."; - -/* Title of all time widget */ -"widget.alltime.title" = "All Time"; - -/* Title of posts label in all time widget */ -"widget.alltime.posts.label" = "Posts"; - -/* Title of best views ever label in all time widget */ -"widget.alltime.bestviews.label" = "Best views ever"; - -/* Description of all time widget in the preview */ -"widget.alltime.preview.description" = "Stay up to date with all time activity on your WordPress site."; - -/*Title of the unconfigured view in all time widget */ -"widget.alltime.unconfigured.view.title" = "Log in to WordPress to see all time stats."; - -/* Title of this week widget */ -"widget.thisweek.title" = "This Week"; - -/* Title of the unconfigured view in this week widget */ -"widget.thisweek.unconfigured.view.title" = "Log in to WordPress to see this week's stats."; diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/es.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/es.lproj/Localizable.strings deleted file mode 100644 index 7993416f3b5ac010e5f66dcc035c488ac7d93cb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 384 zcmZ{e%}T>S5Xb*pwbrj1y;Kw=PY`b`;#fxU3wS8QVS{&_Inw4K#l%k$dni=B^aYABdQEG7- zgO`FNLn1>aLoP#VWEjYf)Y78jxS-VJ{Gt?vlvIT>pmqih25|-x27iVWh9-u&47(Zb eFg#^=#qf=hnNfgIiUACm7$GzRKa_@2jG6#fdT)dP diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/he.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/he.lproj/Localizable.strings deleted file mode 100644 index a87c45fcacd44acc84ace625bfee4855a78509d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427 zcmZ`zT}s115T31$t^Yv;MNtIbLms?`M+k}8l+}$}+@Zx+@8L;2MQf@SQ>h?UdkAro z#$W^&mihkXW5SMBmOSrKG!_DSqU{I0yL50>?O& zmPJ2oP!yz?ve)NaR%9MHKgpM&1v_v8rx3vn+`=7X@Cjd{DYnJ2@Su1NF`uwm&T@$4 E8=WnUp#T5? diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/hr.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/hr.lproj/Localizable.strings deleted file mode 100644 index b93c8f2f3c0ac18f16aee3836806736f350b633c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmYc)$jK}&F)+Bs$i&RT%Er#Y$;HhRFCbB#nUbDbqF0iil31x%mYG^!te2CRl$sMS zAcP`Sl39|I8ZRJ?BAA??o12fsMd&pqSW-9)RfFnm&Clp;z;j&kd=u=nV~))^TPvx2IZG!#sKN8RG=$UbFwly eL=9Y%>t^pfbmG#D2Ml1q$Oxesc%d|mdJ6zX%Uu8f diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/hu.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/hu.lproj/Localizable.strings deleted file mode 100644 index 53baed989119e42d16c68422f18e1da23304b9f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 348 zcmY+7O=^|&(kDiZwaMbg z%8H4N&f;EWIC0kM8K04AnxR6US5E;{#xPl(%$>h*)zk%fV)qeHixD((u-pX*GwJ@| zkFVE}vKYW&Ewz=|8atS>b12@1$NvlT#rj@Gti%vd!ccrHYz`&5lk5gMNb!ORKC!_U VzVVBH?4t*irxu+Q?Vv%T=K}y^VwL~^ diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/id.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/id.lproj/Localizable.strings deleted file mode 100644 index 94b06aa2943fd62917740ffc8554ecb027a6e884..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 zcmYc)$jK}&F)+B!$i&RT%Er#Y$;HjX%NH*oRi2rWo?4=pn3GeInVYItkY8Lb`;#fxU3wS8-2%#DHp){0Yv;+XY^mX9? diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/is.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/is.lproj/Localizable.strings deleted file mode 100644 index 888294245d50b2756620492fbed93d8abf87f592..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319 zcmY+6%}T>i5QR@#+r~c#LP6}tCkS~37uHSJE~F4{o8dZi(v*9rDQGs0Yv-68Ix?XW+NnUo`*# diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/it.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/it.lproj/Localizable.strings deleted file mode 100644 index 373a507c8c25964ca751ee294cf050530a9c8527..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 347 zcmYc)$jK}&F)+B!$i&RT%Er#Y$;HjX%NH*oRi2rWo?4=pn3GeInVYItkY8Lb`;#fxU3wS8S}ro}L-u46!{k#0O|m6j&w^XlQ1< zfIv`ca(+>YLQ19r*rrql4hC@s69#{V6ow{-xeU7*?l3%Mc*F3K;TOYyMlJ?0U}A*O M4E#_UN-@d;05l+OPyhe` diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/ja.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/ja.lproj/Localizable.strings deleted file mode 100644 index 33c76c89bb404c10a1415117e35745c511d3ea6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339 zcmYc)$jK}&F)+B!$i&RT%Er#Y$;HjX%NH*oRi2rWo?4=pn3GeInVYItkY8Lb`;#fxU3wS8b`;#fxU3wS8ARm5>xtSWH zNvYczd&5SNyPl?{RCgEk0O{iAGS;~VOhEAX!aS-&oP0EiVU)(o+L{_m#u$VuLxE zESh#uoW_T^VOsa-WPpUlP!^pJj)kjhvj3$SuBcBNJ~kX!obTzypN=^N`Bi3_kmurF z$SzYNUt&Wxy+NxH%i9HEAxz;eMfAEg+OqW}^ysJ}AF}8;Y13wTyH#Xo&auE4PT>l! fLBkU~!wbB@JAA;WQfi{6@I52-qj1z|C+hMGkxz1Y diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/pl.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/pl.lproj/Localizable.strings deleted file mode 100644 index dce3c33bde8152e3de59cdf1dafbdd6325c6ff62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmYc)$jK}&F)+Bs$i&RT%Er#Y$;HhRFCbB#nUbDbqF0iil31x%mYG^!te2CRl$sMS zAcP`Sl39|I8ZRJ?BAA??o12fsMgRhkfXv~s(_-2SyA5kAR7~ls!~IJK<0;r7i1P!Mub82aEKbXCfCj0x&Qd3 T8}}H%fRPbGGw?!b81)ur6C;>qPTRE=t0fJy-CqZnEz1)zD*}aw9$px)_51+)>5E~0C zUqE{|@d#{@X}+27Z;D65Ub5_6bv8D)w!6KZ-M#%h>Cd?wlceHG{ggILbDtVrkjaz7 zND>x9d2$kwBWEpDvWlFxsy0U0Qd*Fgs55?NcuK2m+}yBdadoR&48ic2LBoXYIp8;b zLGZWN?t!Klz`=&Qg5V2v@Hlvv9OEXC29t2s3p>uxtgE^k%xd9M`}^VIyRL*hdN@Lc cD~#}hSG?f^pZHPd>H^E@sDH#ki!G?jKUJt`_W%F@ diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/pt.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/pt.lproj/Localizable.strings deleted file mode 100644 index 9efca60f0fcc29f3c71745ef5a22708ec3b127fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 335 zcmY+7O-chn5QX2wpTwvz2!Wt?80HQl@c>~KZiY^#2$ghChg6vm7rBTh$vs4H>B_Ae z5wc2893oSjS5;rVSEIRQ(KLOJS|_Jx=k3l#_wp)_`ztOcq>1{%tdk|vN)l^EWb^o@ zft1x!9^W;VWA7Z5dbBjtEYIkOZfm2lR@qT9_ww&+rY>1n{i3!yWMBxMVPHe|67&l{ zAjt61PicmGc(^c^P<&z$ZagF#ga=;uKr2Gnp{U4HR^^*gNzg$LDIPG!2CvxS4IlW% RZ`8%1TG5~4y4G5v-X28vVI=?n diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/ro.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/ro.lproj/Localizable.strings deleted file mode 100644 index 108669e0d5e6bb7b5cd671d5734ad35abbe3a845..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmZ{e%}T>i5QWce{i)WU(2Wv7+_(*0_yVO5pdb_}g>aJ$W$2B!%$buc4LcbQ-&Ci&v%9z7J2>ng9iPNOxaMq55@}Y=aPEkiR8dA@?r4 s)s>(4P2ZP)`J;z3+~5`&p7DZLyyF9(3aYO{b&YLx)VJca)>_o;3-FP0^Z)<= diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/ru.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/ru.lproj/Localizable.strings deleted file mode 100644 index ada4efc46611d9f6bce07bcd0073374598f298b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 449 zcmZ`zOHRWu6nriN6v`)JQ`GW5K$JowMNs-%zyd^%5GBM!rY@<7)ru{ggOhL&He7%^ zu;3M;K`mSInAZ5f@GA@(zogb@-`WbN$hArMMKl^O$vek=G#|;_`XGZs) zb7m6PB- ZgFfj?RK$^Jhzt5zCGlHnGpktO#X`BE6 diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/sk.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/sk.lproj/Localizable.strings deleted file mode 100644 index 8fe1f79dd289506982832f8ee492abb4b96974a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmY+7O-=$q5QSf({HTyjOh^dcVKRr%mBf{7*i3q$AeHIqCexK6xZon5#624?;L45e zjaQ(R31n*XD(}_zDq9=&k|ZChb#dA5bbD9VH~lmkZFsRFiN!7SHm;a9J~lcdlSa3V zNLUP|(OtuwyP_Z~C#2bCIHyxIu0d^#a6$3f`7_sSt=O};vPNe!mzDa3EbHfcOP=uv zhXMo(!52!2O1+g873v7(EP;;34cgyy6XeyyFw!_{IOU M)KM|0wHDPm0Nd1Ew*UYD diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/sq.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/sq.lproj/Localizable.strings deleted file mode 100644 index a15b2529d6e597f97568bffbe0e2ea67fca7f672..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 399 zcmZ`zyH3ME5S$BygttWj2oTB_SSk1m3XGzV(z5X?xp3zTzEvV9`47H?4@pBwg(XUA zmS9;JiIZ+;wKKCj>C9-){r*z5*4En_o$lt=_Rj8J9Gon4HYN@eV^~`XXU?+^O_Gv{ zgX4;1mn9G3T+^ba4jL3|HWUY^jp41cmh%6$8GT3fwx)5ey=GU`?D?OJDS7@CW)w+g z$v%vdVoHO7FrC8C$5iW2g%oCpRf>*rZ9Uu5qZFPv%YpEZ^euWjN>n{MGbSnS= diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/sv.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/sv.lproj/Localizable.strings deleted file mode 100644 index 213625b5332e135680080095d8e2a46a175ae0cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmZ{ey-ve06oroqh4LS%EQ5t?ixNBpS>(%gM)5DbFRvQ{%jg zl}t$`QNMxSWbz@dm}V{7UqYU}q9i(8GH*>;lKwAEaY1d`^2drDdt+OA^rvG=&i^WN zhcPr1=E#v>U9!`xb7?Qe!%XJalSK<@$tF>B#!AUj+JbDobdOUI96nJ%!h%dR2-ZAU zJ{Ut(;PBSr)*=39Mc2N@TbNClT+MnozzNQg;So=G#w*_OfiKY&eQ}KXbi_ij*JvZ+ F<{M_Jc`*P0 diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/th.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/th.lproj/Localizable.strings deleted file mode 100644 index 5100f3bbf174fb510a819dfc114ac4907f196994..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 335 zcmYc)$jK}&F)+Bs$i&RT%Er#Y$;HhRFCbB#nUbDbqF0iil31x%mYG^!te2CRl$sMS zAcP`Sl39|I8ZRJ?BAA??o12fsMb_IMm{4xWj+x;%QQZ9K0`i9AT;Ik%-~}Ia*g;D`5gGP`P}&=)A_jg%=tWk zvRr(+d{SvZab>W8E+2a~pA4TRpC?dA38>ctNGbwVDKc;{h%y*3xH2R&)G^Fv*vW8& a;UdE$hK~&Y7{Gvu5kfQYLTM<)C<*}9%Ts&+ diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/tr.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/tr.lproj/Localizable.strings deleted file mode 100644 index 2b755920083690a696a6d484c205c815a3075e96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmZ`zy-ve07(9o+@>7Ty0D%M@m_w2J1T3(zQU)rASdkSwu57ne8F>X}o`eTsVP{}x z>cHnTiU<-Oe4p>`J6}3h()oV>okc6FYwH`G&8_X7?(Qf)p2;j1KH*AvsYNn2&bvhM zRH#vWREyqZe4b3Dm^IRVOY+hyF^W%GenES%@aBy*QOldSe^)^iRiBIRC3m zjv+Xn*d-L9EpUx*ICuzHNNA#I61c(yITk4IhQ>~`;#LtS*cr(s8H24{nicMen1?tb zJw9vMn)sYOP!1<2M-K(vS!D~eBqn6^s^##?sfrDMQplpp*5s%Pp@TyVa7+8oc*Pq& Y@Wmq5We4nn-Jm)VTO#&qtbx7!0BbIMvj6}9 diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/zh-Hans.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/zh-Hans.lproj/Localizable.strings deleted file mode 100644 index def46fe2ed1a9c34cb9967c1a71cbcea35334244..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329 zcmYc)$jK}&F)+B!$i&RT%Er#Y$;HjX%NH*oRi2rWo?4=pn3GeInVYItkY8Lb`;#fxU3wS8$iQy~59|kaBVua8P{7@Q7 HF>(U{hsABb diff --git a/WordPress/WordPressStatsWidgets/Supporting Files/zh-Hant.lproj/Localizable.strings b/WordPress/WordPressStatsWidgets/Supporting Files/zh-Hant.lproj/Localizable.strings deleted file mode 100644 index 13b47e182bffc7ecdbf5ab8d21533852f9e0183a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 335 zcmYc)$jK}&F)+B!$i&RT%Er#Y$;HjX%NH*oRi2rWo?4=pn3GeInVYItkY8Lb`;#fxU3wS8CWg5TyBY2- O2%#DHp){0Y6a)a8Cv9B- From b5be219f2148b9338be0bff0ac399fe2df4100d6 Mon Sep 17 00:00:00 2001 From: Olivier Halligon Date: Thu, 25 Nov 2021 23:46:23 +0100 Subject: [PATCH 07/12] Better documentation for AppLocalizedString helper --- .../Views/Localization/AppLocalizedString.swift | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/WordPress/WordPressStatsWidgets/Views/Localization/AppLocalizedString.swift b/WordPress/WordPressStatsWidgets/Views/Localization/AppLocalizedString.swift index 240f0dcc7182..60ff8ae89ecc 100644 --- a/WordPress/WordPressStatsWidgets/Views/Localization/AppLocalizedString.swift +++ b/WordPress/WordPressStatsWidgets/Views/Localization/AppLocalizedString.swift @@ -11,8 +11,16 @@ extension Bundle { }() } -typealias LocalizedString = String // Useful only to express intent on your API; does not provide any compile-time guarantee +/// This is mostly useful to express *intent* on your API. It does not provide any compile-time guarantee +typealias LocalizedString = String -func AppLocalizedString(_ key: String, value: String?, comment: String) -> LocalizedString { +/// Be sure to use this function instead of `NSLocalizedString` in order to reference localized strings **from the app bundle**. +/// As `NSLocalisedString` by default will look up strings in the current (main) bundle, which could be an App Extension for cases like a Widget +/// but, in order to avoid duplicating our strings accross targets, it is better to make App Extensions / Widgets reference the strings +/// from the `Localizable.strings` files that are hosted the app bundle instead of hosting their own `.strings` file. +/// +/// Also, be sure to pass this function name as a custom routine when parsing the code to generate the main `.strings` file, +/// using `genstrings -s AppLocalizedString` to that this helper method is recognized. +func AppLocalizedString(_ key: String, tableName: String? = nil, value: String? = nil, comment: String) -> LocalizedString { Bundle.app.localizedString(forKey: key, value: value, table: nil) } From d6f924e97a1eca07fe18053a4c70b06db9ea6c3b Mon Sep 17 00:00:00 2001 From: Olivier Halligon Date: Fri, 26 Nov 2021 00:51:10 +0100 Subject: [PATCH 08/12] Remove trailing newlines at end of `.strings` To make Hound happy. --- .../Resources/ar.lproj/Localizable.strings | 1 - .../Resources/bg.lproj/Localizable.strings | 1 - .../Resources/cs.lproj/Localizable.strings | 1 - .../Resources/cy.lproj/Localizable.strings | 1 - .../Resources/da.lproj/Localizable.strings | 1 - .../Resources/de.lproj/Localizable.strings | 1 - .../Resources/en-AU.lproj/Localizable.strings | 1 - .../Resources/en-CA.lproj/Localizable.strings | 1 - .../Resources/en-GB.lproj/Localizable.strings | 1 - .../Resources/en.lproj/Localizable.strings | Bin 859430 -> 859428 bytes .../Resources/es.lproj/Localizable.strings | 1 - .../Resources/fr.lproj/Localizable.strings | 2 +- .../Resources/he.lproj/Localizable.strings | 1 - .../Resources/hr.lproj/Localizable.strings | 1 - .../Resources/hu.lproj/Localizable.strings | 1 - .../Resources/id.lproj/Localizable.strings | 1 - .../Resources/is.lproj/Localizable.strings | 1 - .../Resources/it.lproj/Localizable.strings | 1 - .../Resources/ja.lproj/Localizable.strings | 1 - .../Resources/ko.lproj/Localizable.strings | 1 - .../Resources/nb.lproj/Localizable.strings | 1 - .../Resources/nl.lproj/Localizable.strings | 1 - .../Resources/pl.lproj/Localizable.strings | 1 - .../Resources/pt-BR.lproj/Localizable.strings | 1 - .../Resources/pt.lproj/Localizable.strings | 1 - .../Resources/ro.lproj/Localizable.strings | 1 - .../Resources/ru.lproj/Localizable.strings | 1 - .../Resources/sk.lproj/Localizable.strings | 1 - .../Resources/sq.lproj/Localizable.strings | 1 - .../Resources/sv.lproj/Localizable.strings | 1 - .../Resources/th.lproj/Localizable.strings | 1 - .../Resources/tr.lproj/Localizable.strings | 1 - .../zh-Hans.lproj/Localizable.strings | 1 - .../zh-Hant.lproj/Localizable.strings | 1 - 34 files changed, 1 insertion(+), 33 deletions(-) diff --git a/WordPress/Resources/ar.lproj/Localizable.strings b/WordPress/Resources/ar.lproj/Localizable.strings index 91a9f242fcde..e1ab1657657b 100644 --- a/WordPress/Resources/ar.lproj/Localizable.strings +++ b/WordPress/Resources/ar.lproj/Localizable.strings @@ -9174,4 +9174,3 @@ translators: Block name. %s: The localized block name */ "widget.today.title" = "اليوم"; "widget.today.views.label" = "مشاهدات"; "widget.today.visitors.label" = "الزوار"; - diff --git a/WordPress/Resources/bg.lproj/Localizable.strings b/WordPress/Resources/bg.lproj/Localizable.strings index b379873c86d2..e563a2d67fe0 100644 --- a/WordPress/Resources/bg.lproj/Localizable.strings +++ b/WordPress/Resources/bg.lproj/Localizable.strings @@ -9173,4 +9173,3 @@ translators: Block name. %s: The localized block name */ "widget.today.title" = "Днес"; "widget.today.views.label" = "Преглеждания"; "widget.today.visitors.label" = "Посетители"; - diff --git a/WordPress/Resources/cs.lproj/Localizable.strings b/WordPress/Resources/cs.lproj/Localizable.strings index af157c7f39ac..2a0312fdcbc1 100644 --- a/WordPress/Resources/cs.lproj/Localizable.strings +++ b/WordPress/Resources/cs.lproj/Localizable.strings @@ -9174,4 +9174,3 @@ translators: Block name. %s: The localized block name */ "widget.today.title" = "Dnes"; "widget.today.views.label" = "Zobrazení"; "widget.today.visitors.label" = "Návštěvníci"; - diff --git a/WordPress/Resources/cy.lproj/Localizable.strings b/WordPress/Resources/cy.lproj/Localizable.strings index 5819b1771442..f56ffda0fce1 100644 --- a/WordPress/Resources/cy.lproj/Localizable.strings +++ b/WordPress/Resources/cy.lproj/Localizable.strings @@ -9173,4 +9173,3 @@ translators: Block name. %s: The localized block name */ "widget.today.title" = "Heddiw"; "widget.today.views.label" = "Golwg"; "widget.today.visitors.label" = "Ymwelwyr"; - diff --git a/WordPress/Resources/da.lproj/Localizable.strings b/WordPress/Resources/da.lproj/Localizable.strings index 79671f8ad58d..9c2598a00a6d 100644 --- a/WordPress/Resources/da.lproj/Localizable.strings +++ b/WordPress/Resources/da.lproj/Localizable.strings @@ -9173,4 +9173,3 @@ translators: Block name. %s: The localized block name */ "widget.today.title" = "I dag"; "widget.today.views.label" = "Visninger"; "widget.today.visitors.label" = "Besøgende"; - diff --git a/WordPress/Resources/de.lproj/Localizable.strings b/WordPress/Resources/de.lproj/Localizable.strings index 0afe0b387603..107e605dc084 100644 --- a/WordPress/Resources/de.lproj/Localizable.strings +++ b/WordPress/Resources/de.lproj/Localizable.strings @@ -9174,4 +9174,3 @@ translators: Block name. %s: The localized block name */ "widget.today.title" = "Heute"; "widget.today.views.label" = "Aufrufe"; "widget.today.visitors.label" = "Besucher"; - diff --git a/WordPress/Resources/en-AU.lproj/Localizable.strings b/WordPress/Resources/en-AU.lproj/Localizable.strings index 463ac2abc3f9..1e0fbaab5a97 100644 --- a/WordPress/Resources/en-AU.lproj/Localizable.strings +++ b/WordPress/Resources/en-AU.lproj/Localizable.strings @@ -9174,4 +9174,3 @@ translators: Block name. %s: The localized block name */ "widget.today.title" = "Today"; "widget.today.views.label" = "Views"; "widget.today.visitors.label" = "Visitors"; - diff --git a/WordPress/Resources/en-CA.lproj/Localizable.strings b/WordPress/Resources/en-CA.lproj/Localizable.strings index 5d1062eeaa88..cfec3a261fef 100644 --- a/WordPress/Resources/en-CA.lproj/Localizable.strings +++ b/WordPress/Resources/en-CA.lproj/Localizable.strings @@ -9174,4 +9174,3 @@ translators: Block name. %s: The localized block name */ "widget.today.title" = "Today"; "widget.today.views.label" = "Views"; "widget.today.visitors.label" = "Visitors"; - diff --git a/WordPress/Resources/en-GB.lproj/Localizable.strings b/WordPress/Resources/en-GB.lproj/Localizable.strings index 51a93dd5c9ac..d4bbb908eff9 100644 --- a/WordPress/Resources/en-GB.lproj/Localizable.strings +++ b/WordPress/Resources/en-GB.lproj/Localizable.strings @@ -9174,4 +9174,3 @@ translators: Block name. %s: The localized block name */ "widget.today.title" = "Today"; "widget.today.views.label" = "Views"; "widget.today.visitors.label" = "Visitors"; - diff --git a/WordPress/Resources/en.lproj/Localizable.strings b/WordPress/Resources/en.lproj/Localizable.strings index 3e019edf0f81b0cf12e2239ee8af40280ac7cb7f..d6fc0869c4786af4583b5fd1d58cc75d54c6e9c0 100644 GIT binary patch delta 35 qcmZ3s%VfzelZFF7M2#)7Pc1l7LFFq7OocV7M?AF7M2#)7Pc1l7LFFq7OocV7M?A Date: Fri, 26 Nov 2021 01:16:59 +0100 Subject: [PATCH 09/12] Remove trailing whitespaces To make Hound happy (again) --- .../Localization/LocalizableStrings.swift | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/WordPress/WordPressStatsWidgets/Views/Localization/LocalizableStrings.swift b/WordPress/WordPressStatsWidgets/Views/Localization/LocalizableStrings.swift index c8df017cda9f..e586179e7621 100644 --- a/WordPress/WordPressStatsWidgets/Views/Localization/LocalizableStrings.swift +++ b/WordPress/WordPressStatsWidgets/Views/Localization/LocalizableStrings.swift @@ -5,38 +5,38 @@ enum LocalizableStrings { static let todayWidgetTitle = AppLocalizedString("widget.today.title", value: "Today", comment: "Title of today widget") - + // All Time Widget title static let allTimeWidgetTitle = AppLocalizedString("widget.alltime.title", value: "All Time", comment: "Title of all time widget") - + // This Week Widget title static let thisWeekWidgetTitle = AppLocalizedString("widget.thisweek.title", value: "This Week", comment: "Title of this week widget") - + // Widgets content static let viewsTitle = AppLocalizedString("widget.today.views.label", value: "Views", comment: "Title of views label in today widget") - + static let visitorsTitle = AppLocalizedString("widget.today.visitors.label", value: "Visitors", comment: "Title of visitors label in today widget") - + static let likesTitle = AppLocalizedString("widget.today.likes.label", value: "Likes", comment: "Title of likes label in today widget") - + static let commentsTitle = AppLocalizedString("widget.today.comments.label", value: "Comments", comment: "Title of comments label in today widget") - + static let postsTitle = AppLocalizedString("widget.alltime.posts.label", value: "Posts", comment: "Title of posts label in all time widget") - + static let bestViewsTitle = AppLocalizedString("widget.alltime.bestviews.label", value: "Best views ever", comment: "Title of best views ever label in all time widget") @@ -44,11 +44,11 @@ enum LocalizableStrings { static let unconfiguredViewTodayTitle = AppLocalizedString("widget.today.unconfigured.view.title", value: "Log in to WordPress to see today's stats.", comment: "Title of the unconfigured view in today widget") - + static let unconfiguredViewAllTimeTitle = AppLocalizedString("widget.alltime.unconfigured.view.title", value: "Log in to WordPress to see all time stats.", comment: "Title of the unconfigured view in all time widget") - + static let unconfiguredViewThisWeekTitle = AppLocalizedString("widget.thisweek.unconfigured.view.title", value: "Log in to WordPress to see this week's stats.", comment: "Title of the unconfigured view in this week widget") @@ -56,7 +56,7 @@ enum LocalizableStrings { static let noDataViewTitle = AppLocalizedString("widget.today.nodata.view.title", value: "Unable to load site stats.", comment: "Title of the nodata view in today widget") - + // Today Widget Preview static let todayPreviewDescription = AppLocalizedString("widget.today.preview.description", value: "Stay up to date with today's activity on your WordPress site.", @@ -65,12 +65,12 @@ enum LocalizableStrings { static let allTimePreviewDescription = AppLocalizedString("widget.alltime.preview.description", value: "Stay up to date with all time activity on your WordPress site.", comment: "Description of all time widget in the preview") - + // This Week Widget preview static let thisWeekPreviewDescription = AppLocalizedString("widget.thisweek.preview.description", value: "Stay up to date with this week activity on your WordPress site.", comment: "Description of all time widget in the preview") - + // Errors static let unavailableViewTitle = AppLocalizedString("widget.today.view.unavailable.title", value: "View is unavailable", From ec9cc02ebefe637cf01127c747019fcbe2bdaf83 Mon Sep 17 00:00:00 2001 From: Olivier Halligon Date: Fri, 26 Nov 2021 01:38:58 +0100 Subject: [PATCH 10/12] Manually reorder the `widget.*` keys in `en.lproj` To put them in alphabetical order, so that during the next code-freeze or run of the generate_strings_file_for_glotpress lane, the diff will be smaller by not moving these lines around (since genstrings sort the keys in alphabetical order when generating its `.strings` file from parsing the code). --- .../Resources/en.lproj/Localizable.strings | Bin 859428 -> 859348 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/WordPress/Resources/en.lproj/Localizable.strings b/WordPress/Resources/en.lproj/Localizable.strings index d6fc0869c4786af4583b5fd1d58cc75d54c6e9c0..905ebfb663890e841d96ca382426d024cfd4ff9f 100644 GIT binary patch delta 160 zcmZ3o%jC*VlZFF7M2#)7Pc1l7LFFq7OocVEj(95r*F_@6q@cL!FvY6`qj$L zGd)FuH)8rPabAn<0+PH|jMEKVxFx0wi1W5h7m(pK+TJI{JB?|2pCKy;SkLx(0=yoK z(=Qls$!&ij%B#XS9Y{(|HxS}g+TJJ3Yr_OFd6phG*LEf$UOUF=0XLagw%-utiTVWq DJR&j- delta 208 zcmcbz(`3mmlZFF7M2#)7Pc1l7LFFq7OocVEj(95rw80*V%c7$#1r*Pkc)wf zK_3Ve7Lfcifmsd$5X~M{el6P-1Y`p9u>yv4$e$0 z)1Qg)I8FZ|!Q(RhS1UWu^b2A<6F|y^rau$qIkP=MoX3iBdXhe))OH6+o&!t(YrZ Date: Fri, 26 Nov 2021 01:58:04 +0100 Subject: [PATCH 11/12] Add some missing `widget.*` keys in `en.lproj` Seems they have always be missing in the original `.strings` too (but since the code used `value:` in its call to `NSLocalizedString` before that PR, those 2 missing in the development language didn't have any impact) --- .../Resources/en.lproj/Localizable.strings | Bin 859348 -> 859894 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/WordPress/Resources/en.lproj/Localizable.strings b/WordPress/Resources/en.lproj/Localizable.strings index 905ebfb663890e841d96ca382426d024cfd4ff9f..8b67516b9d8ed59b34ced8efacdc475d5b630e79 100644 GIT binary patch delta 144 zcmcbz)8yM;lZFF7M2#)7Pc1l7LFFq7OocVEj(UQ(-Xvbil&E2^9W6UB+e5x zUC)D!Yr38qGuLz%Ii95LaZ)@i%+ojMGD>mhG2}C(FeEaRFeFZQ{KhUi{f8ot6^dxR oG>_u+3rD!vreB!FB{6-83bVxY0(EAd=@$&R Date: Fri, 26 Nov 2021 13:02:28 +0100 Subject: [PATCH 12/12] Improvement wording in comments h/t @mokagio for the great wording suggestions Co-authored-by: Gio Lodi --- .../Views/Localization/AppLocalizedString.swift | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/WordPress/WordPressStatsWidgets/Views/Localization/AppLocalizedString.swift b/WordPress/WordPressStatsWidgets/Views/Localization/AppLocalizedString.swift index 60ff8ae89ecc..1fe364ba6809 100644 --- a/WordPress/WordPressStatsWidgets/Views/Localization/AppLocalizedString.swift +++ b/WordPress/WordPressStatsWidgets/Views/Localization/AppLocalizedString.swift @@ -11,16 +11,18 @@ extension Bundle { }() } -/// This is mostly useful to express *intent* on your API. It does not provide any compile-time guarantee +/// Use this to express *intent* on your API – though remember that, as a `typealias`, it won't provide any compile-time guarantee. typealias LocalizedString = String /// Be sure to use this function instead of `NSLocalizedString` in order to reference localized strings **from the app bundle**. /// As `NSLocalisedString` by default will look up strings in the current (main) bundle, which could be an App Extension for cases like a Widget /// but, in order to avoid duplicating our strings accross targets, it is better to make App Extensions / Widgets reference the strings -/// from the `Localizable.strings` files that are hosted the app bundle instead of hosting their own `.strings` file. +/// from the `Localizable.strings` files that are hosted in the app bundle instead of hosting their own `.strings` file. /// /// Also, be sure to pass this function name as a custom routine when parsing the code to generate the main `.strings` file, -/// using `genstrings -s AppLocalizedString` to that this helper method is recognized. +/// using `genstrings -s AppLocalizedString` so that this helper method is recognized. You will also have to +/// exclude this very file from being parsed by `genstrings`, so that it won't accidentally misinterpret that +/// routine/function definition below as a call site and generate an error because of it. func AppLocalizedString(_ key: String, tableName: String? = nil, value: String? = nil, comment: String) -> LocalizedString { Bundle.app.localizedString(forKey: key, value: value, table: nil) }