Lingo.dev + .json5 (JSON5)

Lingo.dev CLIはJSON5ロケールファイルを翻訳し、コメント、引用符なしのキー、末尾のカンマ、単一引用符などのJSON5構文を完全にサポートします。CLIはJSON5のフォーマットと開発者にやさしい構文を保持しながら、フレームワークの互換性を維持し、コスト効率のために変更されたコンテンツのみを処理します。

クイックセットアップ

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

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "json5": {
      "include": ["locales/[locale].json5"]
    }
  }
}

注意[locale]は設定内でそのまま残しておくべきプレースホルダーであり、CLI実行中に実際のロケールに置き換えられます。

すべてを翻訳

npx lingo.dev@latest i18n

JSON5構文機能を自動的に処理し、コメントとフォーマットを保持し、変更されたコンテンツのみを更新します。

JSON5構文サポート

JSON5はJSONを開発者にやさしい構文で拡張します:

{
  // コメントがサポートされています
  title: "Hello, world!", // 行コメントが機能します
  description: '単一引用符が許可されています',
  unquoted: '引用符なしのキーが機能します',
  trailing: 'カンマが許可されています',
  
  /* ブロックコメントも
     サポートされています */
  multiline: "これは \
複数行に \
またがる長い文字列です",
  
  // 16進数
  hex_value: 0xDEADBEEF,
  positive: +123,
  
  nested: {
    key: 'value',
  }, // 末尾のカンマが許可されています
}

スマートな構造保持

JSON5構文とフレームワークの規則を維持します:

{
  nav: {
    home: "ホーム",
    about: {
      team: "私たちのチーム"
    }
  },
  items: {
    one: "{{count}}アイテム",
    other: "{{count}}アイテム"
  },
  // 設定はそのまま保持されます
  version: 0x010203
}

高度な設定

ファイルの除外

"json5": {
  "include": ["locales/[locale]/*.json5"],
  "exclude": ["locales/[locale]/config.json5"]
}

技術的キーのロック

"json5": {
  "lockedKeys": ["app/version", "settings/apiKey"]
}

ネストされたキーパスにはフォワードスラッシュ(/)を使用するか、複数のキーパスに一致させるにはアスタリスク(*)を使用します。

JSON5 vs JSON

JSON5は完全なJSON互換性を維持しながら、開発者体験を向上させます:

  • コメント: インラインコメントとブロックコメントで翻訳を文書化
  • 引用符なしのキー: プロパティ名の周りに引用符がない、よりクリーンな構文
  • 末尾のカンマ: 編集とバージョン管理の差分が容易に
  • シングルクォート: 文字列引用の柔軟性
  • 複数行文字列: 長いテキストの可読性向上
  • 数値フォーマット: 16進数、正符号など

すべてのJSONファイルは有効なJSON5であり、移行がシームレスです。