feat(web): i18n (FR/EN) — homemade typed dictionary #17

Merged
ayoub merged 1 commit from feature/i18n into dev 2026-06-11 17:07:51 +00:00
Owner
  • lightweight, dependency-free i18n: typed fr/en dictionaries (fr is the source
    of truth, en must match its shape → compile error on drift), I18nProvider +
    useI18n hook, browser detection + localStorage persistence
  • FR/EN language switcher (home + room header)
  • translated the whole player-facing flow: home, join, pseudo, room shell,
    lobby (incl. settings, categories, bots, track submission, history),
    quiz, blindtest, player-cards, round transitions, end screen (podium, awards,
    tracks, rounds recap), and server-error messages (mapped by code)
  • history dates localized to the active language

Content (questions/categories) intentionally left as-is. Back-office (admin)
not translated yet — internal, token-gated tool.

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

- lightweight, dependency-free i18n: typed fr/en dictionaries (fr is the source of truth, en must match its shape → compile error on drift), I18nProvider + useI18n hook, browser detection + localStorage persistence - FR/EN language switcher (home + room header) - translated the whole player-facing flow: home, join, pseudo, room shell, lobby (incl. settings, categories, bots, track submission, history), quiz, blindtest, player-cards, round transitions, end screen (podium, awards, tracks, rounds recap), and server-error messages (mapped by code) - history dates localized to the active language Content (questions/categories) intentionally left as-is. Back-office (admin) not translated yet — internal, token-gated tool. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ayoub self-assigned this 2026-06-11 17:07:41 +00:00
ayoub added 1 commit 2026-06-11 17:07:41 +00:00
- lightweight, dependency-free i18n: typed fr/en dictionaries (fr is the source
  of truth, en must match its shape → compile error on drift), I18nProvider +
  useI18n hook, browser detection + localStorage persistence
- FR/EN language switcher (home + room header)
- translated the whole player-facing flow: home, join, pseudo, room shell,
  lobby (incl. settings, categories, bots, track submission, history),
  quiz, blindtest, player-cards, round transitions, end screen (podium, awards,
  tracks, rounds recap), and server-error messages (mapped by code)
- history dates localized to the active language

Content (questions/categories) intentionally left as-is. Back-office (admin)
not translated yet — internal, token-gated tool.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ayoub merged commit 5d113e1d37 into dev 2026-06-11 17:07:51 +00:00
ayoub deleted branch feature/i18n 2026-06-11 17:07:51 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: ayoub/nerdware#17
No description provided.