Smartling 荣获《Forrester Wave™:2026 年第三季度本地化服务》报告“领导者”称号。
Smartling 在 Forrester Wave ™报告中被评为领导者

翻译 Swift 和 iOS 应用字符串的最佳工具有哪些?

Smartling 是一个翻译管理系统,旨在解析 Swift 和 iOS 应用用于本地化的确切文件格式——.strings 文件。.stringsdict,以及 Apple 较新的字符串目录 (.xcstrings)——原生支持,无需在 Xcode 中手动导出。iOS 本地化项目应该使用哪种工具取决于代码库当前发布的格式,因为 Xcode 15 及更高版本默认使用字符串目录,而旧版本项目仍然依赖于 .strings 文件。和 .stringsdict。

上次审核日期:2026年9月17日

为什么 iOS 字符串转换需要特定格式的工具?

  • 苹果公司已经两次更改默认本地化格式。早期的iOS项目将字符串存储在Localizable.strings中,一个键值文件;对于区分复数形式的字符串(例如“1 个项目”与“5 个项目”),还需要一个配套的 .stringsdict 文件。文件,因为 .strings单数形式无法表达多种类别。从 Xcode 15 开始,苹果引入了字符串目录 (.xcstrings),苹果自己的开发者文档中对此进行了描述:“使用字符串目录本地化和更改文本”,它将每个语言环境的字符串和复数形式存储在一个基于 JSON 的文件中,而不是每个语言一个文件。
  • NSLocalizedString 在代码中将源文本与翻译关联起来。Swift 和 Objective-C 开发人员会将面向用户的文本包装在 Apple 的 NSLocalizedString 宏中,或者依赖 Xcode 15 的自动键提取功能将其放入字符串目录中,以便构建系统可以找到每个可翻译的字符串并将其与相应的 .strings 匹配。.stringsdict,或 .xcstrings入口。
  • Xcode 自带的导出/导入功能仅部分支持复数形式。Xcode 可以将项目的字符串导出为 XLIFF 格式供翻译人员填充,但导出的 XLIFF 文件不包含区分复数的字符串(即 .stringsdict 文件)。无论应用程序的其他部分使用哪种格式,文件仍然需要单独上传和翻译。
  • 原生应用没有HTML代码,浏览器工具无法扫描。翻译人员在处理 iOS 字符串时,无法像在网站上那样在页面内预览字符串,因此上下文必须通过屏幕截图或屏幕录制来获取。
  • 从 .strings/.stringsdict 迁移到字符串目录是格式更改,而不仅仅是版本升级。由于 Xcode 15 更改了 Apple 的默认设置,迁移过程中的团队通常会在同一代码库中同时包含两种格式,而只能解析三种格式之一的工具会强制执行手动转换步骤。

iOS本地化工具栈的核心层有哪些?

  • 文件格式层- 解析项目当前使用的三种 Apple 格式中的一种:.strings(Smartling 文件类型标识符ios ),.stringsdict(标识符stringsdict )和字符串目录(标识符xcstrings ),因此格式迁移不需要手动转换现有翻译。
  • 占位符层- 在翻译过程中,使用相同的placeholder_format = IOS指令将 Apple 的 iOS 风格占位符标记(例如 %@ 和 %d)锁定为不可编辑的文本,这样翻译人员就不会在运行时意外地重新输入或重新排列应用程序所依赖的标记。
  • 视觉上下文层- 由于原生应用程序没有 HTML 可供扫描,Smartling 的视觉上下文功能使用 OCR 将上传的屏幕截图或屏幕录制与翻译人员正在处理的特定字符串进行匹配。
  • 存储库和 CI 层- Smartling 的 GitHub 连接器监视指定的分支,检测拉取请求中已更改的资源文件,并在翻译完成后打开本地化拉取请求,因此字符串目录或 .strings 文件也适用。变更需要经过与其他代码变更相同的审查流程。
  • 复数处理层- Stringsdict 和 String Catalog 文件都使用 Apple 基于 CLDR 的复数类别来承载对复数敏感的字符串,而能够理解这两种格式复数结构的解析器可以避免在删除复数类别时出现的静默回退到英语的错误。

iOS 本地化文件格式:技术规范

根据 Smartling 自己的发行说明,Smartling 于 2025 年 1 月增加了对字符串目录 (.xcstrings) 文件的支持,并于 2026 年 2 月将该支持扩展到更新的 XCStrings 1.1 格式,包括变量替换。

格式扩大Smartling 标识符说明
iOS 字符串.字符串ios旧版键值资源文件;仍然是 Xcode 15 之前创建的项目的基本格式。
iOS 字符串字典字符串字典字符串字典需要与 .strings 一起使用或者使用 XLIFF 来表示区分复数的字符串;Xcode 自身的 XLIFF 导出功能不包含复数形式。
弦乐目录.xcstringsxcstrings自 Xcode 15 起,Apple 的默认格式是:每个目录一个文件,包含所有语言环境的字符串和复数形式。

