1
0
mirror of https://github.com/django/django.git synced 2025-10-27 15:46:10 +00:00

Fixes #19919: get_language_from_request() disregards "en-us" and "en" languages

when matching Accept-Language
This commit is contained in:
Łukasz Langa
2013-05-18 14:37:04 +02:00
parent 90f1170bb9
commit 92ebb29c53
2 changed files with 54 additions and 13 deletions

View File

@@ -30,7 +30,8 @@ from django.utils.translation import (activate, deactivate,
ngettext, ngettext_lazy,
ungettext, ungettext_lazy,
pgettext, pgettext_lazy,
npgettext, npgettext_lazy)
npgettext, npgettext_lazy,
check_for_language)
from .commands.tests import can_run_extraction_tests, can_run_compilation_tests
if can_run_extraction_tests:
@@ -1114,3 +1115,40 @@ class LocaleMiddlewareTests(TestCase):
self.assertContains(response, "Oui/Non")
response = self.client.get('/en/streaming/')
self.assertContains(response, "Yes/No")
@override_settings(
USE_I18N=True,
LANGUAGES=(
('bg', 'Bulgarian'),
('en-us', 'English'),
),
MIDDLEWARE_CLASSES=(
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
),
)
class CountrySpecificLanguageTests(TestCase):
urls = 'i18n.urls'
def setUp(self):
trans_real._accepted = {}
self.rf = RequestFactory()
def test_check_for_language(self):
self.assertTrue(check_for_language('en'))
self.assertTrue(check_for_language('en-us'))
self.assertTrue(check_for_language('en-US'))
def test_get_language_from_request(self):
r = self.rf.get('/')
r.COOKIES = {}
r.META = {'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8,bg;q=0.6,ru;q=0.4'}
lang = get_language_from_request(r)
self.assertEqual('en-us', lang)
r = self.rf.get('/')
r.COOKIES = {}
r.META = {'HTTP_ACCEPT_LANGUAGE': 'bg-bg,en-US;q=0.8,en;q=0.6,ru;q=0.4'}
lang = get_language_from_request(r)
self.assertEqual('bg', lang)