fix(issue-225): honor Accept-Language fallback chain in locale resolver
All checks were successful
CI / test-and-quality (push) Successful in 3m2s
CI / test-and-quality (pull_request) Successful in 3m15s

This commit is contained in:
2026-03-02 00:31:42 +00:00
parent 7a3d649e11
commit a0a1424e90
2 changed files with 30 additions and 4 deletions

View File

@@ -37,10 +37,14 @@ def lobby_i18n_error_messages() -> dict:
def resolve_locale(request: HttpRequest) -> str:
default_locale, supported_locales = i18n_locale_config()
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
accept_language = request.META.get("HTTP_ACCEPT_LANGUAGE") or ""
for candidate in accept_language.split(","):
tag, _sep, quality = candidate.partition(";")
if "q=0" in quality.replace(" ", ""):
continue
normalized = tag.strip().replace("_", "-").split("-", 1)[0].lower()
if normalized in supported_locales:
return normalized
requested = (get_language_from_request(request) or "").replace("_", "-").split("-", 1)[0].lower()
if requested in supported_locales: