CLI は 6 種類のファイル形式に対応しています。形式はファイル拡張子から自動判定されますが、files[] エントリで format を設定すれば上書きできます。
| 形式 | 拡張子 | format の値 | 補足 |
|---|---|---|---|
| JSON | .json | json | キー/値形式。key controls に対応しています。 |
| JSONC | .jsonc | jsonc | コメント付き JSON。コメントは保持され、translator notes としても使えます。 |
| Markdown | .md | md | 本文は翻訳対象。frontmatter はオプトインです。 |
| MDX | .mdx | mdx | Markdown + JSX。コンポーネント props はオプトインです。 |
| Markdoc | .mdoc | markdoc | Markdown + タグ。frontmatter とタグ属性に対応しています。 |
| OpenAPI YAML | .yaml | yaml-openapi | OpenAPI 仕様。format は必ず明示的に設定してください。 |
一連の流れを見る
demo project には、各形式ごとに必要な設定をそのまま反映したファイルが 1 つずつ含まれています。npx degit lingodotdev/lingo.dev/demo/new-cli my-lingo-demo でクローンして、push を実行してください。
npx degit lingodotdev/lingo.dev/demo/new-cli my-lingo-demo
cd my-lingo-demoJSON と JSONC#
基本的なキー/値の翻訳です。key control で別途指定しない限り、すべての文字列値が翻訳されます。
{ "pattern": "content/en/app.json", "lockedKeys": ["meta.version"] }JSONC ではコメントも保持され、エンジンはそれをコンテキストとして読み取ります。詳しくは translator notes をご覧ください。
{ "pattern": "content/en/settings.jsonc", "preservedKeys": ["featureFlags"] }Markdown、MDX、Markdoc#
本文はデフォルトで翻訳されます。frontmatter と埋め込みコンポーネントは、オプトインしない限り 翻訳されません。
Frontmatter#
翻訳したい frontmatter フィールドを translateFrontmatterFields で指定します。
{
"pattern": "content/en/guide.md",
"translateFrontmatterFields": ["title", "description"]
}MDX コンポーネント props#
MDX では、特定のコンポーネント上の特定の props を translateComponentProps で翻訳します。
{
"pattern": "content/en/landing.mdx",
"translateFrontmatterFields": ["title"],
"translateComponentProps": [{ "component": ["Hero", "Callout"], "props": ["title", "body"] }]
}これにより、<Hero> と <Callout> の title および body props が翻訳され、それ以外の props はそのまま保持されます。
Markdoc#
Markdoc は Markdown と同じように扱われ、frontmatter とタグ属性は保持されます。
{
"pattern": "content/en/changelog.mdoc",
"translateFrontmatterFields": ["title"]
}OpenAPI YAML#
汎用 YAML は解釈の余地があるため、OpenAPI 仕様では format を明示的に指定する必要があります。
{ "pattern": "content/en/api.yaml", "format": "yaml-openapi" }エンジンは、人が読むフィールド(summary や description など)を翻訳し、スキーマキー、パス、operation ID はそのまま保持します。
出力パス#
ターゲットは、ソースパターン内のロケールセグメントを置き換えて書き出されます(content/en/app.json → content/de/app.json)。CLI がターゲットの出力先を判断できるよう、パスにはソースロケールを含めてください。詳しくは Configuration を参照してください。
legacy CLI から移行する場合#
legacy CLI は約 25 種類の形式(CSV、PO、XLIFF、Android/Xcode strings、Flutter ARB、HTML など)に対応していました。これらの形式のサポートは、利用状況に応じて現在の CLI に順次追加されています。お使いの形式がまだ未対応の場合は、legacy CLI docs を参照してください。
