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)
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
}
}

View File

@ -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)
}