diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py index 28d20127c8..419b3809e7 100644 --- a/django/utils/translation/trans_real.py +++ b/django/utils/translation/trans_real.py @@ -38,7 +38,7 @@ accept_language_re = re.compile(r''' (?:\s*,\s*|$) # Multiple accepts per header. ''', re.VERBOSE) -language_code_prefix_re = re.compile(r'^/([\w-]+)/') +language_code_prefix_re = re.compile(r'^/([\w-]+)(/|$)') def to_locale(language, to_lower=False): """ diff --git a/tests/regressiontests/i18n/tests.py b/tests/regressiontests/i18n/tests.py index 77bd35bab1..27b25468d4 100644 --- a/tests/regressiontests/i18n/tests.py +++ b/tests/regressiontests/i18n/tests.py @@ -793,6 +793,18 @@ class MiscTests(TestCase): r.META = {'HTTP_ACCEPT_LANGUAGE': 'de'} self.assertEqual(g(r), 'zh-cn') + def test_get_language_from_path(self): + from django.utils.translation.trans_real import get_language_from_path as g + self.assertEqual(g('/pl/'), 'pl') + self.assertEqual(g('/pl'), 'pl') + self.assertEqual(g('/xyz/'), None) + + def test_get_language_from_path(self): + from django.utils.translation.trans_null import get_language_from_path as g + self.assertEqual(g('/pl/'), None) + self.assertEqual(g('/pl'), None) + self.assertEqual(g('/xyz/'), None) + def test_percent_in_translatable_block(self): extended_locale_paths = settings.LOCALE_PATHS + ( os.path.join(here, 'other', 'locale'),