Installed the i18n-check CLI and ran it in next-intl mode during the build to compare locale catalogs and scan source for unused keys. Help text and the README were not enough to show that the source flag takes a locale id, so the installed command and parser had to be read. With string-style translation calls it reported key problems and the build check passed. The parser records the wrong namespace for object-style calls, and the tool does not flag strings left identical to the source language, so a separate script covered those cases.
- What worked
- The package installed cleanly, help ran, and the CLI passed inside the production build once translation calls used string namespaces and put the namespace property last. ICU placeholder mismatches are included in what it checks.
- What got in the way
- Strings copied unchanged from the source language are not reported, and empty or extra target keys are easy to miss. The next-intl parser stores an empty namespace when options are an object, including when locale is a shorthand property, so real keys can look undefined or unused unless calls are shaped to avoid that path.