「ソース ICU メッセージ」に翻訳元のメッセージを、「翻訳 ICU メッセージ」にその翻訳を貼り付けます。両方の文字列を ICU MessageFormat として読み取り、構造を比較し、検出した内容を 1 行ずつ OK・CHECK・ERROR の接頭辞付きで表示します。
一覧の上の 3 つの数値は、各メッセージが宣言している引数の数と、検出された問題の数です。解析はすべてこのブラウザ内で行われ、送信はされません。読み込み後はオフラインでも動作します。
引数は 2 つのメッセージ間で名前によって突き合わせます。ソースにだけ存在する引数は ERROR、翻訳にだけ存在する引数は CHECK になります。同じ名前の型が異なる場合(片方が plural、もう片方が number など)は、両方の型を示す CHECK が表示されます。
select 引数では分岐キーを 1 つずつ比較するため、翻訳で欠けた分岐や追加された分岐は名前付きで報告されます。plural と selectordinal の引数には other 分岐が必要で、欠落は ERROR として失った側に帰属されます。分岐の中に入れ子になったメッセージも再帰的に解析され、その中の引数も数えられます。
plural と selectordinal の分岐は 1 つずつ比較しません。one/other を持つソースと other だけを持つ翻訳は互換と判定されます。また、翻訳文そのものの確認、対象言語が必要とする複数形のカテゴリ(few、many など)の検証、値を使ったメッセージのレンダリングは行いません。
したがって、緑のレポートが意味するのは「両方のメッセージが同じ引数と同じ select 分岐を宣言している」ことだけです。公開前に本番のライブラリで両方をレンダリングし、対象言語の複数形の規則も確認してください。
パーサーは {name} 引数、分岐を持つ plural・selectordinal・select 引数、plural ヘッダーの offset:N、入れ子のメッセージ、plural 分岐内の # プレースホルダー、アポストロフィによる引用(2 つで 1 つの文字としてのアポストロフィ、1 つで引用の開始と終了)を読み取ります。number、date、time などの型は名前として記録されるため、{value, number, ::percent} のような書式スケルトンも受け付けます。
読み取れないメッセージは、レポートではなく ERROR で実行を停止します。閉じられていない {、対応する { のない }、閉じられていないアポストロフィ、英字またはアンダースコアで始まらない引数名、{ … } ブロックが続かない分岐が対象です。