言語の追加

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は新しい言語と既存の言語を異なる方法で処理します:

  1. 既存の言語 — 不足している翻訳のみが生成されます
  2. 新しい言語 — 完全な翻訳ファイルが一から作成されます

部分的な既存翻訳がある例:

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

必要に応じて、対応する翻訳ファイルを手動で削除することができます。