Localizable.strings 转 .xcstrings 转换器

拖入你的 Localizable.strings 文件(每种语言一个):工具会把它们合并为一个可下载的 .xcstrings String Catalog。免费,无需注册,文件始终不会离开你的浏览器。

转换你的 .strings 文件

或粘贴一个文件的内容

在你的浏览器中转换:不会上传任何文件。

无需回到 Xcode 即可编辑目录

LocalePilot 是一款桌面应用,可打开 .xcstrings 文件,检查占位符(%@、%1$@、%d),可选用本地 AI 翻译,然后按 Xcode 的风格写回文件:未修改的目录逐字节相同。macOS 版即将完成:留下邮箱,即可收到上线通知。

转换器做什么

  • 读取你的 .strings 文件(UTF-8 或 UTF-16,/* … */ 和 // 注释,\n、\" 和 \U00e9 转义)。
  • 把一个表的所有语言合并到一个目录中(Localizable.xcstrings、InfoPlist.xcstrings 等):每个键一个条目,每种语言的译文状态为 translated。不同的表不会混在一起。
  • 把键上方的注释用作条目的注释。
  • 标记某种语言缺失的键、被定义两次的键和无法读取的行。

文件按 Xcode 的风格写入(2 个空格缩进,每个冒号前有一个空格),Git 差异因此保持清晰。

如何将 Localizable.strings 转换为 xcstrings

  1. 从每个 xx.lproj 文件夹中收集 Localizable.strings 文件。
  2. 拖入项目文件夹,或逐个拖入文件,然后检查每个文件的语言。
  3. 选择源语言,下载 Localizable.xcstrings,并将其添加到你的 Xcode 项目中。
  4. 构建,然后审阅差异:标记为 Stale 的键、从代码中提取的新键以及格式说明符,都在迁移到 String Catalog 的指南中有说明。

转换器不做什么

它不读取 .stringsdict 文件:复数和设备变体留给 Xcode 或目录编辑器处理。它不扫描你的代码,因此不会添加 Xcode 会从 SwiftUI 字面量中提取的字符串。对于整个项目,Xcode 的 Migrate to String Catalog 命令仍是首选;本工具适用于独立的文件、译者导出的文件或快速测试。

常见问题

我的 .strings 文件会被上传到服务器吗?

不会。文件在本地读取,目录在页面中生成:下载直接来自你的浏览器,不经过任何服务器。

工具如何知道每个文件的语言?

拖入文件夹时,从 xx.lproj 文件夹名读取;否则从文件名(Localizable_fr.strings)读取。如果都没有,你可以在生成目录前自行填写。

为什么不用 Xcode 自带的迁移功能?

如果是整个项目,就用它:它还能处理 .stringsdict,也了解你的代码。本转换器适用于独立的文件,无需打开项目,例如译者导出的文件或测试用途。

会转换 .stringsdict 中的复数吗?

不会,只读取 .strings 文件。复数需要在 Xcode 中重新做成目录里的复数变体。

我的 .strings 文件是 UTF-16 编码,有问题吗?

没有问题,Xcode 生成的 UTF-16 编码文件会像 UTF-8 一样被自动识别。

生成的目录有效吗?

它是 String Catalog 格式(版本 1.0)的 JSON,可以通过 Xcode 的 xcstringstool 编译。不过请在 Xcode 中打开它,并在提交前审阅差异。

它和 LocalePilot 有什么区别?

本工具只做一次性转换。LocalePilot 是一款即将推出的 macOS 桌面应用,可编辑 .xcstrings、检查占位符、用 AI 翻译,并在导出时自动备份。

上线时通知我

LocalePilot 正在做最后的完善。留下你的邮箱,上线时我们会通知你。

  • macOS 12 或更高版本 · Ollama 或 LM Studio 可选
  • 应用界面语言:英语、法语、西班牙语、意大利语和葡萄牙语。