Skip to content

Commit 3b47283

Browse files
sarahboycefelixxm
authored andcommitted
Fixed #34455 -- Restored i18n_patterns() respect of prefix_default_language argument when fallback language is used.
Regression in 94e7f47. Thanks Oussama Jarrousse for the report.
1 parent 2eb1f37 commit 3b47283

File tree

4 files changed

+14
-2
lines changed

4 files changed

+14
-2
lines changed

django/urls/resolvers.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
from django.utils.functional import cached_property
2424
from django.utils.http import RFC3986_SUBDELIMS, escape_leading_slashes
2525
from django.utils.regex_helper import _lazy_re_compile, normalize
26-
from django.utils.translation import get_language
26+
from django.utils.translation import get_language, get_supported_language_variant
2727

2828
from .converters import get_converter
2929
from .exceptions import NoReverseMatch, Resolver404
@@ -351,7 +351,8 @@ def regex(self):
351351
@property
352352
def language_prefix(self):
353353
language_code = get_language() or settings.LANGUAGE_CODE
354-
if language_code == settings.LANGUAGE_CODE and not self.prefix_default_language:
354+
default_language = get_supported_language_variant(settings.LANGUAGE_CODE)
355+
if language_code == default_language and not self.prefix_default_language:
355356
return ""
356357
else:
357358
return "%s/" % language_code

django/utils/translation/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"get_language_from_request",
1818
"get_language_info",
1919
"get_language_bidi",
20+
"get_supported_language_variant",
2021
"check_for_language",
2122
"to_language",
2223
"to_locale",

docs/releases/4.2.1.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,7 @@ Bugfixes
2525

2626
* Enforced UTF-8 client encoding on PostgreSQL, following a regression in
2727
Django 4.2 (:ticket:`34470`).
28+
29+
* Fixed a regression in Django 4.2 where ``i18n_patterns()`` didn't respect the
30+
``prefix_default_language`` argument when a fallback language of the default
31+
language was used (:ticket:`34455`).

tests/i18n/tests.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1916,6 +1916,12 @@ def test_default_lang_without_prefix(self):
19161916
response = self.client.get("/simple/")
19171917
self.assertEqual(response.content, b"Yes")
19181918

1919+
@override_settings(LANGUAGE_CODE="en-us")
1920+
def test_default_lang_fallback_without_prefix(self):
1921+
response = self.client.get("/simple/")
1922+
self.assertEqual(response.status_code, 200)
1923+
self.assertEqual(response.content, b"Yes")
1924+
19191925
def test_other_lang_with_prefix(self):
19201926
response = self.client.get("/fr/simple/")
19211927
self.assertEqual(response.content, b"Oui")

0 commit comments

Comments
 (0)