From f48e30ea7df29c248026f7eb180d3f58fb9f1aa6 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Fri, 23 Dec 2022 07:46:56 +0800 Subject: [PATCH 01/25] Adds localization hints to iOS storyboards --- iOS/Base.lproj/LaunchScreenPad.storyboard | 32 +++++++---- iOS/Base.lproj/LaunchScreenPhone.storyboard | 32 +++++++---- iOS/Base.lproj/Main.storyboard | 64 +++++++++++++++++++-- 3 files changed, 102 insertions(+), 26 deletions(-) diff --git a/iOS/Base.lproj/LaunchScreenPad.storyboard b/iOS/Base.lproj/LaunchScreenPad.storyboard index 06c951431..c7cbea4ec 100644 --- a/iOS/Base.lproj/LaunchScreenPad.storyboard +++ b/iOS/Base.lproj/LaunchScreenPad.storyboard @@ -1,9 +1,11 @@ - + - + + + @@ -14,8 +16,8 @@ - + @@ -33,7 +35,7 @@ - + @@ -41,7 +43,7 @@ - + @@ -49,7 +51,7 @@ - + @@ -65,12 +67,19 @@ - + + + + + + + + @@ -83,7 +92,7 @@ - + @@ -113,7 +122,10 @@ - - + + + + + diff --git a/iOS/Base.lproj/LaunchScreenPhone.storyboard b/iOS/Base.lproj/LaunchScreenPhone.storyboard index 61a86ee99..e77de49db 100644 --- a/iOS/Base.lproj/LaunchScreenPhone.storyboard +++ b/iOS/Base.lproj/LaunchScreenPhone.storyboard @@ -1,9 +1,11 @@ - + - + + + @@ -14,8 +16,8 @@ - + @@ -33,7 +35,7 @@ - + @@ -41,7 +43,7 @@ - + @@ -49,7 +51,7 @@ - + @@ -65,12 +67,19 @@ - + + + + + + + + @@ -83,7 +92,7 @@ - + @@ -113,7 +122,10 @@ - - + + + + + diff --git a/iOS/Base.lproj/Main.storyboard b/iOS/Base.lproj/Main.storyboard index d807aea09..9ff5303b7 100644 --- a/iOS/Base.lproj/Main.storyboard +++ b/iOS/Base.lproj/Main.storyboard @@ -1,9 +1,9 @@ - + - + @@ -18,8 +18,8 @@ - @@ -33,6 +33,9 @@ + + + @@ -42,6 +45,9 @@ + + + @@ -51,6 +57,9 @@ + + + @@ -62,6 +71,9 @@ + + + @@ -74,6 +86,9 @@ + + + @@ -83,6 +98,9 @@ + + + @@ -92,6 +110,9 @@ + + + @@ -141,6 +162,9 @@ + + + @@ -151,7 +175,11 @@ - + + + + + @@ -203,6 +231,9 @@ + + + @@ -213,13 +244,19 @@ + + + - + + + + @@ -227,6 +264,9 @@ + + + @@ -341,24 +381,36 @@ + + + From d457b2dd53be5fa54348ba761ab3007e5172193a Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Sat, 24 Dec 2022 15:01:33 +0800 Subject: [PATCH 02/25] Interim commit wth .based localisations --- Shared/SmartFeeds/SmartFeedsController.swift | 2 +- Shared/SmartFeeds/StarredFeedDelegate.swift | 2 +- Shared/SmartFeeds/TodayFeedDelegate.swift | 2 +- Shared/SmartFeeds/UnreadFeed.swift | 2 +- iOS/AppDefaults.swift | 6 +- iOS/AppDelegate.swift | 9 ++- iOS/Article/ArticleViewController.swift | 6 +- iOS/Article/ImageViewController.swift | 4 +- iOS/Article/OpenInSafariActivity.swift | 2 +- iOS/Base.lproj/Main.storyboard | 5 +- iOS/Intents/en.lproj/Intents.strings | 29 ++------ iOS/KeyboardManager.swift | 50 ++++++------- iOS/MasterFeed/MasterFeedViewController.swift | 70 +++++++++---------- iOS/MasterFeed/RefreshProgressView.swift | 4 +- .../MarkAsReadAlertController.swift | 9 ++- .../MasterTimelineViewController.swift | 57 +++++++-------- iOS/Settings/General/SettingsView.swift | 2 +- 17 files changed, 126 insertions(+), 135 deletions(-) diff --git a/Shared/SmartFeeds/SmartFeedsController.swift b/Shared/SmartFeeds/SmartFeedsController.swift index 75288e496..41fbc6700 100644 --- a/Shared/SmartFeeds/SmartFeedsController.swift +++ b/Shared/SmartFeeds/SmartFeedsController.swift @@ -17,7 +17,7 @@ final class SmartFeedsController: DisplayNameProvider, ContainerIdentifiable { } public static let shared = SmartFeedsController() - let nameForDisplay = NSLocalizedString("Smart Feeds", comment: "Smart Feeds group title") + let nameForDisplay = NSLocalizedString("smartfeeds.title", comment: "Smart Feeds group title") var smartFeeds = [Feed]() let todayFeed = SmartFeed(delegate: TodayFeedDelegate()) diff --git a/Shared/SmartFeeds/StarredFeedDelegate.swift b/Shared/SmartFeeds/StarredFeedDelegate.swift index 55770fe36..1eb58adec 100644 --- a/Shared/SmartFeeds/StarredFeedDelegate.swift +++ b/Shared/SmartFeeds/StarredFeedDelegate.swift @@ -20,7 +20,7 @@ struct StarredFeedDelegate: SmartFeedDelegate { return FeedIdentifier.smartFeed(String(describing: StarredFeedDelegate.self)) } - let nameForDisplay = NSLocalizedString("Starred", comment: "Starred pseudo-feed title") + let nameForDisplay = NSLocalizedString("smartfeed.title.starred", comment: "Starred pseudo-feed title") let fetchType: FetchType = .starred(nil) var smallIcon: IconImage? { return AppAssets.starredFeedImage diff --git a/Shared/SmartFeeds/TodayFeedDelegate.swift b/Shared/SmartFeeds/TodayFeedDelegate.swift index ad6e47977..8d2aa361a 100644 --- a/Shared/SmartFeeds/TodayFeedDelegate.swift +++ b/Shared/SmartFeeds/TodayFeedDelegate.swift @@ -18,7 +18,7 @@ struct TodayFeedDelegate: SmartFeedDelegate { return FeedIdentifier.smartFeed(String(describing: TodayFeedDelegate.self)) } - let nameForDisplay = NSLocalizedString("Today", comment: "Today pseudo-feed title") + let nameForDisplay = NSLocalizedString("smartfeed.title.today", comment: "Today pseudo-feed title") let fetchType = FetchType.today(nil) var smallIcon: IconImage? { return AppAssets.todayFeedImage diff --git a/Shared/SmartFeeds/UnreadFeed.swift b/Shared/SmartFeeds/UnreadFeed.swift index eb9f4fb9c..32aeb7cce 100644 --- a/Shared/SmartFeeds/UnreadFeed.swift +++ b/Shared/SmartFeeds/UnreadFeed.swift @@ -30,7 +30,7 @@ final class UnreadFeed: PseudoFeed { return FeedIdentifier.smartFeed(String(describing: UnreadFeed.self)) } - let nameForDisplay = NSLocalizedString("All Unread", comment: "All Unread pseudo-feed title") + let nameForDisplay = NSLocalizedString("smartfeed.title.allunread", comment: "All Unread pseudo-feed title") let fetchType = FetchType.unread(nil) var unreadCount = 0 { diff --git a/iOS/AppDefaults.swift b/iOS/AppDefaults.swift index 4d68d6b4a..934df2540 100644 --- a/iOS/AppDefaults.swift +++ b/iOS/AppDefaults.swift @@ -18,11 +18,11 @@ enum UserInterfaceColorPalette: Int, CustomStringConvertible, CaseIterable { var description: String { switch self { case .automatic: - return NSLocalizedString("Automatic", comment: "Automatic") + return NSLocalizedString("appdefaults.colorpalette.automatic", comment: "Automatic") case .light: - return NSLocalizedString("Light", comment: "Light") + return NSLocalizedString("appdefaults.colorpalette.light", comment: "Light") case .dark: - return NSLocalizedString("Dark", comment: "Dark") + return NSLocalizedString("appdefaults.colorpalette.dark", comment: "Dark") } } diff --git a/iOS/AppDelegate.swift b/iOS/AppDelegate.swift index bf145a3b0..6df9414b1 100644 --- a/iOS/AppDelegate.swift +++ b/iOS/AppDelegate.swift @@ -118,6 +118,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD #if DEBUG syncTimer!.update() + if let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path { + print("Documents Directory: \(documentsPath)") + } #endif return true @@ -253,15 +256,15 @@ private extension AppDelegate { } private func initializeHomeScreenQuickActions() { - let unreadTitle = NSLocalizedString("First Unread", comment: "First Unread") + let unreadTitle = NSLocalizedString("homescreen.action.firstunread", comment: "First Unread") let unreadIcon = UIApplicationShortcutIcon(systemImageName: "chevron.down.circle") let unreadItem = UIApplicationShortcutItem(type: "com.ranchero.NetNewsWire.FirstUnread", localizedTitle: unreadTitle, localizedSubtitle: nil, icon: unreadIcon, userInfo: nil) - let searchTitle = NSLocalizedString("Search", comment: "Search") + let searchTitle = NSLocalizedString("homescreen.action.search", comment: "Search") let searchIcon = UIApplicationShortcutIcon(systemImageName: "magnifyingglass") let searchItem = UIApplicationShortcutItem(type: "com.ranchero.NetNewsWire.ShowSearch", localizedTitle: searchTitle, localizedSubtitle: nil, icon: searchIcon, userInfo: nil) - let addTitle = NSLocalizedString("Add Feed", comment: "Add Feed") + let addTitle = NSLocalizedString("homescreen.action.addfeed", comment: "Add Feed") let addIcon = UIApplicationShortcutIcon(systemImageName: "plus") let addItem = UIApplicationShortcutItem(type: "com.ranchero.NetNewsWire.ShowAdd", localizedTitle: addTitle, localizedSubtitle: nil, icon: addIcon, userInfo: nil) diff --git a/iOS/Article/ArticleViewController.swift b/iOS/Article/ArticleViewController.swift index b76ece0ba..a32d2c243 100644 --- a/iOS/Article/ArticleViewController.swift +++ b/iOS/Article/ArticleViewController.swift @@ -267,7 +267,7 @@ class ArticleViewController: UIViewController, MainControllerIdentifiable, Loggi themeActions.append(action) } - let defaultThemeAction = UIAction(title: NSLocalizedString("Default", comment: "Default"), + let defaultThemeAction = UIAction(title: NSLocalizedString("button.title.default", comment: "Button title: Default"), image: nil, identifier: nil, discoverabilityTitle: nil, @@ -313,13 +313,13 @@ class ArticleViewController: UIViewController, MainControllerIdentifiable, Loggi } appearanceBarButtonItem.image = AppAssets.articleAppearanceImage - appearanceBarButtonItem.menu = UIMenu(title: NSLocalizedString("Article Appearance", comment: "Appearance"), children: appearanceChildren) + appearanceBarButtonItem.menu = UIMenu(title: NSLocalizedString("menu.title.articleappearance", comment: "Article Appearance menu title"), children: appearanceChildren) } private func configureArticleExtractorMenu() { if let feed = article?.webFeed { let extractorOn = feed.isArticleExtractorAlwaysOn ?? false - let readerAction = UIAction(title: NSLocalizedString("Always Use Reader View", comment: "Always Use Reader View"), + let readerAction = UIAction(title: NSLocalizedString("button.title.alwaysusreaderview", comment: "Button title: Always Use Reader View"), image: AppAssets.articleExtractorOffSF, identifier: nil, discoverabilityTitle: nil, diff --git a/iOS/Article/ImageViewController.swift b/iOS/Article/ImageViewController.swift index 91d8a17d9..21cdcfa09 100644 --- a/iOS/Article/ImageViewController.swift +++ b/iOS/Article/ImageViewController.swift @@ -29,8 +29,8 @@ class ImageViewController: UIViewController { super.viewDidLoad() closeButton.imageView?.contentMode = .scaleAspectFit - closeButton.accessibilityLabel = NSLocalizedString("Close", comment: "Close") - shareButton.accessibilityLabel = NSLocalizedString("Share", comment: "Share") + closeButton.accessibilityLabel = NSLocalizedString("button.title.close", comment: "Close") + shareButton.accessibilityLabel = NSLocalizedString("button.title.share", comment: "Share") imageScrollView.setup() imageScrollView.imageScrollViewDelegate = self diff --git a/iOS/Article/OpenInSafariActivity.swift b/iOS/Article/OpenInSafariActivity.swift index 05738081a..69253e7e9 100644 --- a/iOS/Article/OpenInSafariActivity.swift +++ b/iOS/Article/OpenInSafariActivity.swift @@ -13,7 +13,7 @@ class OpenInBrowserActivity: UIActivity { private var activityItems: [Any]? override var activityTitle: String? { - return NSLocalizedString("Open in Browser", comment: "Open in Browser") + return NSLocalizedString("activity.title.openinbrowser", comment: "Open in Browser") } override var activityImage: UIImage? { diff --git a/iOS/Base.lproj/Main.storyboard b/iOS/Base.lproj/Main.storyboard index 9ff5303b7..1e5b5040b 100644 --- a/iOS/Base.lproj/Main.storyboard +++ b/iOS/Base.lproj/Main.storyboard @@ -18,7 +18,7 @@ -