diff --git a/submodules/TranslateUI/Sources/ChatTranslation.swift b/submodules/TranslateUI/Sources/ChatTranslation.swift index 1a869e8512..c43060353b 100644 --- a/submodules/TranslateUI/Sources/ChatTranslation.swift +++ b/submodules/TranslateUI/Sources/ChatTranslation.swift @@ -222,14 +222,24 @@ public func chatTranslationState(context: AccountContext, peerId: EnginePeer.Id) let hypotheses = languageRecognizer.languageHypotheses(withMaximum: 4) languageRecognizer.reset() - let filteredLanguages = hypotheses.filter { supportedTranslationLanguages.contains($0.key.rawValue) }.sorted(by: { $0.value > $1.value }) - if let language = filteredLanguages.first(where: { supportedTranslationLanguages.contains($0.key.rawValue) }) { - let fromLang = language.key.rawValue + func normalize(_ code: String) -> String { + if code.contains("-") { + return code.components(separatedBy: "-").first ?? code + } else if code == "nb" { + return "no" + } else { + return code + } + } + + let filteredLanguages = hypotheses.filter { supportedTranslationLanguages.contains(normalize($0.key.rawValue)) }.sorted(by: { $0.value > $1.value }) + if let language = filteredLanguages.first { + let fromLang = normalize(language.key.rawValue) fromLangs[fromLang] = (fromLangs[fromLang] ?? 0) + message.text.count count += 1 } } - if count >= 10 { + if count >= 16 { break } } diff --git a/submodules/TranslateUI/Sources/Translate.swift b/submodules/TranslateUI/Sources/Translate.swift index 80bdd32879..5a70f375ce 100644 --- a/submodules/TranslateUI/Sources/Translate.swift +++ b/submodules/TranslateUI/Sources/Translate.swift @@ -25,9 +25,6 @@ public var supportedTranslationLanguages = [ "ca", "ceb", "zh", -// "zh-Hant", -// "zh-CN", "zh" -// "zh-TW" "co", "hr", "cs", @@ -168,9 +165,20 @@ public func canTranslateText(context: AccountContext, text: String, showTranslat supportedTranslationLanguages = ["uk", "ru"] } - let filteredLanguages = hypotheses.filter { supportedTranslationLanguages.contains($0.key.rawValue) }.sorted(by: { $0.value > $1.value }) - if let language = filteredLanguages.first(where: { supportedTranslationLanguages.contains($0.key.rawValue) }) { - return (!dontTranslateLanguages.contains(language.key.rawValue), language.key.rawValue) + func normalize(_ code: String) -> String { + if code.contains("-") { + return code.components(separatedBy: "-").first ?? code + } else if code == "nb" { + return "no" + } else { + return code + } + } + + let filteredLanguages = hypotheses.filter { supportedTranslationLanguages.contains(normalize($0.key.rawValue)) }.sorted(by: { $0.value > $1.value }) + if let language = filteredLanguages.first { + let languageCode = normalize(language.key.rawValue) + return (!dontTranslateLanguages.contains(languageCode), languageCode) } else { return (false, nil) }