mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
Fixed #34515 -- Made LocaleMiddleware prefer language from paths when i18n patterns are used.
Regression in94e7f471c4. This reverts commit94e7f471c4(refs #34069) and partly reverts commit3b4728310a. Thanks Anthony Baillard for the report. Co-Authored-By: Sarah Boyce <42296566+sarahboyce@users.noreply.github.com>
This commit is contained in:
@@ -431,6 +431,27 @@ class URLResponseTests(URLTestCaseBase):
|
||||
self.assertEqual(response.context["LANGUAGE_CODE"], "nl")
|
||||
|
||||
|
||||
@override_settings(ROOT_URLCONF="i18n.urls_default_unprefixed", LANGUAGE_CODE="nl")
|
||||
class URLPrefixedFalseTranslatedTests(URLTestCaseBase):
|
||||
def test_translated_path_unprefixed_language_other_than_accepted_header(self):
|
||||
response = self.client.get("/gebruikers/", headers={"accept-language": "en"})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_translated_path_unprefixed_language_other_than_cookie_language(self):
|
||||
self.client.cookies.load({settings.LANGUAGE_COOKIE_NAME: "en"})
|
||||
response = self.client.get("/gebruikers/")
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_translated_path_prefixed_language_other_than_accepted_header(self):
|
||||
response = self.client.get("/en/users/", headers={"accept-language": "nl"})
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_translated_path_prefixed_language_other_than_cookie_language(self):
|
||||
self.client.cookies.load({settings.LANGUAGE_COOKIE_NAME: "nl"})
|
||||
response = self.client.get("/en/users/")
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
class URLRedirectWithScriptAliasTests(URLTestCaseBase):
|
||||
"""
|
||||
#21579 - LocaleMiddleware should respect the script prefix.
|
||||
|
||||
@@ -1926,22 +1926,8 @@ class UnprefixedDefaultLanguageTests(SimpleTestCase):
|
||||
response = self.client.get("/fr/simple/")
|
||||
self.assertEqual(response.content, b"Oui")
|
||||
|
||||
def test_unprefixed_language_with_accept_language(self):
|
||||
"""'Accept-Language' is respected."""
|
||||
response = self.client.get("/simple/", headers={"accept-language": "fr"})
|
||||
self.assertRedirects(response, "/fr/simple/")
|
||||
|
||||
def test_unprefixed_language_with_cookie_language(self):
|
||||
"""A language set in the cookies is respected."""
|
||||
self.client.cookies.load({settings.LANGUAGE_COOKIE_NAME: "fr"})
|
||||
response = self.client.get("/simple/")
|
||||
self.assertRedirects(response, "/fr/simple/")
|
||||
|
||||
def test_unprefixed_language_with_non_valid_language(self):
|
||||
response = self.client.get("/simple/", headers={"accept-language": "fi"})
|
||||
self.assertEqual(response.content, b"Yes")
|
||||
self.client.cookies.load({settings.LANGUAGE_COOKIE_NAME: "fi"})
|
||||
response = self.client.get("/simple/")
|
||||
def test_unprefixed_language_other_than_accept_language(self):
|
||||
response = self.client.get("/simple/", HTTP_ACCEPT_LANGUAGE="fr")
|
||||
self.assertEqual(response.content, b"Yes")
|
||||
|
||||
def test_page_with_dash(self):
|
||||
@@ -2017,7 +2003,10 @@ class CountrySpecificLanguageTests(SimpleTestCase):
|
||||
|
||||
def test_get_language_from_request_null(self):
|
||||
lang = trans_null.get_language_from_request(None)
|
||||
self.assertEqual(lang, None)
|
||||
self.assertEqual(lang, "en")
|
||||
with override_settings(LANGUAGE_CODE="de"):
|
||||
lang = trans_null.get_language_from_request(None)
|
||||
self.assertEqual(lang, "de")
|
||||
|
||||
def test_specific_language_codes(self):
|
||||
# issue 11915
|
||||
|
||||
@@ -7,5 +7,6 @@ urlpatterns = i18n_patterns(
|
||||
re_path(r"^(?P<arg>[\w-]+)-page", lambda request, **arg: HttpResponse(_("Yes"))),
|
||||
path("simple/", lambda r: HttpResponse(_("Yes"))),
|
||||
re_path(r"^(.+)/(.+)/$", lambda *args: HttpResponse()),
|
||||
re_path(_(r"^users/$"), lambda *args: HttpResponse(), name="users"),
|
||||
prefix_default_language=False,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user