Files
weirsoe-party-protocol/docs/ISSUE-226-SHARED-KEYMAP-LOCALE-CONTRACT.md
Asger Geel Weirsoee cd6fb06343
All checks were successful
CI / test-and-quality (push) Successful in 3m41s
CI / test-and-quality (pull_request) Successful in 3m17s
feat(issue-226): add shared backend-frontend key-map and locale contract
2026-03-01 22:14:08 +00:00

1.1 KiB

ISSUE-226 — Shared key-map + locale-kontrakt (backend/frontend)

Source of truth

  • Single shared artifact: shared/i18n/lobby.json
  • Ownership is documented under contract.ownership in the same artifact.

Locale contract

Defined under contract.locale:

  • default locale: en
  • supported locales: en, da
  • fallback rule: use default locale when requested locale is unsupported or a key translation is missing.

Shared backend→frontend key-map

Defined under contract.backend_to_frontend_error_keys.

Examples:

  • session_not_found -> session_not_found
  • session_not_joinable -> join_failed
  • round_start_invalid_phase -> start_round_failed

This allows backend error codes to remain stable while frontend copy keys stay UX-oriented.

da/en example values

From shared/i18n/lobby.json:

  • frontend.errors.session_code_required.en = "Session code is required."
  • frontend.errors.session_code_required.da = "Sessionskoden er påkrævet."

Verification

  • Backend: python manage.py test lobby.tests.I18nResolverTests
  • Frontend: npm test -- --run tests/lobby-i18n.contract.test.ts