summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHonza Král <Honza.Kral@gmail.com>2013-02-23 08:30:27 -0800
committerHonza Král <Honza.Kral@gmail.com>2013-02-23 08:30:27 -0800
commit0ad76843b5032af52022adff7b676db633ce8b7e (patch)
tree32ff18123f3405fa1fa1cf4963ab8e8aa79b49a8
parentf3ae67a62f5bdcee892f19667967e8738f734908 (diff)
parent6bd6a568960e9ddebd78da8e008b235b3b76c5a2 (diff)
Merge pull request #777 from khalas/ticket_19811
Fixed #19811 - Added language code fallback in get_language_info
-rw-r--r--django/utils/translation/__init__.py6
-rw-r--r--tests/regressiontests/i18n/tests.py15
2 files changed, 21 insertions, 0 deletions
diff --git a/django/utils/translation/__init__.py b/django/utils/translation/__init__.py
index 6fd52b6023..4645f142ce 100644
--- a/django/utils/translation/__init__.py
+++ b/django/utils/translation/__init__.py
@@ -187,4 +187,10 @@ def get_language_info(lang_code):
try:
return LANG_INFO[lang_code]
except KeyError:
+ if '-' in lang_code:
+ splited_lang_code = lang_code.split('-')[0]
+ try:
+ return LANG_INFO[splited_lang_code]
+ except KeyError:
+ raise KeyError("Unknown language code %r and %r." % (lang_code, splited_lang_code))
raise KeyError("Unknown language code %r." % lang_code)
diff --git a/tests/regressiontests/i18n/tests.py b/tests/regressiontests/i18n/tests.py
index 3fcb60c3b7..9e79f35d74 100644
--- a/tests/regressiontests/i18n/tests.py
+++ b/tests/regressiontests/i18n/tests.py
@@ -956,6 +956,21 @@ class TestLanguageInfo(TestCase):
self.assertEqual(li['name'], 'German')
self.assertEqual(li['bidi'], False)
+ def test_unknown_language_code(self):
+ with self.assertRaisesRegexp(KeyError, "Unknown language code u\'xx\'."):
+ get_language_info('xx')
+
+ def test_unknown_only_country_code(self):
+ li = get_language_info('de-xx')
+ self.assertEqual(li['code'], 'de')
+ self.assertEqual(li['name_local'], 'Deutsch')
+ self.assertEqual(li['name'], 'German')
+ self.assertEqual(li['bidi'], False)
+
+ def test_unknown_language_code_and_country_code(self):
+ with self.assertRaisesRegexp(KeyError, "Unknown language code u\'xx-xx\' and u\'xx\'."):
+ get_language_info('xx-xx')
+
class MultipleLocaleActivationTests(TestCase):
"""