Lingo.dev + .json-dictionary

Lingo.dev CLIは、各翻訳可能な文字列に複数のロケールキーが単一のオブジェクトに含まれるJSONファイルを翻訳します。ロケールを異なるファイルに分ける標準的なJSON形式とは異なり、json-dictionaryはすべての翻訳を{"en": "Hello", "es": "Hola"}のようなロケール固有のキーと一緒に保存します。

クイックセットアップ

i18n.json設定ファイルを作成します:

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "json-dictionary": {
      "include": ["content/pages.json"]
    }
  }
}

ファイル構造

json-dictionary形式は、ロケールキーを持つネストされたオブジェクトとして翻訳を保存します:

{
  "title": {
    "en": "Welcome to our site",
    "es": "Bienvenido a nuestro sitio"
  },
  "navigation": {
    "home": {
      "en": "Home",
      "es": "Inicio"
    },
    "about": {
      "en": "About Us",
      "es": "Acerca de nosotros"
    }
  },
  "staticValue": "This won't be translated",
  "pages": [
    {
      "title": {
        "en": "Page One",
        "es": "Página Uno"
      }
    }
  ]
}

すべてを翻訳する

npx lingo.dev@latest i18n

CLIは自動的に以下を実行します:

  • 翻訳可能なオブジェクト(ロケールキーを持つもの)のみを抽出
  • 翻訳不可能な値を変更せずに保持
  • 既存のキーと並んでターゲットロケールキーを追加
  • ソースロケールキーの順序を維持(ソースが最初、他はアルファベット順)

キーの動作

翻訳可能な検出:ソースロケールキーを含むオブジェクトのみが翻訳可能と見なされます。プレーンな文字列、数値、ブール値、およびロケールキーのないオブジェクトは変更されません。

キーの順序:翻訳を追加する際、ソースロケールが最初に表示され、その後他のロケールがアルファベット順に続きます:

{
  "message": {
    "en": "Original text",
    "de": "Deutscher Text",
    "es": "Texto en español",
    "fr": "Texte français"
  }
}

ネストのサポート:深くネストされた構造や翻訳可能なオブジェクトを含む配列でも機能します。

高度な設定

ファイルの除外

"json-dictionary": {
  "include": ["content/*.json"],
  "exclude": ["content/config.json"]
}