diff options
| author | Zainab Amir <zainab.amir@arbisoft.com> | 2022-06-16 00:11:36 +0500 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-06-20 07:40:28 +0200 |
| commit | 901a1691982cab76349d33e51b72c40120ec927a (patch) | |
| tree | ac670167b8e27d48d09575427dd922e80ed99caf /django/utils | |
| parent | d19a53d8e3640e8f937048bf7826c7e2229a9665 (diff) | |
Fixed #23689 -- Made parsing HTTP Accept-Language header case-insensitive.
Thank you Daniel Samuels for test project.
Diffstat (limited to 'django/utils')
| -rw-r--r-- | django/utils/translation/trans_null.py | 2 | ||||
| -rw-r--r-- | django/utils/translation/trans_real.py | 5 |
2 files changed, 4 insertions, 3 deletions
diff --git a/django/utils/translation/trans_null.py b/django/utils/translation/trans_null.py index a687572b69..c8bfb1256e 100644 --- a/django/utils/translation/trans_null.py +++ b/django/utils/translation/trans_null.py @@ -61,7 +61,7 @@ def get_language_from_path(request): def get_supported_language_variant(lang_code, strict=False): - if lang_code == settings.LANGUAGE_CODE: + if lang_code and lang_code.lower() == settings.LANGUAGE_CODE.lower(): return lang_code else: raise LookupError(lang_code) diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py index 7c81e8bee2..423f30eaba 100644 --- a/django/utils/translation/trans_real.py +++ b/django/utils/translation/trans_real.py @@ -478,8 +478,9 @@ def check_for_language(lang_code): def get_languages(): """ Cache of settings.LANGUAGES in a dictionary for easy lookups by key. + Convert keys to lowercase as they should be treated as case-insensitive. """ - return dict(settings.LANGUAGES) + return {key.lower(): value for key, value in dict(settings.LANGUAGES).items()} @functools.lru_cache(maxsize=1000) @@ -510,7 +511,7 @@ def get_supported_language_variant(lang_code, strict=False): supported_lang_codes = get_languages() for code in possible_lang_codes: - if code in supported_lang_codes and check_for_language(code): + if code.lower() in supported_lang_codes and check_for_language(code): return code if not strict: # if fr-fr is not supported, try fr-ca. |
