チェッカーが調べること
- 不足キー:テンプレートにあるのに、ある言語にはないキー。アプリはビルドできますが、ユーザーには自分の言語ではなくテンプレート言語のテキストが表示されます。
- 余分なキー:翻訳にはあるのに、テンプレートにはもうないキー。削除した機能の名残であることが多いです。
- 空の値:キーはあるのに翻訳が空のもの。単純なキーの比較では見逃します。
- プレースホルダーの不一致:
{name} が {nom} に変わっていたり、抜けていたりするもの。ICU の複数形や select の中のプレースホルダーも読み取ります。
@ で始まるキー(メタデータと @@locale)は無視します。基準ファイルは l10n.yaml の template-arb-file で指定されたもので、通常は app_en.arb です。ツールが推測しますが、別のファイルを選ぶこともできます。
Flutter アプリの不足キーを探す手順
arb-dir フォルダ(デフォルトは lib/l10n)のファイルを集めます。
- テンプレートも含めて、まとめてドロップします。
- 言語ごとに問題を確認し、不足キーを ARB 形式でコピーします。テンプレートのテキストが入っているので、そのまま翻訳を始められます。
ビルドのたびに自動でチェックしたい場合は、flutter gen-l10n の untranslated-messages-file オプションと小さな CI スクリプトをARB ファイルの不足キーを探すガイドで解説しています。ICU プレースホルダーのミスについては複数形とプレースホルダーのガイドをご覧ください。
チェッカーの制限
このツールが比較するのはキーとプレースホルダー名です。ICU 構文全体の検証(それは flutter gen-l10n の役割です)や翻訳品質の判断は行わず、ファイルを変更することもありません。プロジェクト全体をインポートし、翻訳し、バックアップ付きで書き出すには、LocalePilot のようなローカライズエディタが必要です。