From 44560b35af4ae6a6a95ccaf21936798e0738a87a Mon Sep 17 00:00:00 2001 From: choykarl <253440030@qq.com> Date: Tue, 27 Aug 2024 21:54:33 +0800 Subject: [PATCH 1/3] fix: optimize default language parsing --- .../Feature/Localization/I18nHelper.swift | 10 +++----- .../Feature/Localization/LanguageState.swift | 25 +++++++++++++++++++ 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/Easydict/Swift/Feature/Localization/I18nHelper.swift b/Easydict/Swift/Feature/Localization/I18nHelper.swift index fb4da04c9..07b2b7b46 100644 --- a/Easydict/Swift/Feature/Localization/I18nHelper.swift +++ b/Easydict/Swift/Feature/Localization/I18nHelper.swift @@ -25,19 +25,15 @@ class I18nHelper: NSObject { } var localizeCode: String { - if let code = UserDefaults.standard.string(forKey: languagePreferenceLocalKey) { + if let code = UserDefaults.standard.string(forKey: languagePreferenceLocalKey), + LanguageState.LanguageType(rawValue: code) != nil { return code } - if let localLanguageType = LanguageState.LanguageType(rawValue: Locale.current.identifier) { + if let localLanguageType = Locale.current.languageType { return localLanguageType.rawValue } - // We should use EZLanguageModel localeIdentifier to rewrite this code. - if Locale.current.identifier == "zh_CN" { - return LanguageState.LanguageType.simplifiedChinese.rawValue - } - return LanguageState.LanguageType.english.rawValue } diff --git a/Easydict/Swift/Feature/Localization/LanguageState.swift b/Easydict/Swift/Feature/Localization/LanguageState.swift index 66c12909b..206d0ed19 100644 --- a/Easydict/Swift/Feature/Localization/LanguageState.swift +++ b/Easydict/Swift/Feature/Localization/LanguageState.swift @@ -45,3 +45,28 @@ class LanguageState: ObservableObject { } } } + +// https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPInternational/LanguageandLocaleIDs/LanguageandLocaleIDs.html +extension Locale { + var languageType: LanguageState.LanguageType? { + let languageCode = Locale.current.language.languageCode?.identifier + let script = Locale.current.language.script?.identifier + + var type: LanguageState.LanguageType? + switch languageCode { + case "zh": + type = .simplifiedChinese + case "en": + type = .english + default: + break + } + + if let languageCode, let script, + let tmpType = LanguageState.LanguageType(rawValue: "\(languageCode)-\(script)") { + type = tmpType + } + + return type + } +} From 149893a918d68a1a41e225c88e11fc02fb16aa14 Mon Sep 17 00:00:00 2001 From: choykarl <253440030@qq.com> Date: Sat, 31 Aug 2024 14:37:29 +0800 Subject: [PATCH 2/3] pref: optimize logic --- .../Feature/Localization/LanguageState.swift | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/Easydict/Swift/Feature/Localization/LanguageState.swift b/Easydict/Swift/Feature/Localization/LanguageState.swift index 206d0ed19..d4fdaff5c 100644 --- a/Easydict/Swift/Feature/Localization/LanguageState.swift +++ b/Easydict/Swift/Feature/Localization/LanguageState.swift @@ -49,24 +49,24 @@ class LanguageState: ObservableObject { // https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPInternational/LanguageandLocaleIDs/LanguageandLocaleIDs.html extension Locale { var languageType: LanguageState.LanguageType? { - let languageCode = Locale.current.language.languageCode?.identifier - let script = Locale.current.language.script?.identifier + let languageCode = language.languageCode?.identifier + let script = language.script?.identifier + let region = language.region?.identifier - var type: LanguageState.LanguageType? - switch languageCode { - case "zh": - type = .simplifiedChinese - case "en": - type = .english - default: - break - } + let languageCodeScriptRegion = [languageCode, script, region].compactMap { $0 }.joined(separator: "-") + let languageCodeScript = [languageCode, script].compactMap { $0 }.joined(separator: "-") + let languageCodeRegion = [languageCode, region].compactMap { $0 }.joined(separator: "-") - if let languageCode, let script, - let tmpType = LanguageState.LanguageType(rawValue: "\(languageCode)-\(script)") { - type = tmpType + if let languageCode, let type = LanguageState.LanguageType(rawValue: languageCode) { + return type + } else if let type = LanguageState.LanguageType(rawValue: languageCodeScriptRegion) { + return type + } else if let type = LanguageState.LanguageType(rawValue: languageCodeScript) { + return type + } else if let type = LanguageState.LanguageType(rawValue: languageCodeRegion) { + return type } - return type + return nil } } From 489dc6e2f3fb31dc6622b14b7ee41a20fb1410f4 Mon Sep 17 00:00:00 2001 From: choykarl <253440030@qq.com> Date: Tue, 17 Sep 2024 11:41:41 +0800 Subject: [PATCH 3/3] pref: code optimize --- Easydict/Swift/Feature/Localization/LanguageState.swift | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Easydict/Swift/Feature/Localization/LanguageState.swift b/Easydict/Swift/Feature/Localization/LanguageState.swift index 4674da1a1..7244a647e 100644 --- a/Easydict/Swift/Feature/Localization/LanguageState.swift +++ b/Easydict/Swift/Feature/Localization/LanguageState.swift @@ -62,11 +62,14 @@ extension Locale { if let languageCode, let type = LanguageState.LanguageType(rawValue: languageCode) { return type - } else if let type = LanguageState.LanguageType(rawValue: languageCodeScriptRegion) { + } + if let type = LanguageState.LanguageType(rawValue: languageCodeScriptRegion) { return type - } else if let type = LanguageState.LanguageType(rawValue: languageCodeScript) { + } + if let type = LanguageState.LanguageType(rawValue: languageCodeScript) { return type - } else if let type = LanguageState.LanguageType(rawValue: languageCodeRegion) { + } + if let type = LanguageState.LanguageType(rawValue: languageCodeRegion) { return type }