Fixed #19811 - Added language code fallback in get_language_info.

This commit is contained in:
Konrad Hałas 2013-02-23 17:02:07 +01:00
parent 5278776a88
commit 6bd6a56896
2 changed files with 21 additions and 0 deletions

View File

@ -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 File

@ -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):
"""