mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-11-07 09:20:08 +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 {
|
if let languages = translationSettings.ignoredLanguages {
|
||||||
ignoredLanguages = languages
|
ignoredLanguages = languages
|
||||||
} else {
|
} else {
|
||||||
if let activeLanguageCode = activeLanguageCode, supportedTranslationLanguages.contains(activeLanguageCode) {
|
if let activeLanguage = activeLanguageCode, supportedTranslationLanguages.contains(activeLanguage) {
|
||||||
ignoredLanguages = [activeLanguageCode]
|
ignoredLanguages = [activeLanguage]
|
||||||
|
}
|
||||||
|
let systemLanguage = systemLanguageCode()
|
||||||
|
if !ignoredLanguages.contains(systemLanguage) {
|
||||||
|
ignoredLanguages.append(systemLanguage)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
translateChats = isPremium
|
translateChats = isPremium
|
||||||
if let activeLanguageCode = activeLanguageCode, supportedTranslationLanguages.contains(activeLanguageCode) {
|
if let activeLanguage = activeLanguageCode, supportedTranslationLanguages.contains(activeLanguage) {
|
||||||
ignoredLanguages = [activeLanguageCode]
|
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 {
|
if let ignoredLanguages = settings.ignoredLanguages {
|
||||||
selectedLanguages = Set(ignoredLanguages)
|
selectedLanguages = Set(ignoredLanguages)
|
||||||
} else {
|
} else {
|
||||||
selectedLanguages = Set([strings.baseLanguageCode])
|
selectedLanguages = Set([strings.baseLanguageCode, systemLanguageCode()])
|
||||||
}
|
}
|
||||||
for (code, title, subtitle) in languages {
|
for (code, title, subtitle) in languages {
|
||||||
entries.append(.language(index, theme, title, subtitle, selectedLanguages.contains(code), code))
|
entries.append(.language(index, theme, title, subtitle, selectedLanguages.contains(code), code))
|
||||||
@ -100,6 +100,7 @@ public func translationSettingsController(context: AccountContext) -> ViewContro
|
|||||||
if value {
|
if value {
|
||||||
if current.ignoredLanguages == nil {
|
if current.ignoredLanguages == nil {
|
||||||
updatedIgnoredLanguages.append(interfaceLanguageCode)
|
updatedIgnoredLanguages.append(interfaceLanguageCode)
|
||||||
|
updatedIgnoredLanguages.append(systemLanguageCode())
|
||||||
}
|
}
|
||||||
if !updatedIgnoredLanguages.contains(code) {
|
if !updatedIgnoredLanguages.contains(code) {
|
||||||
updatedIgnoredLanguages.append(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 {
|
guard let strongSelf = self, let peerId = strongSelf.chatLocation.peerId else {
|
||||||
return
|
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
|
let _ = updateChatTranslationStateInteractively(engine: strongSelf.context.engine, peerId: peerId, { current in
|
||||||
return current?.withToLang(langCode).withIsEnabled(true)
|
return current?.withToLang(langCode).withIsEnabled(true)
|
||||||
}).start()
|
}).start()
|
||||||
@ -10098,7 +10104,11 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
}
|
}
|
||||||
updated.ignoredLanguages = ignoredLanguages
|
updated.ignoredLanguages = ignoredLanguages
|
||||||
} else {
|
} 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
|
return updated
|
||||||
}).start()
|
}).start()
|
||||||
|
|||||||
@ -1096,7 +1096,17 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate {
|
|||||||
var dismissedTranslationPanelNode: ChatTranslationPanelNode?
|
var dismissedTranslationPanelNode: ChatTranslationPanelNode?
|
||||||
var immediatelyLayoutTranslationPanelNodeAndAnimateAppearance = false
|
var immediatelyLayoutTranslationPanelNodeAndAnimateAppearance = false
|
||||||
var translationPanelHeight: CGFloat?
|
var translationPanelHeight: CGFloat?
|
||||||
|
|
||||||
|
var hasTranslationPanel = false
|
||||||
if let _ = self.chatPresentationInterfaceState.translationState {
|
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
|
let translationPanelNode: ChatTranslationPanelNode
|
||||||
if let current = self.chatTranslationPanel {
|
if let current = self.chatTranslationPanel {
|
||||||
translationPanelNode = current
|
translationPanelNode = current
|
||||||
|
|||||||
@ -1295,6 +1295,11 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode {
|
|||||||
var translateToLanguage: String?
|
var translateToLanguage: String?
|
||||||
if let translationState, isPremium && translationState.isEnabled {
|
if let translationState, isPremium && translationState.isEnabled {
|
||||||
translateToLanguage = translationState.toLang ?? presentationData.strings.baseLanguageCode
|
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)
|
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> {
|
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, *) {
|
if #available(iOS 12.0, *) {
|
||||||
let baseLang = context.sharedContext.currentPresentationData.with { $0 }.strings.baseLanguageCode
|
let baseLang = context.sharedContext.currentPresentationData.with { $0 }.strings.baseLanguageCode
|
||||||
return context.sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.translationSettings])
|
return context.sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.translationSettings])
|
||||||
@ -160,8 +163,10 @@ public func chatTranslationState(context: AccountContext, peerId: EnginePeer.Id)
|
|||||||
var dontTranslateLanguages = Set<String>()
|
var dontTranslateLanguages = Set<String>()
|
||||||
if let ignoredLanguages = settings.ignoredLanguages {
|
if let ignoredLanguages = settings.ignoredLanguages {
|
||||||
dontTranslateLanguages = Set(ignoredLanguages)
|
dontTranslateLanguages = Set(ignoredLanguages)
|
||||||
|
} else {
|
||||||
|
dontTranslateLanguages.insert(baseLang)
|
||||||
|
dontTranslateLanguages.insert(systemLanguageCode())
|
||||||
}
|
}
|
||||||
dontTranslateLanguages.insert(baseLang)
|
|
||||||
|
|
||||||
return cachedChatTranslationState(engine: context.engine, peerId: peerId)
|
return cachedChatTranslationState(engine: context.engine, peerId: peerId)
|
||||||
|> mapToSignal { cached in
|
|> mapToSignal { cached in
|
||||||
|
|||||||
@ -178,3 +178,11 @@ public func canTranslateText(context: AccountContext, text: String, showTranslat
|
|||||||
return (false, nil)
|
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
|
var toLanguage = toLanguage ?? baseLanguageCode
|
||||||
|
|
||||||
if toLanguage == fromLanguage {
|
if toLanguage == fromLanguage {
|
||||||
toLanguage = "en"
|
toLanguage = "en"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if toLanguage == "nb" {
|
||||||
|
toLanguage = "nl"
|
||||||
|
} else if toLanguage == "pt-br" {
|
||||||
|
toLanguage = "pt"
|
||||||
|
}
|
||||||
|
|
||||||
var copyTranslationImpl: ((String) -> Void)?
|
var copyTranslationImpl: ((String) -> Void)?
|
||||||
var changeLanguageImpl: ((String, String, @escaping (String, String) -> Void) -> Void)?
|
var changeLanguageImpl: ((String, String, @escaping (String, String) -> Void) -> Void)?
|
||||||
var expandImpl: (() -> Void)?
|
var expandImpl: (() -> Void)?
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user