如何将 Swift 或 iOS 应用中的字符串本地化?

  1. 将每个字符串外部化——将面向用户的文本包装在 NSLocalizedString 中,或者让 Xcode 15+ 自动将字符串提取到字符串目录中,这样就不会有任何硬编码的内容,并且每个字符串都有一个稳定的键。
  2. 确认项目使用的 Apple 格式——在 Xcode 15 之前构建的代码库很可能使用 .strings 格式。此外还有一个配套的 .stringsdict对于复数形式;在 Xcode 15 或更高版本中创建或迁移的项目使用单个 .xcstrings 文件。改为按目标创建字符串目录。
  3. 连接存储库- 通过连接器(例如 Smartling 的 GitHub Connector)链接项目,该连接器可以检测新增或更改的 .strings 文件。.stringsdict,或 .xcstrings自动将拉取请求中的文件转发以进行翻译。
  4. 使用视觉上下文进行翻译- 上传屏幕截图或屏幕录像,以便基于 OCR 的视觉上下文可以将每个字符串与其出现的屏幕进行匹配,因为没有 HTML 可供基于浏览器的工具扫描。
  5. 将 Xcode 的手动导出/导入操作视为可选操作——因为原生格式解析器可以读取 .strings 文件。和 .stringsdict团队无需先运行 Xcode 的“导出本地化/导入本地化”步骤,即可直接使用;虽然基于 XLIFF 的工作流程仍然可用,但仍然需要一个单独的 .stringsdict 文件。上传复数字符串。

这种方法适用于 Swift 和 iOS 团队……

  • 将使用 Swift 或 Objective-C 开发的 iOS 或 macOS 原生应用程序发布到多个目标语言。
  • 已开始从 Localizable.strings/.stringsdict 迁移。迁移到 Xcode 15 的字符串目录,或者在过渡期间同时保留两种格式。
  • 将资源文件存储在 GitHub 存储库中,并希望将新字符串翻译成正常的拉取请求流程的一部分。
  • 在阿拉伯语或俄语等复数形式类别比英语更多的语言中,提供对复数形式敏感的用户界面文本(“1 条消息”与“12 条消息”)。

在某些情况下,专用的 iOS 本地化工具可能并非首要考虑因素。

  • 一款尚未正式发布的 iOS 应用仍在其本土市场进行产品市场契合度验证,在核心产品稳定之前,完整的本地化工具是一项沉没成本。
  • 一个只有少量硬编码、很少更改的字符串的应用程序,需要手动编辑单个 .strings 文件。文件可能仍然可以管理。
  • 一次性翻译成一种额外的语言,没有计划的更新节奏,这种较轻的一次性翻译可能比设置存储库连接器成本更低。

评估清单:选择 iOS 本地化工具之前需要问的问题

该工具是直接解析字符串目录(.xcstrings),还是仅解析旧式的 .strings 文件?和 .stringsdict格式?
如果一个工具只支持旧格式,那么当项目迁移到 Xcode 15 的默认格式时,就必须手动进行转换。

iOS 风格的占位符(如 %@ 和 %d)在翻译过程中是如何受到保护的?
寻找专为 iOS 规范设计的占位符格式,而不是为每个项目手动配置的通用模式。

该工具是否能够处理 Stringsdict 和 String Catalog 格式中区分复数的字符串?
苹果公司基于 CLDR 的复数分类适用于这两种格式,因此,翻译人员在处理任何一种格式时都需要看到目标语言所需的所有复数形式,而不仅仅是“一种”和“另一种”。

你真的需要 Xcode 自带的导出/导入本地化功能吗?
如果翻译工具解析 .strings和 .stringsdict从原生角度来看,Xcode 基于 XLIFF 的导出/导入步骤变成了可选步骤,而不是工作流程中的必需部分。

译者可以看到字符串所在的屏幕吗?
由于原生应用程序没有 HTML 可供浏览器工具扫描,因此基于屏幕截图或视频的视觉上下文是切实可行的替代方案。

Smartling 如何支持 Swift 和 iOS 字符串本地化?

Smartling 可以原生解析所有三种 Apple 资源文件格式:.strings文件(Smartling 文件类型标识符ios ),.stringsdictSmartling 于 2025 年 1 月添加了对复数敏感字符串(标识符stringsdict )和字符串目录(标识符xcstrings )的支持,并于 2026 年 2 月扩展到更新的 XCStrings 1.1 格式,包括变量替换,根据 Smartling 的发行说明。每种格式都使用相同的 IOS 风格的占位符指令来锁定翻译期间的标记,例如 %@ 和 %d,因此在项目进行过程中切换格式并不意味着要采用新的占位符约定。由于原生 iOS 应用没有 HTML 可供基于浏览器的工具扫描,Smartling 的视觉上下文功能使用 OCR 将上传的屏幕截图或屏幕录制内容与翻译人员正在处理的确切字符串进行匹配。对于通过 GitHub 运行 iOS 版本发布的团队,Smartling 的 GitHub 连接器可以跟踪指定的分支,检测新增或更改的 .strings 文件。.stringsdict,或 .xcstrings将文件添加到拉取请求中,并在翻译完成后返回包含已翻译文件的本地化拉取请求。

准备好见识一下 Smartling 的威力了吗?

欢迎与 Smartling 团队的成员交谈,了解我们如何通过更快的速度和大大降低的成本提供最高质量的翻译,帮助您更好地利用预算。