Browse files

Merge pull request #777 from khalas/ticket_19811

Fixed #19811 - Added language code fallback in get_language_info
  • Loading branch information...
2 parents f3ae67a + 6bd6a56 commit 0ad76843b5032af52022adff7b676db633ce8b7e @HonzaKral HonzaKral committed Feb 23, 2013
Showing with 21 additions and 0 deletions.
  1. +6 −0 django/utils/translation/__init__.py
  2. +15 −0 tests/regressiontests/i18n/tests.py
View
6 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)
View
15 tests/regressiontests/i18n/tests.py
@@ -956,6 +956,21 @@ def test_localized_language_info(self):
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):
"""

0 comments on commit 0ad7684

Please sign in to comment.