Files
weirsoe-party-protocol/docs/ISSUE-205-I18N-FOUNDATION.md
DEV-bot 9e47a3a139
All checks were successful
CI / test-and-quality (push) Successful in 2m21s
CI / test-and-quality (pull_request) Successful in 2m21s
feat(i18n): add da/en locale pipeline and shared backend key resolver
2026-03-01 18:57:45 +00:00

1.2 KiB

Issue #205 — Django i18n foundation (da/en)

Implemented acceptance checks

  • Django i18n setup for en + da with en fallback
    • LANGUAGE_CODE set to en.
    • LANGUAGES = [('en', 'English'), ('da', 'Danish')].
    • LocaleMiddleware enabled in middleware chain.
  • Shared-key resolver/adapter (no ad hoc backend mapping)
    • Backend error responses now resolve from shared catalog keys in shared/i18n/lobby.json.
    • lobby.i18n.api_error() accepts a shared key and resolves locale-specific text.
  • Representative API flow documented with key/locale behavior
    • POST /lobby/join with empty code returns:
      • error_code: "session_code_required"
      • localized error
      • resolved locale
  • Missing key handling deterministic and loggable
    • resolve_error_message() returns key string when key/translation is missing.
    • Warning is logged (lobby.i18n logger) for missing key/translation.

Example response behavior

Request

POST /lobby/join with empty code and header Accept-Language: da

Response (400)

{
  "error": "Sessionskode er påkrævet",
  "error_code": "session_code_required",
  "locale": "da"
}

If locale is unsupported (e.g. fr), response uses locale: "en" and English message.