mirror of https://github.com/django/django.git
Refs #25933 -- Fixed i18n_patterns() prefix_default_language=False with HTTP_ACCEPT_LANGUAGE header.
This commit is contained in:
parent
34c56687ae
commit
85a4844f8a
|
@ -22,7 +22,8 @@ class LocaleMiddleware(object):
|
||||||
urlconf = getattr(request, 'urlconf', settings.ROOT_URLCONF)
|
urlconf = getattr(request, 'urlconf', settings.ROOT_URLCONF)
|
||||||
i18n_patterns_used, prefixed_default_language = is_language_prefix_patterns_used(urlconf)
|
i18n_patterns_used, prefixed_default_language = is_language_prefix_patterns_used(urlconf)
|
||||||
language = translation.get_language_from_request(request, check_path=i18n_patterns_used)
|
language = translation.get_language_from_request(request, check_path=i18n_patterns_used)
|
||||||
if not language and i18n_patterns_used and not prefixed_default_language:
|
language_from_path = translation.get_language_from_path(request.path_info)
|
||||||
|
if not language_from_path and i18n_patterns_used and not prefixed_default_language:
|
||||||
language = settings.LANGUAGE_CODE
|
language = settings.LANGUAGE_CODE
|
||||||
translation.activate(language)
|
translation.activate(language)
|
||||||
request.LANGUAGE_CODE = translation.get_language()
|
request.LANGUAGE_CODE = translation.get_language()
|
||||||
|
@ -33,9 +34,6 @@ class LocaleMiddleware(object):
|
||||||
urlconf = getattr(request, 'urlconf', settings.ROOT_URLCONF)
|
urlconf = getattr(request, 'urlconf', settings.ROOT_URLCONF)
|
||||||
i18n_patterns_used, prefixed_default_language = is_language_prefix_patterns_used(urlconf)
|
i18n_patterns_used, prefixed_default_language = is_language_prefix_patterns_used(urlconf)
|
||||||
|
|
||||||
if not language_from_path and i18n_patterns_used and not prefixed_default_language:
|
|
||||||
language_from_path = settings.LANGUAGE_CODE
|
|
||||||
|
|
||||||
if response.status_code == 404 and not language_from_path and i18n_patterns_used:
|
if response.status_code == 404 and not language_from_path and i18n_patterns_used:
|
||||||
language_path = '/%s%s' % (language, request.path_info)
|
language_path = '/%s%s' % (language, request.path_info)
|
||||||
path_valid = is_valid_path(language_path, urlconf)
|
path_valid = is_valid_path(language_path, urlconf)
|
||||||
|
|
|
@ -1808,6 +1808,10 @@ class UnprefixedDefaultLanguageTests(SimpleTestCase):
|
||||||
response = self.client.get('/fr/simple/')
|
response = self.client.get('/fr/simple/')
|
||||||
self.assertEqual(response.content, b'Oui')
|
self.assertEqual(response.content, b'Oui')
|
||||||
|
|
||||||
|
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_unexpected_kwarg_to_i18n_patterns(self):
|
def test_unexpected_kwarg_to_i18n_patterns(self):
|
||||||
with self.assertRaisesMessage(AssertionError, "Unexpected kwargs for i18n_patterns(): {'foo':"):
|
with self.assertRaisesMessage(AssertionError, "Unexpected kwargs for i18n_patterns(): {'foo':"):
|
||||||
i18n_patterns(object(), foo='bar')
|
i18n_patterns(object(), foo='bar')
|
||||||
|
|
Loading…
Reference in New Issue