翻訳プレースホルダー整合チェック

多言語対応の翻訳ファイル(JSON)で、キーの不足・余分なキー、{name} 形式のプレースホルダーの欠落・追加・名前の変更を見つけるツールです。変数の順序の違いは問題とせず、型の不一致やICUのplural・selectなど対象外の構文も区別して表示します。すべてブラウザ内で処理されます。

翻訳ファイルはサーバーへ送信されず、チェックはすべてブラウザ内で行われます。入力したJSONは書き換えません。
  • 対応する変数構文は {name} の単純な名前付きプレースホルダー(英数字と _)のみです。出現順序や回数が違っても、変数名の集合が同じなら問題としません。
  • エスケープ規則はICU MessageFormatと同じです。'{' や '{name}' のようにアポストロフィで囲んだ部分は文字として扱い、'' は1つのアポストロフィになります。don't のような通常のアポストロフィは文字のままです。
  • {count, plural, ...} や {gender, select, ...} などのICU構文は対象外です。正常とは判定せず「対象外の構文」として表示します。{{name}} のような二重波括弧も解析できない構文として表示します。

チェック結果

基準言語と翻訳先のJSONを入力すると、キーと変数の整合性が表示されます。

使い方

  1. 左に基準言語(例: ja.json)、右に翻訳先(例: en.json)のJSONを貼り付けるか、ファイルを読み込みます。
  2. ネストしたキーごとに、キーの過不足・型の不一致・変数の過不足が一覧表示されます。
  3. 「変数の不一致」では、翻訳先にない変数と基準にない変数が表示されます。両方ある場合は変数名が変更された可能性があります。
  4. 「コピー」で結果をタブ区切りのテキストとしてコピーできます。

このツールについて

翻訳作業で「こんにちは、{name}さん」の {name} が消えたり {username} に変わったりすると、画面に名前が表示されない、変数がそのまま表示されるといった不具合になります。このツールは翻訳文の内容ではなく、キーと変数の整合性だけを確認します。

変数は名前の集合で比較するため、語順の違いで出現順序が変わっても問題になりません。エスケープはICU MessageFormatと同じ規則で、'{name}' のようにアポストロフィで囲んだ部分は変数として扱いません。

{count, plural, ...} などのICU構文は初期版の対象外で、正常と誤判定しないよう「対象外の構文」として表示します。数値や真偽値などの文字列以外の値、基準と翻訳先で型が違う値も区別して表示します。入力したJSONが書き換えられたり、サーバーへ送信されたりすることはありません。

基準を {"hello":"こんにちは{name}"}、翻訳先を {"hello":"Hello {user}"} にすると、$.helloでnameの不足とuserの余分な変数が表示されます。翻訳先を「Hello {name}」に直すと、文言が違っていても変数の不一致はなくなります。

同じ変数が複数回登場しても、比較するのは名前の集合です。繰り返し回数の違いや翻訳そのものの自然さは検出しません。結果が問題なしでも、画面での表示や文章の意味は別途確認すると、変数の整合性と翻訳品質を分けて点検できます。

よくある質問

i18next の {{name}} 形式には対応していますか?

初期版は {name} 形式のみに対応しています。{{name}} は解析できない構文として表示されます。

変数の順番が違うとエラーになりますか?

なりません。言語によって語順が変わるため、変数名の集合が同じであれば問題なしと判定します。

配列の値もチェックされますか?

はい。配列はインデックスごとに比較し、$.list[0] のようなパスで表示します。