Swift 5环境下iOS如何编程调用系统原生翻译功能
核心结论
iOS 15 及以上版本可以直接调用系统内置的原生翻译能力,完全不需要依赖UITextView的文本选择菜单入口,也不需要用户手动选中文本片段,支持直接传入整段文本触发翻译,效果和选择菜单里的Translate功能完全一致。
注意:iOS 15以下系统没有内置全局翻译能力,不存在可调用的系统方法。
具体调用方式
根据你需要支持的最低系统版本,对应实现方案如下:
iOS 18 及以上版本(官方公开API,最稳定)
苹果在iOS 18正式开放了Translation框架的完整能力,不需要做任何特殊处理即可直接调用:
- 如果需要弹出和系统菜单完全一致的翻译面板,代码示例:
import Translation import UIKit import SwiftUI // 取出需要翻译的文本,这里直接取UITextView整段内容 let targetText = yourTextView.text ?? "" // 构造系统翻译面板 let translateVC = UIHostingController(rootView: Text(targetText) .translationPresentation(isPresented: .constant(true), text: targetText) ) // 模态弹出即可 present(translateVC, animated: true)
- 如果不需要弹出面板,想直接获取翻译结果做自定义展示,可以直接用
TranslationSession发起请求:
import Translation // 配置翻译参数,source传nil代表系统自动识别源语言,target默认跟随系统语言 let config = TranslationSession.Configuration(source: nil, target: Locale.current.language) let session = TranslationSession(configuration: config) Task { do { let result = try await session.translate(targetText) // result.targetText就是系统返回的翻译结果 print("翻译结果:\(result.targetText)") } catch { // 处理翻译失败逻辑,比如无网络、语言不支持等 } }
iOS 15 ~ iOS 17 版本
这个版本区间苹果没有开放独立的翻译调用API,但是可以通过UIKit内置的Responder Action实现完全相同的效果,用户感知不到任何菜单操作:
- 临时把
UITextView的选中范围设置为你需要翻译的文本段(可以是全文,也可以是任意指定范围) - 调用系统内置的
translate:action唤起翻译面板 - 触发后立刻恢复
UITextView原本的选中状态即可
核心代码示例:
// 先保存用户当前的选中状态,避免干扰用户操作 let originSelectedRange = yourTextView.selectedRange // 设置选中范围为全文,你也可以自定义NSRange对应需要翻译的片段 let fullTextRange = NSRange(location: 0, length: yourTextView.text.utf16.count) yourTextView.selectedRange = fullTextRange // 调用系统内置翻译action,和用户点击菜单Translate的逻辑完全一致 yourTextView.perform(Selector(("translate:")), with: nil) // 延迟恢复原有选中状态,用户无感知 DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { yourTextView.selectedRange = originSelectedRange }
注意事项
- 上述
translate:是UIKit公开的内置响应方法,和文本菜单的翻译入口走完全相同的逻辑,不会触发App Store审核风险。 - 系统会自动识别待翻译文本的源语言,目标语言默认跟随系统设置,用户也可以在弹出的翻译面板里手动切换源/目标语言、保存翻译等,和原生菜单的功能完全一致。
- iOS 15~17版本没有公开API支持直接获取翻译结果而不弹出面板,如果需要无面板的翻译能力,要么升级到iOS 18用
TranslationSession,要么自行对接第三方翻译服务。
内容的提问来源于stack exchange,提问作者user8460166
相关产品推荐
相关产品推荐

