翻訳

i18nextおよびJSONロケールファイルを翻訳

ロケールJSONはネストされており、その文字列には{{name}}のような変数があります。テキストのみを見るツールは、キーの名前を変更したり、ネストをフラット化したり、変数を翻訳したりできます。KAERISは、すべての変数が元の場所にある状態で、ファイルを同じ形状で返します。

KAERISはこのページを翻訳し、すべての行を逆翻訳して確認しました。ネイティブスピーカーによるレビューはまだ行われていません。 英語原文

ロケールJSONファイルの構築方法

言語ごとに1つのファイル(en.json、de.json)、または名前空間ごとに1つのファイル(locales/en/common.json)。キーはコードとの契約であるため、値のみが翻訳されます。i18nextは複数形を別々のキー(inbox_one、inbox_other)として書き込みます。next-intl、Vue I18n、FormatJSはそれらを1つのICU文字列にまとめます。

ソースファイルen.json
{
  "nav": { "greeting": "Welcome back, {{name}}!" },
  "inbox_one": "{{count}} new message",
  "inbox_other": "{{count}} new messages"
}

JSON翻訳で注意すべきこと

実際の実行、実行前と実行後

実際の実行:97文字列のテストファイル、ドイツ語、2026年10月26日、4つのキーにカット。最後の行は、その実行で検出された損失を示しています。

翻訳前en.json
{
  "ph": {
    "mustache": "Hi {{firstName}}, your order {{orderId}} has shipped.",
    "reactTrans": "By continuing you accept our <0>Terms</0> and <1>Privacy Policy</1>.",
    "nesting": "$t(nav.cart) has been updated"
  },
  "icu": {
    "copiesLeft": "{count, plural, =0 {Sold out} one {Only # copy left} other {Only # copies left}}"
  }
}
翻訳後de.json
{
  "ph": {
    "mustache": "Hallo {{firstName}}, Ihre Bestellung {{orderId}} wurde versendet.",
    "reactTrans": "Durch die fortgesetzte Nutzung stimmen Sie unseren <0>Nutzungsbedingungen</0> und <1>Datenschutzrichtlinien</1> zu.",
    "nesting": "Der Warenkorb wurde aktualisiert"
  },
  "icu": {
    "copiesLeft": "{count, plural, =0 {Ausverkauft} one {Nur noch # Exemplar} other {Nur noch # Exemplare}}"
  }
}
このファイルに対する無料チェック/check
error ph.nesting: lost placeholder $t(nav.cart)

KAERIS が行うこと

3ステップで実行する

  1. CLIのインストール

    pip install kaerisを実行します。無料制限にはアカウントは必要ありません。

  2. ファイルを翻訳

    kaeris translate en.json --langs de,ja --verifyを実行します。de.jsonおよびja.jsonファイルがソースの隣に表示されます。

  3. 結果をチェック

    kaeris check --source en.json --langs de,jaを実行します。変数、数値、またはキーが間違っている場合、コード1で終了するため、CIはマージを停止できます。

pip install kaeris
kaeris init --preset i18next
kaeris translate en.json --langs de,ja --verify
kaeris check --source en.json --langs de,ja

よくある質問

どのJSONレイアウトが機能しますか?

i18next、Vue I18n、next-intl、FormatJSで使用されるフラットおよびネストされたキーと値のファイル。トップレベルはオブジェクトである必要があります。例:{"greeting": "Hello"}。文字列の配列も翻訳されます。

{{count}}や$t(…)参照は保持されますか?

翻訳後、変数と参照はソースと比較されます。1つ失われた行はフラグ付けされ、上記の例は$t(nav.cart)が失われ、チェックがそれを検出した実際の実行を示しています。

無料ですか?

はい、アカウントなしで:ファイルあたり 10,000 文字、実行あたり最大 8 言語。無料の API キーでファイル制限が 50,000 文字に引き上げられます。一度限りの生涯プランは 79 ドルで、ご自身の OpenRouter キーを使用します。月額プランは 19 ドルから。 料金

ターミナルや CI から実行できますか?

はい。pip install kaerisを実行してからkaeris translate en.json --langs de,jaを実行します。GitHub Actionは、プルリクエストで同じ翻訳を実行します。CLIドキュメント · GitHub Action

続ける

CLIリファレンス · チェックリファレンス · ブラウザで翻訳 · 無料チェック · フォーマット変換 · 疑似ローカリゼーション

その他の形式:YAML · .po · ARB · XLIFF · .strings · .xcstrings · .properties · .resx · CSV · Markdown · Fluent · Android XML