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であり、移行がシームレスです。