[MVP][READY] #225 Backend i18n baseline (resolver + fallback) #237

Merged
integrator-bot merged 1 commits from feat/issue-225-backend-i18n-baseline into main 2026-03-02 00:36:17 +01:00
2 changed files with 18 additions and 1 deletions
Showing only changes of commit 7a3d649e11 - Show all commits

View File

@@ -36,7 +36,13 @@ def lobby_i18n_error_messages() -> dict:
def resolve_locale(request: HttpRequest) -> str:
default_locale, supported_locales = i18n_locale_config()
requested = (get_language_from_request(request) or "").split("-", 1)[0].lower()
raw_accept_language = (request.META.get("HTTP_ACCEPT_LANGUAGE") or "").split(",", 1)[0]
raw_requested = raw_accept_language.split(";", 1)[0].strip().replace("_", "-").split("-", 1)[0].lower()
if raw_requested in supported_locales:
return raw_requested
requested = (get_language_from_request(request) or "").replace("_", "-").split("-", 1)[0].lower()
if requested in supported_locales:
return requested
return default_locale

View File

@@ -1263,6 +1263,17 @@ class I18nResolverTests(TestCase):
self.assertEqual(response.status_code, 400)
self.assertEqual(resolve_locale(response.wsgi_request), "da")
def test_resolve_locale_accepts_underscore_language_tags(self):
response = self.client.post(
reverse("lobby:join_session"),
data={"code": "", "nickname": "Luna"},
content_type="application/json",
HTTP_ACCEPT_LANGUAGE="da_DK",
)
self.assertEqual(response.status_code, 400)
self.assertEqual(resolve_locale(response.wsgi_request), "da")
def test_resolve_locale_defaults_to_en_when_header_missing(self):
response = self.client.post(
reverse("lobby:join_session"),