Fixed #33078 -- Added support for language regions in i18n_patterns().

This commit is contained in:
Maxim Piskunov 2021-11-18 00:25:51 +03:00 committed by Mariusz Felisiak
parent 4f7bbc6138
commit d3f4c2b95d
3 changed files with 13 additions and 4 deletions

View File

@ -43,7 +43,7 @@ language_code_re = _lazy_re_compile(
re.IGNORECASE
)
language_code_prefix_re = _lazy_re_compile(r'^/(\w+([@-]\w+)?)(/|$)')
language_code_prefix_re = _lazy_re_compile(r'^/(\w+([@-]\w+){0,2})(/|$)')
@receiver(setting_changed)

View File

@ -183,7 +183,8 @@ Generic Views
Internationalization
~~~~~~~~~~~~~~~~~~~~
* ...
* The :func:`~django.conf.urls.i18n.i18n_patterns` function now supports
languages with both scripts and regions.
Logging
~~~~~~~

View File

@ -1593,11 +1593,15 @@ class MiscTests(SimpleTestCase):
@override_settings(
LANGUAGES=[
('en', 'English'),
('en-latn-us', 'Latin English'),
('en-Latn-US', 'BCP 47 case format'),
('de', 'German'),
('de-1996', 'German, orthography of 1996'),
('de-at', 'Austrian German'),
('de-ch-1901', 'German, Swiss variant, traditional orthography'),
('i-mingo', 'Mingo'),
('kl-tunumiit', 'Tunumiisiut'),
('nan-hani-tw', 'Hanji'),
('pl', 'Polish'),
],
)
@ -1609,13 +1613,17 @@ class MiscTests(SimpleTestCase):
('/xyz/', None),
('/en/', 'en'),
('/en-gb/', 'en'),
('/en-latn-us/', 'en-latn-us'),
('/en-Latn-US/', 'en-Latn-US'),
('/de/', 'de'),
('/de-1996/', 'de-1996'),
('/de-at/', 'de-at'),
('/de-ch/', 'de'),
('/de-simple-page/', None),
('/de-ch-1901/', 'de-ch-1901'),
('/de-simple-page-test/', None),
('/i-mingo/', 'i-mingo'),
('/kl-tunumiit/', 'kl-tunumiit'),
('/nan-hani-tw/', 'nan-hani-tw'),
]
for path, language in tests:
with self.subTest(path=path):
@ -1824,7 +1832,7 @@ class UnprefixedDefaultLanguageTests(SimpleTestCase):
def test_page_with_dash(self):
# A page starting with /de* shouldn't match the 'de' language code.
response = self.client.get('/de-simple-page/')
response = self.client.get('/de-simple-page-test/')
self.assertEqual(response.content, b'Yes')
def test_no_redirect_on_404(self):