diff options
| author | Claude Paroz <claude@2xlibre.net> | 2016-01-06 18:33:29 +0100 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2016-01-06 20:34:45 +0100 |
| commit | 61437dd0a0a2592430ca912706524ffc0226f780 (patch) | |
| tree | 2b7fbbc8c932f207464ef2c4cf4a48dfb65ab669 | |
| parent | 7688089e0fea41a1acf71a33de82fa1b63fa8be4 (diff) | |
[1.8.x] Fixed #26046 -- Fixed a crash with translations and Django-unknown language code
Thanks Jens Lundstrom for the report and Tim Graham for the review.
Backport of 632a9f21bc from master.
| -rw-r--r-- | django/utils/translation/trans_real.py | 3 | ||||
| -rw-r--r-- | docs/releases/1.8.9.txt | 3 | ||||
| -rw-r--r-- | tests/i18n/tests.py | 4 |
3 files changed, 10 insertions, 0 deletions
diff --git a/django/utils/translation/trans_real.py b/django/utils/translation/trans_real.py index aa50c02fb2..8aa8f4e995 100644 --- a/django/utils/translation/trans_real.py +++ b/django/utils/translation/trans_real.py @@ -121,6 +121,9 @@ class DjangoTranslation(gettext_module.GNUTranslations): # default lang should have at least one translation file available. raise IOError("No translation files found for default language %s." % settings.LANGUAGE_CODE) self._add_fallback() + if self._catalog is None: + # No catalogs found for this language, set an empty catalog. + self._catalog = {} def __repr__(self): return "<DjangoTranslation lang:%s>" % self.__language diff --git a/docs/releases/1.8.9.txt b/docs/releases/1.8.9.txt index be3b719b1e..823bd9b3eb 100644 --- a/docs/releases/1.8.9.txt +++ b/docs/releases/1.8.9.txt @@ -11,3 +11,6 @@ Bugfixes * Fixed a regression that caused the "user-tools" items to display on the admin's logout page (:ticket:`26035`). + +* Fixed a crash in the translations system when the current language has no + translations (:ticket:`26046`). diff --git a/tests/i18n/tests.py b/tests/i18n/tests.py index 9a20ba5d32..715057844f 100644 --- a/tests/i18n/tests.py +++ b/tests/i18n/tests.py @@ -1273,6 +1273,10 @@ class TestLanguageInfo(TestCase): def test_unknown_language_code(self): six.assertRaisesRegex(self, KeyError, r"Unknown language code xx\.", get_language_info, 'xx') + with translation.override('xx'): + # A language with no translation catalogs should fallback to the + # untranslated string. + self.assertEqual(ugettext("Title"), "Title") def test_unknown_only_country_code(self): li = get_language_info('de-xx') |
