言語の追加
Lingo.dev CLIを使用すると、i18n.json
設定にターゲットロケールを追加し、単一のコマンドを実行するだけで、プロジェクトを新しい言語に簡単に拡張できます。
新しい言語を追加すると、CLIは既存の翻訳をすべて保持し、同じコンテンツフィンガープリントシステムを維持しながら、新しいロケールの完全な翻訳ファイルを生成します。
最初の新しい言語の追加
新しい言語を追加するには、i18n.json
設定のtargets
配列を更新します:
元の設定:
{
"locale": {
"source": "en",
"targets": ["es", "fr"]
},
"buckets": {
"json": {
"include": ["locales/[locale].json"]
}
}
}
ドイツ語を追加した更新後の設定:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"json": {
"include": ["locales/[locale].json"]
}
}
}
npx lingo.dev@latest i18n
を実行すると、新しいドイツ語翻訳ファイルが作成されます:
locales/
en.json (ソース - 変更なし)
es.json (既存 - 変更なし)
fr.json (既存 - 変更なし)
de.json (新規 - 完全に翻訳済み)
新しい言語生成の仕組み
Lingo.dev CLIは新しい言語と既存の言語を異なる方法で処理します:
- 既存の言語 — 不足している翻訳のみが生成されます
- 新しい言語 — 完全な翻訳ファイルが一から作成されます
部分的な既存翻訳がある例:
// locales/en.json (ソース)
{
"welcome": "Welcome",
"button.save": "Save",
"error.network": "Network error"
}
// locales/es.json (翻訳が不足している既存ファイル)
{
"welcome": "Bienvenido"
}
ドイツ語を追加してCLIを実行した後:
// locales/es.json (不足部分が補完された)
{
"welcome": "Bienvenido",
"button.save": "Guardar",
"error.network": "Error de red"
}
// locales/de.json (完全な新規ファイル)
{
"welcome": "Willkommen",
"button.save": "Speichern",
"error.network": "Netzwerkfehler"
}
複数言語の追加
複数の言語を同時に追加することができます:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja", "zh"]
}
}
CLIはすべての新しい言語を処理し、各新しいロケールの完全な翻訳ファイルを作成します。
地域バリアント
Lingo.dev CLIはBCP 47言語タグを使用した地域言語バリアントをサポートしています:
{
"locale": {
"source": "en-US",
"targets": ["en-GB", "es-ES", "es-MX", "fr-FR", "fr-CA"]
}
}
これにより、用語、スペル、文化的コンテキストの違いを考慮した、各地域バリアント用の個別の翻訳ファイルが生成されます。
ファイル構造への影響
CLIはバケットパターンに従って新しいファイルを作成します。異なるファイル形式の場合:
JSONバケット:
locales/[locale].json → locales/de.json, locales/ja.json
Markdownバケット:
content/[locale]/*.md → content/de/*.md, content/ja/*.md
ネストされた構造:
app/[locale]/messages.json → app/de/messages.json, app/ja/messages.json
特定言語の追加
特定の新しい言語の翻訳を生成するには、--locale
フラグを使用します:
npx lingo.dev@latest i18n --locale de
これによりドイツ語の翻訳のみが生成され、他の新しい言語は後で処理することができます。
言語の削除
言語を削除するには、単にtargets
配列からその言語を削除します。CLIは既存のファイルを削除しませんが、そのロケールの処理を停止します:
{
"locale": {
"source": "en",
"targets": ["es", "fr"]
}
}
必要に応じて、対応する翻訳ファイルを手動で削除することができます。