Lingo.dev + .stringsdict (Xcode)
Lingo.dev CLI 翻译 Xcode 的 .stringsdict 文件,同时保留复数规则、格式变体和 iOS 的复数处理功能。CLI 会自动应用正确的语言特定复数规则,维护所有 plist 结构和元数据,处理复杂字符串中的多个变量,确保正确的编码和字符处理,并与 iOS 本地化工作流无缝集成。
快速设置
为 Xcode 的 stringsdict 复数化文件进行配置:
json { "locale": { "source": "en", "targets": ["es", "fr", "de", "ru"] }, "buckets": { "xcode-stringsdict": { "include": ["Resources/[locale].lproj/Localizable.stringsdict"] } } }
**提醒**:`[locale]` 是一个占位符,在 CLI 运行时会被实际的语言区域替换。
## 翻译 Stringsdict 文件
```bash
npx lingo.dev@latest i18n
处理复杂的 iOS 复数规则,同时保留 plist 结构和格式变体。
复数化结构
基本复数形式
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items_count</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@items@</string>
<key>items</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>zero</key>
<string>没有项目</string>
<key>one</key>
<string>一个项目</string>
<key>other</key>
<string>%d 个项目</string>
</dict>
</dict>
</dict>
</plist>
复杂复数规则
<key>message_count</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@messages@</string>
<key>messages</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>zero</key>
<string>没有新消息</string>
<key>one</key>
<string>一条新消息</string>
<key>few</key>
<string>%d 条新消息</string>
<key>many</key>
<string>%d 条新消息</string>
<key>other</key>
<string>%d 条新消息</string>
</dict>
</dict>
多变量
<key>files_and_folders</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@files@ 和 %#@folders@</string>
<key>files</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>zero</key>
<string>没有文件</string>
<key>one</key>
<string>一个文件</string>
<key>other</key>
<string>%d 个文件</string>
</dict>
<key>folders</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>zero</key>
<string>没有文件夹</string>
<key>one</key>
<string>一个文件夹</string>
<key>other</key>
<string>%d 个文件夹</string>
</dict>
</dict>
特定语言规则
不同语言有独特的复数规则:
- 英语:
zero
,one
,other
- 俄语:
zero
,one
,few
,many
,other
- 波兰语:
zero
,one
,few
,many
,other
- 阿拉伯语:
zero
,one
,two
,few
,many
,other
翻译引擎会自动为每种目标语言应用正确的规则。
高级配置
多个 Stringsdict 文件
"xcode-stringsdict": {
"include": [
"Resources/[locale].lproj/Localizable.stringsdict",
"Resources/[locale].lproj/Notifications.stringsdict"
]
}
锁定格式键
"xcode-stringsdict": {
"include": ["Resources/[locale].lproj/Localizable.stringsdict"],
"lockedKeys": ["NSStringLocalizedFormatKey", "NSStringFormatSpecTypeKey"]
}