対応フォーマット

更新日:前四半期 · 読了目安 2分

非推奨

このドキュメントは旧CLI(v0)について説明しています。現在のCLIはv1です。 現在の CLI ドキュメントを見る

Lingo.dev CLI は、さまざまなファイル形式を解析・翻訳するためにバケットタイプを使用します。各バケットタイプは、特定の形式に対応した専用パーサーです。CLI が翻訳対象とするファイルを定義するには、i18n.json で 1 つ以上のバケットを設定します。

バケットタイプ#

バケットタイプフォーマット出力モード[locale] 必須
jsonJSON ファイルロケールごとに別ファイルはい
json5JSON5 ファイルロケールごとに別ファイルはい
jsoncJSONC ファイル(コメント付き)ロケールごとに別ファイルはい
json-dictionaryJSON 辞書(フラットなキー・バリュー)ロケールごとに別ファイルはい
yamlYAML ファイルロケールごとに別ファイルはい
yaml-root-keyロケールをルートキーに持つ YAMLソースファイルを更新いいえ
markdownMarkdown ファイルロケールごとに別ファイルはい
mdxMDX ファイルロケールごとに別ファイルはい
markdocMarkdoc ファイルロケールごとに別ファイルはい
htmlHTML ファイルロケールごとに別ファイルはい
mjmlMJML メールテンプレートロケールごとに別ファイルはい
androidAndroid XML リソースロケールごとに別ファイルはい
xcode-stringsXcode .strings ファイルロケールごとに別ファイルはい
xcode-stringsdictXcode .stringsdict ファイルロケールごとに別ファイルはい
xcode-xcstringsXcode .xcstrings カタログソースファイルを更新いいえ
flutterFlutter ARB ファイルロケールごとに別ファイルはい
poGNU gettext PO ファイルロケールごとに別ファイルはい
propertiesJava .properties ファイルロケールごとに別ファイルはい
csvCSV ファイルソースファイルを更新いいえ
csv-per-localeCSV ファイル(ロケールごとに 1 ファイル)ロケールごとに別ファイルはい
xml汎用 XML ファイルロケールごとに別ファイルはい
xliffXLIFF ファイルロケールごとに別ファイルはい
srtSRT 字幕ファイルロケールごとに別ファイルはい
vttVTT 字幕ファイルロケールごとに別ファイルはい
phpPHP ローカライゼーション配列ロケールごとに別ファイルはい
typescriptTypeScript ファイルロケールごとに別ファイルはい
vue-jsonVue i18n JSON ブロックロケールごとに別ファイルはい
txtプレーンテキストファイルロケールごとに別ファイルはい

出力モード#

バケットは、次の 2 つの出力モードのいずれかで動作します。

ロケールごとに別ファイル - CLI はターゲット言語ごとに個別のファイルを生成します。include パターンには [locale] プレースホルダーを含める必要があります。

json
{
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"]
    }
  }
}

これにより、locales/en.jsonlocales/es.jsonlocales/fr.json などのファイルが生成されます。

ソースファイルを更新 - CLI は、ソースコンテンツを含む同じファイルに翻訳を書き戻します。[locale] プレースホルダーは使いません。

json
{
  "buckets": {
    "csv": {
      "include": ["translations.csv"]
    }
  }
}

CSV ファイルは通常、1 つのファイル内の列にすべてのロケールを格納します。Xcode .xcstrings カタログや、ルートキーを持つ YAML も同様です。

設定例#

JSON を使った Web アプリ#

json
{
  "buckets": {
    "json": {
      "include": ["src/locales/[locale].json"],
      "lockedKeys": ["brand/name"]
    }
  }
}

Markdown を使ったドキュメントサイト#

json
{
  "buckets": {
    "markdown": {
      "include": ["docs/[locale]/*.md"],
      "exclude": ["docs/[locale]/drafts/*.md"]
    }
  }
}

モバイルアプリ(iOS + Android)#

json
{
  "buckets": {
    "xcode-xcstrings": {
      "include": ["ios/Localizable.xcstrings"]
    },
    "android": {
      "include": ["android/app/src/main/res/values-[locale]/strings.xml"]
    }
  }
}

複数フォーマットを含むモノレポ#

json
{
  "buckets": {
    "json": {
      "include": ["apps/web/locales/[locale].json"]
    },
    "mdx": {
      "include": ["packages/docs/content/[locale]/*.mdx"]
    },
    "flutter": {
      "include": ["apps/mobile/lib/l10n/app_[locale].arb"]
    }
  }
}

バケット固有の機能#

一部のバケットでは、include / exclude パターンに加えて、追加機能も利用できます。

機能対応バケット説明
Key Lockingキー・バリュー形式(JSON、YAML など)翻訳せずにソースの値をコピー
Key Ignoringキー・バリュー形式キーをターゲットファイルから完全に除外
Key Preservingキー・バリュー形式一度初期化したら、その後の更新から保護
Translator NotesJSONC、XCStringsコメントで文脈を補足し、翻訳品質を向上

include パターンのルール#

  • パターンは i18n.json ファイルの場所からの相対パスです
  • ロケールコードのプレースホルダーとして [locale] を使います(「ロケールごとに別ファイル」バケットでは必須)
  • アスタリスク(*)は任意のファイル名に一致します: locales/[locale]/*.json
  • 再帰パターン(**)は、任意の深さにあるファイルに一致します: src/**/[locale].jsonconfig/locales/**/[locale].yml。パターンで ** を使う場合、node_modules.gitdistbuild.next.turbo はデフォルトで除外されます。必要に応じて、独自の exclude エントリを追加してください(CLI 0.135.0+ が必要です)
  • ファイル拡張子は解析に影響しません。どのパーサーを使うかはバケットタイプで決まります

次のステップ#