diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Messages/Translate.swift b/submodules/TelegramCore/Sources/TelegramEngine/Messages/Translate.swift index e8881349e3..7f184ecffd 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Messages/Translate.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Messages/Translate.swift @@ -483,6 +483,33 @@ public func requestTranslateUrl(url: URL) -> Signal public func gtranslate(_ text: String, _ toLang: String) -> Signal { + let parts = gtranslateSplitTextBySentences(text) + + let translationSignals: [Signal] = parts.map { part in + return gtranslateSentence(part, toLang) + } + + return combineLatest(translationSignals) + |> map { results -> String in + var result: String = "" + + for translatedPart in results { + if !result.isEmpty { + result += " " + } + result += translatedPart + } + + if result.isEmpty { + return text // Fallback to original text if translation failed + } + + return result + } +} + + +public func gtranslateSentence(_ text: String, _ toLang: String) -> Signal { return Signal { subscriber in let urlString = getTranslateUrl(text, getGTranslateLang(toLang)) let url = URL(string: urlString)! @@ -492,10 +519,14 @@ public func gtranslate(_ text: String, _ toLang: String) -> Signal Signal [String] { + if text.count <= maxChunkLength { + return [text] + } + var chunks: [String] = [] + var currentChunk = "" + + text.enumerateSubstrings(in: text.startIndex..