Fix Chinese and Norwegian language detection

This commit is contained in:
Ilya Laktyushin 2023-02-02 17:17:06 +04:00
parent 6a5bead5bc
commit 55ff4563f7
2 changed files with 28 additions and 10 deletions

View File

@ -222,14 +222,24 @@ public func chatTranslationState(context: AccountContext, peerId: EnginePeer.Id)
let hypotheses = languageRecognizer.languageHypotheses(withMaximum: 4) let hypotheses = languageRecognizer.languageHypotheses(withMaximum: 4)
languageRecognizer.reset() languageRecognizer.reset()
let filteredLanguages = hypotheses.filter { supportedTranslationLanguages.contains($0.key.rawValue) }.sorted(by: { $0.value > $1.value }) func normalize(_ code: String) -> String {
if let language = filteredLanguages.first(where: { supportedTranslationLanguages.contains($0.key.rawValue) }) { if code.contains("-") {
let fromLang = language.key.rawValue 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 fromLangs[fromLang] = (fromLangs[fromLang] ?? 0) + message.text.count
count += 1 count += 1
} }
} }
if count >= 10 { if count >= 16 {
break break
} }
} }

View File

@ -25,9 +25,6 @@ public var supportedTranslationLanguages = [
"ca", "ca",
"ceb", "ceb",
"zh", "zh",
// "zh-Hant",
// "zh-CN", "zh"
// "zh-TW"
"co", "co",
"hr", "hr",
"cs", "cs",
@ -168,9 +165,20 @@ public func canTranslateText(context: AccountContext, text: String, showTranslat
supportedTranslationLanguages = ["uk", "ru"] supportedTranslationLanguages = ["uk", "ru"]
} }
let filteredLanguages = hypotheses.filter { supportedTranslationLanguages.contains($0.key.rawValue) }.sorted(by: { $0.value > $1.value }) func normalize(_ code: String) -> String {
if let language = filteredLanguages.first(where: { supportedTranslationLanguages.contains($0.key.rawValue) }) { if code.contains("-") {
return (!dontTranslateLanguages.contains(language.key.rawValue), language.key.rawValue) 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 { } else {
return (false, nil) return (false, nil)
} }