Translate your app using agents in Xcode
SwiftUI & UI Frameworks 进阶 14m

使用 Xcode 中的智能体翻译你的 App

Translate your app using agents in Xcode

2026年6月10日

在 Apple 官方观看视频

一句话判断

Xcode 终于把 AI 翻译做成了原生工作流,靠 String Catalogs(字符串目录)攒了三年的工程上下文,这次大模型翻译不再是“人工智障”了。

这场 Session 讲了什么

这场 Session 最值得关注的一件事是:Apple 把过去三年在 String Catalogs 上积累的元数据,全部喂给了 Xcode 27 的 Coding Agent(编码智能体)。以前用机翻做 App 本地化,最头疼的就是没上下文。英语里的 “book” 到底是“书”还是“预订”?机器根本不知道。现在你直接在 Xcode 里唤起 Agent,它会自动 Build 所有 Targets 抓取字符串,然后把代码位置、UI 上下文、甚至其他语言的参考翻译打包给大模型。

这对独立开发者和小团队绝对是福音。以前找外包翻译又贵又慢,自己用机翻又得花大量时间校对。现在 Agent 直接给你生成高质量的初稿,你只需要在 Xcode 里微调一下 UI 截断和专有名词,本地化成本直接砍掉 80%。Agent 还会把任务拆分给多个子 Agent 并发处理,大型项目的翻译速度也有了保障。

值得深挖的点

String Catalogs 攒了三年的“上下文”红利

Apple 这次能把 Agent 翻译做好,全靠 String Catalogs 积累的工程上下文。大模型翻译软件字符串最大的痛点是“脱离语境”。Xcode 的解法不是单纯改 Prompt,而是从编译器层面收集元数据。当 Agent 把 %lld items 扔给子 Agent 翻译时,它不仅知道这是个复数形式,还知道它在代码里的具体位置,甚至能参考这个字符串在西班牙语里是怎么翻译的。

这种设计的 Trade-off 在于强依赖 Xcode 的构建系统。Agent 必须完整 Build 一遍 Targets 才能发现所有字符串,这意味着如果你的项目编译很慢,翻译前的准备时间也会很长。但相比于以前用脚本正则提取字符串导致的漏翻和错翻,这种“编译时抓取”的准确率是降维打击。对于混编项目,只要老老实实把硬编码改成标准 API,Agent 就能一视同仁地处理。

从“一键生成”到“审查迭代”的闭环

很多 AI 工具只管生成不管售后,Xcode 这次把审查工作流也做进了 IDE。翻译完后,Agent 会帮你跑一遍 UI 预览,重点抓 Text Truncation(文本截断)问题。德语或俄语翻译后字符串长度翻倍是常态,以前只能靠 QA 盯着看,现在 Xcode 能直接定位截断的 UI 节点让你改 Layout。

更实用的是 Glossary(词汇表)和自定义术语规则的引入。你可以告诉 Agent 特定词汇的强制翻译。这些规则会作为 System Prompt 的一部分注入给子 Agent。这解决了大模型“每次翻译都不一样”的幻觉问题,让机翻结果具备了商业可用的一致性。

代码片段

1. 给 SwiftUI 文本加上灵魂注释

场景:让 Agent 准确理解 UI 文本的用途,避免歧义翻译。

// 使用 comment 提供上下文,tableName 进行物理隔离
Text("Hello, world!", 
     tableName: "Greetings", 
     comment: "主页顶部欢迎新用户的标准问候语,语气要热情")

坑:如果不写 comment,Agent 只能靠猜;如果字符串复用率极高,建议用 tableName 拆分 String Catalog,避免单个文件过大导致 Agent 处理超时。

2. 非 SwiftUI 环境的标准本地化

场景:在 ViewModel 或底层网络请求错误提示中处理本地化。

// 在普通 Swift 代码中获取本地化字符串
let welcomeMsg = String(localized: "Hello, world!", 
                        comment: "非 UI 层的通用问候")

// 需要传递本地化资源给底层 API 时使用
let resource = LocalizedStringResource("Hello World!", 
                                       bundle: #bundle, 
                                       comment: "传递给底层模块的本地化资源")

坑:在 ViewModel 里千万别直接写死中文字符串,必须用 String(localized:) 包装,否则 Xcode Build 时 Agent 根本抓取不到这些字符串。

最佳实践

已有项目迁移时,先别急着让 Agent 翻译全量。先在一个小模块里跑通 String Catalogs 的提取流程,检查自动生成的 comment 是否准确。把历史遗留的 .strings 文件全部转换为 .xcstrings 格式,这是 Agent 工作的前提。

新项目强烈建议默认开启 String Catalogs,并在写代码时养成顺手写 comment 的习惯。把 AI 当成你的结对编程同事,你给的上下文越具体,它翻译得越准。

实战中最容易踩的坑是忽略动态拼接字符串。比如 "Score: " + String(score),这种写法 Agent 无法处理复数和语序问题。必须改成 "Score: %lld" 的格式化字符串,让 Agent 去处理不同语言的语序差异。

还有什么值得关注

  • XLIFF 标记支持:导出的 XLIFF 文件里,机翻内容会带上 state-qualifier="leveraged-mt" 标记,方便专业翻译人员快速过滤和复核。
  • 复数变体自动补全:Agent 会根据目标语言的语法规则(如阿拉伯语的 6 种复数形式),自动在 String Catalog 里生成对应的 Plural Variations(复数变体)占位符。
  • 子 Agent 并发架构:Xcode 在后台把字符串分批次扔给多个子 Agent 并发翻译,大幅缩短了大型项目的本地化等待时间。
String Catalogs Localization AI Agents SwiftUI Xcode