You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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实现完全相同的效果,用户感知不到任何菜单操作:

  1. 临时把UITextView的选中范围设置为你需要翻译的文本段(可以是全文,也可以是任意指定范围)
  2. 调用系统内置的translate: action唤起翻译面板
  3. 触发后立刻恢复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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 20:18:14