Lingo.dev + .stringsdict (Xcode)
Lingo.dev CLIはXcodeの.stringsdictファイルを翻訳する際に、複数形ルール、フォーマットバリエーション、iOSの複数形処理を保持します。CLIは言語固有の複数形ルールを自動的に適用し、すべてのplist構造とメタデータを維持し、複雑な文字列内の複数の変数を処理し、適切なエンコーディングと文字処理を確保し、iOSのローカリゼーションワークフローとネイティブに統合します。
クイックセットアップ
Xcodeのstringsdict複数形ファイル用の設定:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ru"]
},
"buckets": {
"xcode-stringsdict": {
"include": ["Resources/[locale].lproj/Localizable.stringsdict"]
}
}
}
注意: [locale]
は設定内でそのまま残しておくべきプレースホルダーであり、CLI実行時に実際のロケールに置き換えられます。
Stringsdictファイルの翻訳
npx lingo.dev@latest i18n
plist構造とフォーマットバリエーションを保持しながら、複雑なiOSの複数形ルールを処理します。
複数形構造
基本的な複数形
<?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>No items</string>
<key>one</key>
<string>One item</string>
<key>other</key>
<string>%d items</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>No new messages</string>
<key>one</key>
<string>One new message</string>
<key>few</key>
<string>%d new messages</string>
<key>many</key>
<string>%d new messages</string>
<key>other</key>
<string>%d new messages</string>
</dict>
</dict>
複数の変数
<key>files_and_folders</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@files@ and %#@folders@</string>
<key>files</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>zero</key>
<string>no files</string>
<key>one</key>
<string>one file</string>
<key>other</key>
<string>%d files</string>
</dict>
<key>folders</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>zero</key>
<string>no folders</string>
<key>one</key>
<string>one folder</string>
<key>other</key>
<string>%d folders</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"]
}