Merge pull request '[MVP][READY] #225 Backend i18n baseline (resolver + fallback)' (#237) from feat/issue-225-backend-i18n-baseline into main
All checks were successful
CI / test-and-quality (push) Successful in 2m45s
All checks were successful
CI / test-and-quality (push) Successful in 2m45s
This commit was merged in pull request #237.
This commit is contained in:
@@ -36,7 +36,13 @@ def lobby_i18n_error_messages() -> dict:
|
|||||||
|
|
||||||
def resolve_locale(request: HttpRequest) -> str:
|
def resolve_locale(request: HttpRequest) -> str:
|
||||||
default_locale, supported_locales = i18n_locale_config()
|
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:
|
if requested in supported_locales:
|
||||||
return requested
|
return requested
|
||||||
return default_locale
|
return default_locale
|
||||||
|
|||||||
@@ -1263,6 +1263,17 @@ class I18nResolverTests(TestCase):
|
|||||||
self.assertEqual(response.status_code, 400)
|
self.assertEqual(response.status_code, 400)
|
||||||
self.assertEqual(resolve_locale(response.wsgi_request), "da")
|
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):
|
def test_resolve_locale_defaults_to_en_when_header_missing(self):
|
||||||
response = self.client.post(
|
response = self.client.post(
|
||||||
reverse("lobby:join_session"),
|
reverse("lobby:join_session"),
|
||||||
|
|||||||
Reference in New Issue
Block a user