diff options
| author | Honza Král <Honza.Kral@gmail.com> | 2013-02-23 08:30:27 -0800 |
|---|---|---|
| committer | Honza Král <Honza.Kral@gmail.com> | 2013-02-23 08:30:27 -0800 |
| commit | 0ad76843b5032af52022adff7b676db633ce8b7e (patch) | |
| tree | 32ff18123f3405fa1fa1cf4963ab8e8aa79b49a8 | |
| parent | f3ae67a62f5bdcee892f19667967e8738f734908 (diff) | |
| parent | 6bd6a568960e9ddebd78da8e008b235b3b76c5a2 (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__.py | 6 | ||||
| -rw-r--r-- | tests/regressiontests/i18n/tests.py | 15 |
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): """ |
