Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions Projects/App/Sources/Managers/TranslationManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@ class TranslationManager {
- returns: the indication to able to translate by given locale of source/target
*/
public func canSupportTranslate(source : Locale, target : Locale) -> Bool{
guard let sourceTransLocale = TranslationLocale(rawValue: source.language.languageCode?.identifier ?? "") else{
guard let sourceTransLocale = TranslationLocale.from(locale: source) else{
return false;
}

guard let targetTransLocale = TranslationLocale(rawValue: target.language.languageCode?.identifier ?? "") else{
guard let targetTransLocale = TranslationLocale.from(locale: target) else{
return false;
}

Expand All @@ -52,8 +52,7 @@ class TranslationManager {
- returns: target locales can be translated from given source locale
*/
public func supportedTargetLangs(source: Locale) -> [TranslationLocale]{
let sourceLangCode = source.language.languageCode?.identifier ?? "";
guard let sourceLang = TranslationLocale(rawValue: sourceLangCode) else{
guard let sourceLang = TranslationLocale.from(locale: source) else{
return [];
}

Expand Down
22 changes: 20 additions & 2 deletions Projects/App/Sources/Models/TranslationLocale+Extension.swift
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,26 @@ extension TranslationLocale {
}

static func from(locale: Locale) -> TranslationLocale? {
let identifier = locale.language.languageCode?.identifier ?? ""
return TranslationLocale(rawValue: identifier)
let languageCode = locale.language.languageCode?.identifier.lowercased() ?? ""
let scriptCode = locale.language.script?.identifier.lowercased()

switch languageCode {
case "zh":
if scriptCode == "hant" {
return .taiwan
}
if scriptCode == "hans" {
return .chinese
}

let normalizedIdentifier = locale.identifier.lowercased().replacingOccurrences(of: "_", with: "-")
if normalizedIdentifier.contains("hant") || normalizedIdentifier.contains("zh-tw") {
return .taiwan
}
return .chinese
default:
return TranslationLocale(rawValue: languageCode)
}
}
}

Loading