1.1 KiB
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.ownershipin 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_foundsession_not_joinable -> join_failedround_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