From 2a45cf8e5d3f1c161d72bc4aef63306555384920 Mon Sep 17 00:00:00 2001 From: Cody Bromley Date: Tue, 27 May 2025 13:40:40 -0500 Subject: [PATCH] fix: always display system language in language selector --- Blankie/Models/Language.swift | 25 +++++++++++++++++++++++-- Blankie/UI/Views/PreferencesView.swift | 2 +- CHANGELOG.md | 1 + 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/Blankie/Models/Language.swift b/Blankie/Models/Language.swift index d105c88..19c5534 100644 --- a/Blankie/Models/Language.swift +++ b/Blankie/Models/Language.swift @@ -22,9 +22,30 @@ struct Language: Hashable, Identifiable, Equatable { } static var system: Language { - Language( + // Read the system's actual language preference from UserDefaults global domain + let globalDomain = UserDefaults(suiteName: UserDefaults.globalDomain) + let systemLanguages = globalDomain?.object(forKey: "AppleLanguages") as? [String] + let systemLanguageCode = systemLanguages?.first ?? "en" + + // For display, we want just the base language code (e.g., "en" from "en-US") + let languageCode = + systemLanguageCode.split(separator: "-").first.map(String.init) ?? systemLanguageCode + + // Create a locale for the system language to get its native name + let systemLocale = Locale(identifier: languageCode) + + // Get the language name in its own locale (e.g., "English" for en, "Español" for es) + let languageName = systemLocale.localizedString(forLanguageCode: languageCode) ?? languageCode + + // Show "System (Language)" where System is in the current app language + let displayName = + "\(NSLocalizedString("System", comment: "System default language option")) (\(languageName))" + + print("🌐 System language from global domain: code=\(languageCode), name=\(languageName)") + + return Language( code: "system", - displayName: NSLocalizedString("System", comment: "System default language option"), + displayName: displayName, icon: "globe") } diff --git a/Blankie/UI/Views/PreferencesView.swift b/Blankie/UI/Views/PreferencesView.swift index 96238f3..7e1cba5 100644 --- a/Blankie/UI/Views/PreferencesView.swift +++ b/Blankie/UI/Views/PreferencesView.swift @@ -105,7 +105,7 @@ struct PreferencesView: View { } .pickerStyle(.menu) .labelsHidden() - .frame(width: 180) + .frame(width: 220) } var body: some View { diff --git a/CHANGELOG.md b/CHANGELOG.md index c709f76..494c1b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved French (Français) translations - thanks to **ma203** - Improved Simple Chinese (中文) translations +- Fixed an issue where the app wasn't restarting properly after language changes - Improved translation credits layout ## [1.0.8] - 2025-05-21