chore(i18n): remove orphaned translation keys and add a reverse-coverage guard

Delete 177 translation keys that no call site reaches — across all six locales
— covering the medications, cycle, labs, notifications, nav, targets, and
admin namespaces that drifted out of use as their surfaces were rebuilt. The
forward call-site guard only catches keys referenced from code that never
shipped to the bundle; nothing watched the reverse, so orphans piled up.

Add a reverse-coverage test that walks messages/en.json and asserts every leaf
is reachable: a literal t() key, a subtree returned by t("ns"), a dynamic key
built inside a t(`…`) template or by string concatenation (the per-metric
${i18nPrefix}.* pages, cycle.calendar.flow${LEVEL}, medications.site${Suffix},
"notifications.event" + type), or an explicit allowlist for DB-driven keys
(mood.tag / mood.tagCategory). A new orphan now prints as a punch list.

Drop the unrendered admin.carrierUnknown and dashboard.bpInTargetShort from the
drift / trend-card guards — both lost their call sites and were removed here.
This commit is contained in:
Marc-André Bombeck committed 2026-06-18 18:47:05 +02:00
1 parent b474ea1489
commit d50e277a2b
9 files changed
+251 -1106

No files matched your search

@@ -198,7 +198,6 @@ describe("dashboard.*Short keys exist across all six locales", () => {
"sleepShort",
"stepsShort",
"vo2MaxShort",
"bpInTargetShort",
];
// Resolved at test time so the assertion runs against the current