Skip to content

Bug: Missing translation keys render as raw key paths instead of falling back to English #234

Description

@evan188199-tech

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:

fallbackLocale: en,

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions