- Shipped
- August 14, 2026 at 11:25 PM UTC
- Author
- kamo
- Commit
- 6fd464c
The catalogue's keys contain dots, and they were written into en.json as literal flat keys. next-intl resolves by splitting on dots, so every one of the 46 event titles and descriptions rendered as a missing-key fallback on all three settings pages. Verified against the installed next-intl, not assumed: createTranslator returns MISSING for the flat form and the value for the nested one. check-i18n-keys did not catch it and structurally could not — for a key built by template it can only verify the static prefix (`events.`) resolves to an object, and the dynamic tail is invisible to it. That is the gap: every dynamic key in this module lives behind a prefix that resolves fine. So the tail is checked here, where the value set is known. Two tests walk every catalogued event key, every tone, every category and every layer name through the same dot-splitting lookup next-intl performs. Both skip when messages/ is absent, since it is gitignored and populated from the dictionary at build time. The data fix is in kamo-translation-dictionary (pushed first, as always).