fill-translations
Installation
SKILL.md
Filling missing and outdated translations
The web app's strings live in apps/web/lib/i18n/locales/<locale>/translation.json (nested i18next JSON). en is the source of truth. Features usually add keys to en only, so the other locales drift.
i18n.mjs in this directory compares every locale against en and reports three kinds of problem per key:
- MISSING: the key exists in
enbut is absent or empty in the locale. - OUTDATED: the
envalue changed after the locale's value last changed. The script works this out from the git history of both files plus the working tree, so it also catchesenedits you haven't committed yet. - OBSOLETE: the key exists in the locale but no longer in
en(usually a removed or renamed key).
Plurals follow i18next's _one/_other suffixes. For each plural group in en, the script expects the locale's own CLDR categories (from Intl.PluralRules). Arabic, for example, needs _zero, _one, _two, _few, _many and _other, and Japanese needs only _other.
1. Report
From the repo root: