mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 14:45:21 +00:00
Always show Translate in public channels for some languages
This commit is contained in:
@@ -2940,7 +2940,12 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
translationSettings = TranslationSettings.defaultSettings
|
translationSettings = TranslationSettings.defaultSettings
|
||||||
}
|
}
|
||||||
|
|
||||||
let (_, language) = canTranslateText(context: context, text: text.string, showTranslate: translationSettings.showTranslate, ignoredLanguages: translationSettings.ignoredLanguages)
|
var showTranslateIfTopical = false
|
||||||
|
if let peer = strongSelf.presentationInterfaceState.renderedPeer?.chatMainPeer as? TelegramChannel, case .broadcast = peer.info, !(peer.addressName ?? "").isEmpty {
|
||||||
|
showTranslateIfTopical = true
|
||||||
|
}
|
||||||
|
|
||||||
|
let (_, language) = canTranslateText(context: context, text: text.string, showTranslate: translationSettings.showTranslate, showTranslateIfTopical: showTranslateIfTopical, ignoredLanguages: translationSettings.ignoredLanguages)
|
||||||
|
|
||||||
let controller = TranslateScreen(context: context, text: text.string, fromLanguage: language)
|
let controller = TranslateScreen(context: context, text: text.string, fromLanguage: language)
|
||||||
controller.pushController = { [weak self] c in
|
controller.pushController = { [weak self] c in
|
||||||
|
|||||||
@@ -883,7 +883,12 @@ func contextMenuForChatPresentationInterfaceState(chatPresentationInterfaceState
|
|||||||
})))
|
})))
|
||||||
}
|
}
|
||||||
|
|
||||||
let (canTranslate, _) = canTranslateText(context: context, text: messageText, showTranslate: translationSettings.showTranslate, ignoredLanguages: translationSettings.ignoredLanguages)
|
var showTranslateIfTopical = false
|
||||||
|
if let peer = chatPresentationInterfaceState.renderedPeer?.chatMainPeer as? TelegramChannel, case .broadcast = peer.info, !(peer.addressName ?? "").isEmpty {
|
||||||
|
showTranslateIfTopical = true
|
||||||
|
}
|
||||||
|
|
||||||
|
let (canTranslate, _) = canTranslateText(context: context, text: messageText, showTranslate: translationSettings.showTranslate, showTranslateIfTopical: showTranslateIfTopical, ignoredLanguages: translationSettings.ignoredLanguages)
|
||||||
if canTranslate {
|
if canTranslate {
|
||||||
actions.append(.action(ContextMenuActionItem(text: chatPresentationInterfaceState.strings.Conversation_ContextMenuTranslate, icon: { theme in
|
actions.append(.action(ContextMenuActionItem(text: chatPresentationInterfaceState.strings.Conversation_ContextMenuTranslate, icon: { theme in
|
||||||
return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Translate"), color: theme.actionSheet.primaryTextColor)
|
return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Translate"), color: theme.actionSheet.primaryTextColor)
|
||||||
|
|||||||
@@ -141,8 +141,8 @@ public var popularTranslationLanguages = [
|
|||||||
@available(iOS 12.0, *)
|
@available(iOS 12.0, *)
|
||||||
private let languageRecognizer = NLLanguageRecognizer()
|
private let languageRecognizer = NLLanguageRecognizer()
|
||||||
|
|
||||||
public func canTranslateText(context: AccountContext, text: String, showTranslate: Bool, ignoredLanguages: [String]?) -> (canTranslate: Bool, language: String?) {
|
public func canTranslateText(context: AccountContext, text: String, showTranslate: Bool, showTranslateIfTopical: Bool = false, ignoredLanguages: [String]?) -> (canTranslate: Bool, language: String?) {
|
||||||
guard showTranslate, text.count > 0 else {
|
guard showTranslate || showTranslateIfTopical, text.count > 0 else {
|
||||||
return (false, nil)
|
return (false, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,6 +159,11 @@ public func canTranslateText(context: AccountContext, text: String, showTranslat
|
|||||||
let hypotheses = languageRecognizer.languageHypotheses(withMaximum: 3)
|
let hypotheses = languageRecognizer.languageHypotheses(withMaximum: 3)
|
||||||
languageRecognizer.reset()
|
languageRecognizer.reset()
|
||||||
|
|
||||||
|
var supportedTranslationLanguages = supportedTranslationLanguages
|
||||||
|
if !showTranslate && showTranslateIfTopical {
|
||||||
|
supportedTranslationLanguages = ["uk", "ru"]
|
||||||
|
}
|
||||||
|
|
||||||
let filteredLanguages = hypotheses.filter { supportedTranslationLanguages.contains($0.key.rawValue) }.sorted(by: { $0.value > $1.value })
|
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) }) {
|
if let language = filteredLanguages.first(where: { supportedTranslationLanguages.contains($0.key.rawValue) }) {
|
||||||
return (!dontTranslateLanguages.contains(language.key.rawValue), language.key.rawValue)
|
return (!dontTranslateLanguages.contains(language.key.rawValue), language.key.rawValue)
|
||||||
|
|||||||
@@ -502,6 +502,7 @@ public final class WebAppController: ViewController, AttachmentContainable {
|
|||||||
})
|
})
|
||||||
|
|
||||||
self.navigationBar?.updateBackgroundAlpha(0.0, transition: .immediate)
|
self.navigationBar?.updateBackgroundAlpha(0.0, transition: .immediate)
|
||||||
|
self.updateTabBarAlpha(1.0, .immediate)
|
||||||
}
|
}
|
||||||
|
|
||||||
override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
|
override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
|
||||||
@@ -520,6 +521,10 @@ public final class WebAppController: ViewController, AttachmentContainable {
|
|||||||
public var mediaPickerContext: AttachmentMediaPickerContext? {
|
public var mediaPickerContext: AttachmentMediaPickerContext? {
|
||||||
return WebAppPickerContext(controller: self)
|
return WebAppPickerContext(controller: self)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func prepareForReuse() {
|
||||||
|
self.updateTabBarAlpha(1.0, .immediate)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final class WebAppPickerContext: AttachmentMediaPickerContext {
|
final class WebAppPickerContext: AttachmentMediaPickerContext {
|
||||||
|
|||||||
Reference in New Issue
Block a user