mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-10-09 03:20:48 +00:00
Improve translation fallback
This commit is contained in:
parent
cfc8529556
commit
ea290c439e
@ -198,9 +198,10 @@ private func SGControllerEntries(presentationData: PresentationData, callListSet
|
||||
entries.append(.disclosure(id: id.count, section: .translation, link: .languageSettings, text: presentationData.strings.Localization_TranslateEntireChat))
|
||||
entries.append(.notice(id: id.count, section: .translation, text: i18n("Common.NoTelegramPremiumNeeded", lang, presentationData.strings.Settings_Premium)))
|
||||
|
||||
entries.append(.header(id: id.count, section: .voiceMessages, text: presentationData.strings.Privacy_VoiceMessages.uppercased(), badge: nil))
|
||||
entries.append(.header(id: id.count, section: .voiceMessages, text: "Settings.Transcription.Header".i18n(lang), badge: nil))
|
||||
entries.append(.oneFromManySelector(id: id.count, section: .voiceMessages, settingName: .transcriptionBackend, text: i18n("Settings.Transcription.Backend", lang), value: i18n("Settings.Transcription.Backend.\(SGSimpleSettings.shared.transcriptionBackend)", lang), enabled: true))
|
||||
entries.append(.notice(id: id.count, section: .voiceMessages, text: i18n("Settings.Transcription.Backend.Notice", lang)))
|
||||
entries.append(.header(id: id.count, section: .voiceMessages, text: presentationData.strings.Privacy_VoiceMessages.uppercased(), badge: nil))
|
||||
entries.append(.toggle(id: id.count, section: .voiceMessages, settingName: .forceBuiltInMic, value: SGSimpleSettings.shared.forceBuiltInMic, text: i18n("Settings.forceBuiltInMic", lang), enabled: true))
|
||||
entries.append(.notice(id: id.count, section: .voiceMessages, text: i18n("Settings.forceBuiltInMic.Notice", lang)))
|
||||
|
||||
|
@ -40,6 +40,7 @@
|
||||
"Settings.Translation.Backend.gtranslate" = "GTranslate";
|
||||
"Settings.Translation.Backend.Notice" = "Swiftgram will fallback to other translation services in case Telegram is not available.";
|
||||
|
||||
"Settings.Transcription.Header" = "VOICE-TO-TEXT";
|
||||
"Settings.Transcription.Backend" = "Service";
|
||||
"Settings.Transcription.Backend.default" = "Telegram";
|
||||
"Settings.Transcription.Backend.apple" = "Apple";
|
||||
|
@ -559,45 +559,11 @@ public extension TelegramEngine {
|
||||
}
|
||||
|
||||
public func translate(text: String, toLang: String, entities: [MessageTextEntity] = []) -> Signal<(String, [MessageTextEntity])?, TranslationError> {
|
||||
// MARK: Swiftgram
|
||||
if SGSimpleSettings.shared.translationBackend == SGSimpleSettings.TranslationBackend.gtranslate.rawValue { return gtranslate(text, toLang) |> map { translatedText in return (translatedText, []) } |> mapError { _ in return .generic }
|
||||
}
|
||||
return _internal_translate(network: self.account.network, text: text, toLang: toLang, entities: entities)
|
||||
// MARK: Swiftgram
|
||||
|> `catch` { originalError -> Signal<(String, [MessageTextEntity])?, TranslationError> in
|
||||
return gtranslate(text, toLang) |> map { translatedText in return (translatedText, []) } |> mapError { _ in return originalError }
|
||||
}
|
||||
return sgWrappedTranslateSingle(text: text, toLang: toLang, default: _internal_translate(network: self.account.network, text: text, toLang: toLang, entities: entities))
|
||||
}
|
||||
|
||||
public func translate(texts: [(String, [MessageTextEntity])], toLang: String) -> Signal<[(String, [MessageTextEntity])], TranslationError> {
|
||||
// MARK: Swiftgram
|
||||
if SGSimpleSettings.shared.translationBackend == SGSimpleSettings.TranslationBackend.gtranslate.rawValue {
|
||||
let translatedSignals: [Signal<(String, [MessageTextEntity]), TranslationError>] = texts.map { (text, _) in
|
||||
gtranslate(text, toLang)
|
||||
|> map { translatedText -> (String, [MessageTextEntity]) in
|
||||
return (translatedText, [])
|
||||
}
|
||||
|> mapError { _ -> TranslationError in
|
||||
return .generic
|
||||
}
|
||||
}
|
||||
return combineLatest(translatedSignals)
|
||||
}
|
||||
|
||||
// MARK: Swiftgram
|
||||
return _internal_translate_texts(network: self.account.network, texts: texts, toLang: toLang)
|
||||
|> `catch` { originalError -> Signal<[(String, [MessageTextEntity])], TranslationError> in
|
||||
let translatedSignals: [Signal<(String, [MessageTextEntity]), TranslationError>] = texts.map { (text, _) in
|
||||
gtranslate(text, toLang)
|
||||
|> map { translatedText -> (String, [MessageTextEntity]) in
|
||||
return (translatedText, [])
|
||||
}
|
||||
|> mapError { _ -> TranslationError in
|
||||
return originalError
|
||||
}
|
||||
}
|
||||
return combineLatest(translatedSignals)
|
||||
}
|
||||
return sgWrappedTranslateMultiple(texts: texts,toLang: toLang, default: _internal_translate_texts(network: self.account.network, texts: texts, toLang: toLang))
|
||||
}
|
||||
|
||||
// MARK: Swiftgram
|
||||
@ -1632,3 +1598,66 @@ public extension TelegramEngine {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// MARK: Swiftgram
|
||||
private func sgWrappedTranslateSingle(
|
||||
text: String,
|
||||
toLang: String,
|
||||
`default`: Signal<(String, [MessageTextEntity])?, TranslationError>
|
||||
) -> Signal<(String, [MessageTextEntity])?, TranslationError> {
|
||||
if SGSimpleSettings.shared.translationBackend == SGSimpleSettings.TranslationBackend.gtranslate.rawValue {
|
||||
return gtranslate(text, toLang)
|
||||
|> map { ($0, []) }
|
||||
|> mapError { _ in .generic }
|
||||
}
|
||||
|
||||
return `default`
|
||||
|> `catch` { originalError in
|
||||
gtranslate(text, toLang)
|
||||
|> map { ($0, []) }
|
||||
|> mapError { _ in originalError }
|
||||
}
|
||||
}
|
||||
|
||||
private func sgWrappedTranslateMultiple(
|
||||
texts: [(String, [MessageTextEntity])],
|
||||
toLang: String,
|
||||
`default`: Signal<[(String, [MessageTextEntity])], TranslationError>
|
||||
) -> Signal<[(String, [MessageTextEntity])], TranslationError> {
|
||||
if SGSimpleSettings.shared.translationBackend == SGSimpleSettings.TranslationBackend.gtranslate.rawValue {
|
||||
let translatedSignals: [Signal<(String, [MessageTextEntity]), TranslationError>] = texts.map { (text, _) in
|
||||
gtranslate(text, toLang)
|
||||
|> map { ($0, []) }
|
||||
|> mapError { _ in .generic }
|
||||
}
|
||||
return combineLatest(translatedSignals)
|
||||
}
|
||||
|
||||
return `default`
|
||||
|> `catch` { originalError in
|
||||
let translatedSignals: [Signal<(String, [MessageTextEntity]), TranslationError>] = texts.map { (text, _) in
|
||||
gtranslate(text, toLang)
|
||||
|> map { ($0, []) }
|
||||
|> mapError { _ in originalError }
|
||||
}
|
||||
return combineLatest(translatedSignals)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user