What the checker looks for
- Missing keys: in the template but absent from a language. The app compiles, but your users see the template language's text instead of their own.
- Extra keys: in a translation but no longer in the template, often leftovers from a removed feature.
- Empty values: the key exists but its translation is blank, which a plain key check misses.
- Placeholder mismatches:
{name} turned into {nom}, or dropped. Placeholders inside ICU plurals and selects are read too.
Keys starting with @ (metadata and @@locale) are ignored. The reference file is the one set by template-arb-file in l10n.yaml, usually app_en.arb: the tool guesses it and you can pick another.
Finding missing keys in a Flutter app
- Gather the files from your
arb-dir folder (lib/l10n by default).
- Drop them all at once, template included.
- Open each language to see its issues, then copy the missing keys in ARB format: they reuse the template text, ready to translate.
For an automatic check on every build, the untranslated-messages-file option of flutter gen-l10n and a small CI script are covered in the guide to finding missing keys in ARB files. ICU placeholder mistakes are explained in the guide on plurals and placeholders.
Limits of the checker
The tool compares keys and placeholder names: it does not validate full ICU syntax (that is flutter gen-l10n's job), does not judge translation quality and never modifies your files. To import a whole project, translate and export with a backup, you need a localization editor such as LocalePilot.