summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2016-01-06 18:33:29 +0100
committerClaude Paroz <claude@2xlibre.net>2016-01-06 20:34:45 +0100
commit61437dd0a0a2592430ca912706524ffc0226f780 (patch)
tree2b7fbbc8c932f207464ef2c4cf4a48dfb65ab669
parent7688089e0fea41a1acf71a33de82fa1b63fa8be4 (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.py3
-rw-r--r--docs/releases/1.8.9.txt3
-rw-r--r--tests/i18n/tests.py4
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')