Lingo.dev 的 CLI 可通过已配置的 本地化引擎 翻译原生移动端资源文件——Xcode .strings、Android XML、Flutter ARB 以及 React Native JSON。每个平台都有对应的 bucket 类型,能够识别文件格式、保留原有结构,并原生处理复数形式。
平台概览#
| 平台 | 原生格式 | CLI bucket | 常见文件路径 |
|---|---|---|---|
| iOS (Xcode) | .strings | xcode-strings | [locale].lproj/Localizable.strings |
| iOS (Xcode) | .stringsdict | xcode-stringsdict | [locale].lproj/Localizable.stringsdict |
| iOS (Xcode) | .xcstrings | xcode-xcstrings | Localizable.xcstrings |
| Android | strings.xml | android | app/src/main/res/values-[locale]/strings.xml |
| Flutter | .arb | flutter | lib/l10n/app_[locale].arb |
| React Native | .json | json | src/locales/[locale].json |
准备工作#
每次运行 CLI,内容都会经过一个 本地化引擎——也就是决定使用哪种 LLM 模型、术语表、品牌语气和指令的配置。你可以在 Lingo.dev 控制台中创建一个,并生成 API key。
配置你的平台#
Xcode 支持三种本地化格式。请选择与你的项目配置相匹配的那一种。
String Catalogs(.xcstrings)——这是 Xcode 15 引入的现代格式。一个 JSON 文件即可包含所有语言区域,新增字符串时 Xcode 也会自动更新。CLI 会直接原位修改这个文件——无需 [locale] 占位符。
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.15",
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja"]
},
"buckets": {
"xcode-xcstrings": {
"include": ["MyApp/Localizable.xcstrings"]
}
}
}传统 .strings 文件——每个语言区域对应 [locale].lproj/ 目录下的一个文件。如果你的项目也使用 .stringsdict 处理复数形式,请将两个 bucket 一并添加。
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.15",
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja"]
},
"buckets": {
"xcode-strings": {
"include": ["MyApp/[locale].lproj/Localizable.strings"]
},
"xcode-stringsdict": {
"include": ["MyApp/[locale].lproj/Localizable.stringsdict"]
}
}
}如需搭建 Xcode 的国际化基础设施,请参阅 Apple 的 本地化文档。
运行翻译#
只需一条命令,即可翻译所有资源文件:
npx lingo.dev@latest runCLI 会读取源语言区域文件,借助 lockfile 计算自上次运行以来的变更,只翻译增量内容,并将结果写入目标语言区域文件。
如果项目中包含多种资源类型,也可以只针对特定平台执行:
npx lingo.dev@latest run --bucket android
npx lingo.dev@latest run --bucket xcode-xcstrings复数形式与平台约定#
不同移动平台处理复数形式的方式各不相同——iOS 使用 .stringsdict 或 String Catalog 规则,Android 使用 <plurals> XML 元素,而 Flutter 则在 ARB 文件中使用 ICU MessageFormat。CLI 会在翻译过程中保留各平台原生的复数结构,并为每个目标语言区域生成正确的复数类别。
译者注释
移动端字符串通常较短,且高度依赖上下文。你可以在 Xcode 的 .xcstrings 文件中使用 译者注释,为本地化引擎补充字符串出现位置的上下文——例如“结账流程中的按钮标签”和“导航菜单项”,翻译方式就会不同。
