翻訳プレースホルダー整合チェック
多言語対応の翻訳ファイル(JSON)で、キーの不足・余分なキー、{name} 形式のプレースホルダーの欠落・追加・名前の変更を見つけるツールです。変数の順序の違いは問題とせず、型の不一致やICUのplural・selectなど対象外の構文も区別して表示します。すべてブラウザ内で処理されます。
- 対応する変数構文は {name} の単純な名前付きプレースホルダー(英数字と _)のみです。出現順序や回数が違っても、変数名の集合が同じなら問題としません。
- エスケープ規則はICU MessageFormatと同じです。'{' や '{name}' のようにアポストロフィで囲んだ部分は文字として扱い、'' は1つのアポストロフィになります。don't のような通常のアポストロフィは文字のままです。
- {count, plural, ...} や {gender, select, ...} などのICU構文は対象外です。正常とは判定せず「対象外の構文」として表示します。{{name}} のような二重波括弧も解析できない構文として表示します。
チェック結果
基準言語と翻訳先のJSONを入力すると、キーと変数の整合性が表示されます。
使い方
- 左に基準言語(例: ja.json)、右に翻訳先(例: en.json)のJSONを貼り付けるか、ファイルを読み込みます。
- ネストしたキーごとに、キーの過不足・型の不一致・変数の過不足が一覧表示されます。
- 「変数の不一致」では、翻訳先にない変数と基準にない変数が表示されます。両方ある場合は変数名が変更された可能性があります。
- 「コピー」で結果をタブ区切りのテキストとしてコピーできます。
このツールについて
翻訳作業で「こんにちは、{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] のようなパスで表示します。