言語の追加

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 runを実行すると、新しいドイツ語翻訳ファイルが作成されます:

locales/
  en.json    (source - unchanged)
  es.json    (existing - unchanged)
  fr.json    (existing - unchanged)
  de.json    (new - fully translated)

新しい言語生成の仕組み

Lingo.dev CLIは、新しい言語と既存の言語を異なる方法で処理します:

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

部分的な既存翻訳の例:

// locales/en.json (source)
{
  "welcome": "Welcome",
  "button.save": "Save",
  "error.network": "Network error"
}

// locales/es.json (existing with missing translations)
{
  "welcome": "Bienvenido"
}

ドイツ語を追加してCLIを実行した後:

// locales/es.json (gaps filled)
{
  "welcome": "Bienvenido",
  "button.save": "Guardar",
  "error.network": "Error de red"
}

// locales/de.json (complete new file)
{
  "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

特定言語の追加

--target-localeフラグを使用して、特定の新しい言語の翻訳を生成できます:

npx lingo.dev@latest run --target-locale de

これにより、ドイツ語の翻訳のみが生成され、他の新しい言語は後で処理されます。

言語の削除

言語を削除するには、targets配列から削除するだけです。CLIは既存のファイルを削除しませんが、そのロケールの処理を停止します:

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr"]
  }
}

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