Bug
When a non-English locale is missing a translation key, the UI shows the raw key path (e.g. heatmap.no_workout) instead of falling back to English. This affects 138 keys across es/pt/ru/fr (zh-CN is partially covered by PR #200 but the underlying fallback issue remains for all locales).
Root cause
locales/client.ts has the fallback locale explicitly commented out:
// Uncomment to set fallback locale
// fallbackLocale: en,
next-international's createI18nClient supports a fallbackLocale option that, when set, makes missing keys fall back to the specified locale instead of rendering the raw key string. It's currently disabled, so every key that hasn't been translated shows as section.subsection.key_name in the UI.
Impact
Concrete examples of keys currently showing as raw paths in es/pt/ru:
heatmap.no_workout / heatmap.one_workout_unit / heatmap.multiple_workouts_unit (heatmap legend)
health_risks.overweight.* and health_risks.underweight.* (BMI calculator results — ~25 keys each)
commons.refresh, workout_builder.muscles.lats, premium strings
Fix
Enable the fallback:
This is a one-line change that immediately improves every locale (including future ones) — missing keys show English instead of raw paths. It's complementary to translation-completion PRs like #200 (which fill in actual translations); the fallback is a safety net for any key not yet translated.
I have a PR ready.
Bug
When a non-English locale is missing a translation key, the UI shows the raw key path (e.g.
heatmap.no_workout) instead of falling back to English. This affects 138 keys across es/pt/ru/fr (zh-CN is partially covered by PR #200 but the underlying fallback issue remains for all locales).Root cause
locales/client.tshas the fallback locale explicitly commented out:next-international'screateI18nClientsupports afallbackLocaleoption that, when set, makes missing keys fall back to the specified locale instead of rendering the raw key string. It's currently disabled, so every key that hasn't been translated shows assection.subsection.key_namein the UI.Impact
Concrete examples of keys currently showing as raw paths in es/pt/ru:
heatmap.no_workout/heatmap.one_workout_unit/heatmap.multiple_workouts_unit(heatmap legend)health_risks.overweight.*andhealth_risks.underweight.*(BMI calculator results — ~25 keys each)commons.refresh,workout_builder.muscles.lats, premium stringsFix
Enable the fallback:
This is a one-line change that immediately improves every locale (including future ones) — missing keys show English instead of raw paths. It's complementary to translation-completion PRs like #200 (which fill in actual translations); the fallback is a safety net for any key not yet translated.
I have a PR ready.