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"]
}