Skip to content

Commit

Permalink
Merge branch 'dev' into feat-custom-prompt
Browse files Browse the repository at this point in the history
  • Loading branch information
tisfeng authored Sep 17, 2024
2 parents 06dcd06 + 33726f3 commit 4a419d0
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 7 deletions.
10 changes: 3 additions & 7 deletions Easydict/Swift/Feature/Localization/I18nHelper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand Down
28 changes: 28 additions & 0 deletions Easydict/Swift/Feature/Localization/LanguageState.swift
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,31 @@ class LanguageState: ObservableObject {
}
}
}

// https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPInternational/LanguageandLocaleIDs/LanguageandLocaleIDs.html
extension Locale {
var languageType: LanguageState.LanguageType? {
let languageCode = language.languageCode?.identifier
let script = language.script?.identifier
let region = language.region?.identifier

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 type = LanguageState.LanguageType(rawValue: languageCode) {
return type
}
if let type = LanguageState.LanguageType(rawValue: languageCodeScriptRegion) {
return type
}
if let type = LanguageState.LanguageType(rawValue: languageCodeScript) {
return type
}
if let type = LanguageState.LanguageType(rawValue: languageCodeRegion) {
return type
}

return nil
}
}

0 comments on commit 4a419d0

Please sign in to comment.