探索如何使用 xcode 将你的 app 本地化为其他语言。我们将逐步介绍创建 string catalog、翻译文本以及与外部翻译器交换文件的流程。你将了解为翻译器提供必要语境信息的最佳实践,以及 xcode 如何帮你自动提供这类信息。对于大型项目,我们将还深入探讨使用类型安全的 swift 代码来管理复杂度并简化字符串管理的实用技巧。
此文章由AI生成,可能存在错误,如有问题,请联系djs66256@163.com
WWDC 课程:使用 Xcode 进行应用程序本地化实践指南
在全球化时代,应用程序的多语言支持已成为开发者必备技能。苹果在 WWDC 上展示了如何利用 Xcode 进行高效本地化的完整流程,从基础设置到复杂项目管理,本文将为您解析这些关键技术与最佳实践。
本地化基础入门
字符串目录(String Catalog) 是 Xcode 本地化的核心工具。开发者只需通过文件菜单添加一个名为 “Localizable” 的字符串目录并将其放置在 Resources 组中,Xcode 就会在每次构建后自动发现并添加可本地化的字符串。这种自动同步机制极大地简化了本地化流程。
在代码层面,大多数 SwiftUI API 如 Text 和 Button 默认支持本地化。对于非 SwiftUI 代码,开发者可以使用 String(localized:)
方法。示例代码展示了典型用法:
1 | Text("Featured Landmark", comment: "英雄图片中特色地标的大标题") |
当涉及复数形式时,Xcode 提供了便捷的处理方式。开发者只需在字符串目录中选择”按复数变化”,即可分别设置单数和复数形式的翻译,系统会根据数量自动选择正确的显示形式。
多语言协作流程
添加新语言只需点击字符串目录底部的加号按钮并选择目标语言(如德语)。开发者可以直接在目录中进行翻译,翻译完成后状态会从 NEW 变为 TRANSLATED。
对于专业翻译工作,Xcode 支持导出标准 XLIFF 格式文件。通过产品菜单的”导出本地化”功能,开发者可以生成包含所有待翻译字符串的文件包。翻译完成后,通过”导入本地化”功能即可将翻译结果导入项目。
测试特定语言版本时,开发者可以在方案编辑器的”运行 > 选项”中将应用程序语言更改为目标语言(如德语)进行调试运行。
翻译上下文优化
高质量的翻译依赖于充分的上下文。Xcode 提供了两种添加注释的方式:
在代码中直接添加:
1
2Text("Delete", comment: "确认删除收藏的警报中显示的删除按钮")
String(localized: "Shared by Friends", comment: "朋友分享的帖子副标题")在字符串目录的注释列中添加
Xcode 26 引入了自动注释生成功能,使用设备端模型分析代码并生成注释。开发者可以:
- 对未注释的字符串使用”生成注释”上下文菜单选项
- 在设置中启用”自动生成字符串目录注释”以实现自动化
注释应包含:
- 界面元素类型(按钮、选项卡等)
- 周边UI环境描述
- 占位符内容解释
生成的注释会被标注为”auto-generated”并包含在导出的XLIFF文件中:1
2
3
4
5<trans-unit id="Grand Canyon" xml:space="preserve">
<source>Grand Canyon</source>
<target state="new">Grand Canyon</target>
<note from="auto-generated">地标搜索建议</note>
</trans-unit>
大规模项目管理策略
当项目涉及多个模块时,bundle参数变得至关重要:
1 | // 主应用 |
#bundle
宏是Xcode的新功能,它能自动识别当前目标的资源包,兼容旧系统且无需开发者手动处理。
字符串分组可以通过tableName参数实现:
1 | Text("My Collections", tableName: "Discover", comment: "用户创建收藏的上方章节标题") |
这会将字符串组织到指定的”Discover.xcstrings”目录中。建议按功能或屏幕分组字符串以提高可维护性。
类型安全字符串管理
Xcode 26 引入了符号生成工作流程,开发者可以:
- 手动添加字符串键值对
- 使用生成的类型安全符号引用字符串:
1
.navigationSubtitle(.subtitle(friendsPosts: 42))
该功能特点包括:
- 自动根据键和值生成Swift符号
- 对含占位符的字符串生成带参数标签的函数
- 生成的符号是LocalizedStringResource类型
- 支持SwiftUI视图、修饰符和Foundation API
开发者可以通过构建设置”Generate String Catalog Symbols”启用此功能。Xcode还提供重构工具,可在提取字符串和符号引用两种工作流间轻松转换。
工作流程选择建议
苹果推荐:
- 初期开发:优先使用字符串提取工作流,便于快速迭代和理解代码
- 项目成熟:考虑转向符号引用,获得更好的组织控制和类型安全
- 大型项目:结合使用分组(tableName)、模块化(#bundle)和符号生成
两种工作流各有优势,开发者应根据项目需求灵活选择。Xcode的重构功能使两者间的转换变得简单可靠。
扩展学习资源
想深入了解字符串目录的更多细节,可以参考WWDC视频:
探索字符串目录
通过掌握这些本地化技术和工具,开发者可以构建真正全球化的应用程序,为世界各地的用户提供优质的本地体验。Xcode不断进化的本地化功能,正使这一过程变得更加高效和可靠。