mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-11-07 01:10:09 +00:00
Translation fixes
This commit is contained in:
parent
d3aa8f2dc8
commit
bb11c789e2
@ -465,14 +465,22 @@ final class LocalizationListControllerNode: ViewControllerTracingNode {
|
||||
if let languages = translationSettings.ignoredLanguages {
|
||||
ignoredLanguages = languages
|
||||
} else {
|
||||
if let activeLanguageCode = activeLanguageCode, supportedTranslationLanguages.contains(activeLanguageCode) {
|
||||
ignoredLanguages = [activeLanguageCode]
|
||||
if let activeLanguage = activeLanguageCode, supportedTranslationLanguages.contains(activeLanguage) {
|
||||
ignoredLanguages = [activeLanguage]
|
||||
}
|
||||
let systemLanguage = systemLanguageCode()
|
||||
if !ignoredLanguages.contains(systemLanguage) {
|
||||
ignoredLanguages.append(systemLanguage)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
translateChats = isPremium
|
||||
if let activeLanguageCode = activeLanguageCode, supportedTranslationLanguages.contains(activeLanguageCode) {
|
||||
ignoredLanguages = [activeLanguageCode]
|
||||
if let activeLanguage = activeLanguageCode, supportedTranslationLanguages.contains(activeLanguage) {
|
||||
ignoredLanguages = [activeLanguage]
|
||||
}
|
||||
let systemLanguageCode = systemLanguageCode()
|
||||
if !ignoredLanguages.contains(systemLanguageCode) {
|
||||
ignoredLanguages.append(systemLanguageCode)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -77,7 +77,7 @@ private func translationSettingsControllerEntries(theme: PresentationTheme, stri
|
||||
if let ignoredLanguages = settings.ignoredLanguages {
|
||||
selectedLanguages = Set(ignoredLanguages)
|
||||
} else {
|
||||
selectedLanguages = Set([strings.baseLanguageCode])
|
||||
selectedLanguages = Set([strings.baseLanguageCode, systemLanguageCode()])
|
||||
}
|
||||
for (code, title, subtitle) in languages {
|
||||
entries.append(.language(index, theme, title, subtitle, selectedLanguages.contains(code), code))
|
||||
@ -100,6 +100,7 @@ public func translationSettingsController(context: AccountContext) -> ViewContro
|
||||
if value {
|
||||
if current.ignoredLanguages == nil {
|
||||
updatedIgnoredLanguages.append(interfaceLanguageCode)
|
||||
updatedIgnoredLanguages.append(systemLanguageCode())
|
||||
}
|
||||
if !updatedIgnoredLanguages.contains(code) {
|
||||
updatedIgnoredLanguages.append(code)
|
||||
|
||||
@ -10083,6 +10083,12 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
guard let strongSelf = self, let peerId = strongSelf.chatLocation.peerId else {
|
||||
return
|
||||
}
|
||||
var langCode = langCode
|
||||
if langCode == "nb" {
|
||||
langCode = "nl"
|
||||
} else if langCode == "pt-br" {
|
||||
langCode = "pt"
|
||||
}
|
||||
let _ = updateChatTranslationStateInteractively(engine: strongSelf.context.engine, peerId: peerId, { current in
|
||||
return current?.withToLang(langCode).withIsEnabled(true)
|
||||
}).start()
|
||||
@ -10098,7 +10104,11 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
}
|
||||
updated.ignoredLanguages = ignoredLanguages
|
||||
} else {
|
||||
updated.ignoredLanguages = [strongSelf.presentationData.strings.baseLanguageCode, langCode]
|
||||
var ignoredLanguages = Set<String>()
|
||||
ignoredLanguages.insert(strongSelf.presentationData.strings.baseLanguageCode)
|
||||
ignoredLanguages.insert(systemLanguageCode())
|
||||
ignoredLanguages.insert(langCode)
|
||||
updated.ignoredLanguages = Array(ignoredLanguages)
|
||||
}
|
||||
return updated
|
||||
}).start()
|
||||
|
||||
@ -1096,7 +1096,17 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate {
|
||||
var dismissedTranslationPanelNode: ChatTranslationPanelNode?
|
||||
var immediatelyLayoutTranslationPanelNodeAndAnimateAppearance = false
|
||||
var translationPanelHeight: CGFloat?
|
||||
|
||||
var hasTranslationPanel = false
|
||||
if let _ = self.chatPresentationInterfaceState.translationState {
|
||||
if case .overlay = self.chatPresentationInterfaceState.mode {
|
||||
} else if self.chatPresentationInterfaceState.renderedPeer?.peer?.restrictionText(platform: "ios", contentSettings: self.context.currentContentSettings.with { $0 }) != nil {
|
||||
} else if self.chatPresentationInterfaceState.search != nil {
|
||||
} else {
|
||||
hasTranslationPanel = true
|
||||
}
|
||||
}
|
||||
if hasTranslationPanel {
|
||||
let translationPanelNode: ChatTranslationPanelNode
|
||||
if let current = self.chatTranslationPanel {
|
||||
translationPanelNode = current
|
||||
|
||||
@ -1295,6 +1295,11 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode {
|
||||
var translateToLanguage: String?
|
||||
if let translationState, isPremium && translationState.isEnabled {
|
||||
translateToLanguage = translationState.toLang ?? presentationData.strings.baseLanguageCode
|
||||
if translateToLanguage == "nb" {
|
||||
translateToLanguage = "nl"
|
||||
} else if translateToLanguage == "pt-br" {
|
||||
translateToLanguage = "pt"
|
||||
}
|
||||
}
|
||||
|
||||
let associatedData = extractAssociatedData(chatLocation: chatLocation, view: view, automaticDownloadNetworkType: networkType, animatedEmojiStickers: animatedEmojiStickers, additionalAnimatedEmojiStickers: additionalAnimatedEmojiStickers, subject: subject, currentlyPlayingMessageId: currentlyPlayingMessageId, isCopyProtectionEnabled: isCopyProtectionEnabled, availableReactions: availableReactions, defaultReaction: defaultReaction, isPremium: isPremium, alwaysDisplayTranscribeButton: alwaysDisplayTranscribeButton, accountPeer: accountPeer, topicAuthorId: topicAuthorId, hasBots: chatHasBots, translateToLanguage: translateToLanguage)
|
||||
|
||||
@ -148,6 +148,9 @@ public func translateMessageIds(context: AccountContext, messageIds: [EngineMess
|
||||
}
|
||||
|
||||
public func chatTranslationState(context: AccountContext, peerId: EnginePeer.Id) -> Signal<ChatTranslationState?, NoError> {
|
||||
if peerId.id == PeerId.Id._internalFromInt64Value(777000) {
|
||||
return .single(nil)
|
||||
}
|
||||
if #available(iOS 12.0, *) {
|
||||
let baseLang = context.sharedContext.currentPresentationData.with { $0 }.strings.baseLanguageCode
|
||||
return context.sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.translationSettings])
|
||||
@ -160,8 +163,10 @@ public func chatTranslationState(context: AccountContext, peerId: EnginePeer.Id)
|
||||
var dontTranslateLanguages = Set<String>()
|
||||
if let ignoredLanguages = settings.ignoredLanguages {
|
||||
dontTranslateLanguages = Set(ignoredLanguages)
|
||||
} else {
|
||||
dontTranslateLanguages.insert(baseLang)
|
||||
dontTranslateLanguages.insert(systemLanguageCode())
|
||||
}
|
||||
dontTranslateLanguages.insert(baseLang)
|
||||
|
||||
return cachedChatTranslationState(engine: context.engine, peerId: peerId)
|
||||
|> mapToSignal { cached in
|
||||
|
||||
@ -178,3 +178,11 @@ public func canTranslateText(context: AccountContext, text: String, showTranslat
|
||||
return (false, nil)
|
||||
}
|
||||
}
|
||||
|
||||
public func systemLanguageCode() -> String {
|
||||
if let systemLanguage = Locale.preferredLanguages.first {
|
||||
let language = systemLanguage.components(separatedBy: "-").first ?? systemLanguage
|
||||
return language
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
@ -1001,11 +1001,16 @@ public class TranslateScreen: ViewController {
|
||||
}
|
||||
|
||||
var toLanguage = toLanguage ?? baseLanguageCode
|
||||
|
||||
if toLanguage == fromLanguage {
|
||||
toLanguage = "en"
|
||||
}
|
||||
|
||||
if toLanguage == "nb" {
|
||||
toLanguage = "nl"
|
||||
} else if toLanguage == "pt-br" {
|
||||
toLanguage = "pt"
|
||||
}
|
||||
|
||||
var copyTranslationImpl: ((String) -> Void)?
|
||||
var changeLanguageImpl: ((String, String, @escaping (String, String) -> Void) -> Void)?
|
||||
var expandImpl: (() -> Void)?
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user