Commit c0df8d1b authored by Claude Paroz's avatar Claude Paroz
Browse files

[1.8.x] Fixed #24413 -- Prevented translation fallback for English

Thanks Tomasz Kontusz for the report, Baptiste Mispelon for
analysis and Tim Graham for the review.
Backport of 3cf1c026 from master.
parent 5a3b5937
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -176,11 +176,9 @@ class DjangoTranslation(gettext_module.GNUTranslations):

    def _add_fallback(self):
        """Sets the GNUTranslations() fallback with the default language."""
        # Don't set a fallback for the default language or for
        # en-us (as it's empty, so it'll ALWAYS fall back to the default
        # language; found this as part of #21498, as we set en-us for
        # management commands)
        if self.__language == settings.LANGUAGE_CODE or self.__language == "en-us":
        # Don't set a fallback for the default language or any English variant
        # (as it's empty, so it'll ALWAYS fall back to the default language)
        if self.__language == settings.LANGUAGE_CODE or self.__language.startswith('en'):
            return
        default_translation = translation(settings.LANGUAGE_CODE)
        self.add_fallback(default_translation)
+15 −0
Original line number Diff line number Diff line
@@ -901,6 +901,21 @@ class MiscTests(TestCase):
        super(MiscTests, self).setUp()
        self.rf = RequestFactory()

    @override_settings(LANGUAGE_CODE='de')
    def test_english_fallback(self):
        """
        With a non-English LANGUAGE_CODE and if the active language is English
        or one of its variants, the untranslated string should be returned
        (instead of falling back to LANGUAGE_CODE) (See #24413).
        """
        self.assertEqual(ugettext("Image"), "Bild")
        with translation.override('en'):
            self.assertEqual(ugettext("Image"), "Image")
        with translation.override('en-us'):
            self.assertEqual(ugettext("Image"), "Image")
        with translation.override('en-ca'):
            self.assertEqual(ugettext("Image"), "Image")

    def test_parse_spec_http_header(self):
        """
        Testing HTTP header parsing. First, we test that we can parse the