Skip to content

i18n: campaign level titles/scenarios/debriefs are EN-only data, not translatable #238

Description

@pshenok

Found while shipping the Hindi locale (#237): the campaign's most-read text — level title, scenario, learn, debriefTip, plus objective labels — lives as English strings in src/campaign/levels.js data (the schema even documents them as "UI strings (EN)"). They render in English for every locale, including uk and the new hi.

For any locale, this is now the single biggest localization gap: the campaign is the education spine, and its narrative is the part players actually read.

Scope

25 levels × (title + scenario + learn + debriefTip + ~4 objective labels) ≈ ~200 keys × 11 locales ≈ 2200 strings, plus the mechanism:

  • Move level strings to i18n keys (level_<id>_title, level_<id>_scenario, …, obj_<levelId>_<objId>), keep levels.js holding keys not prose
  • The level-invariant tests should assert every level's keys exist in en (the raw-key protection)
  • Translate per-locale following each locale's established register (hi = Hinglish rules from feat: Hindi locale — 705 keys in the Hinglish register (हिन्दी) #237's glossary; uk = ти-tone glossary from Add Ukrainian locale (uk) #230)
  • The beatability harness and objective check functions are untouched — this is presentation-only

Worth doing in two PRs: (1) the mechanism + en extraction (zero visible change), (2) the translations.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions