Loading django/templatetags/i18n.py +1 −1 Original line number Diff line number Diff line Loading @@ -148,7 +148,7 @@ class BlockTranslateNode(Node): context.pop() try: result = result % data except KeyError: except (KeyError, ValueError): with translation.override(None): result = self.render(context) return result Loading tests/regressiontests/i18n/other/locale/fr/LC_MESSAGES/django.mo +74 B (528 B) File changed.No diff preview for this file type. View original file View changed file tests/regressiontests/i18n/other/locale/fr/LC_MESSAGES/django.po +6 −0 Original line number Diff line number Diff line Loading @@ -17,5 +17,11 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: template.html:3 # Note: Intentional: variable name is translated. msgid "My name is %(person)s." msgstr "Mon nom est %(personne)s." #: template.html:3 # Note: Intentional: the variable name is badly formatted (missing 's' at the end) msgid "My other name is %(person)s." msgstr "Mon autre nom est %(person)." No newline at end of file tests/regressiontests/i18n/tests.py +15 −1 Original line number Diff line number Diff line Loading @@ -270,10 +270,11 @@ class TranslationTests(TestCase): self.assertEqual(to_language('sr_Lat'), 'sr-lat') @override_settings(LOCALE_PATHS=(os.path.join(here, 'other', 'locale'),)) def test_bad_placeholder(self): def test_bad_placeholder_1(self): """ Error in translation file should not crash template rendering (%(person)s is translated as %(personne)s in fr.po) Refs #16516. """ from django.template import Template, Context with translation.override('fr'): Loading @@ -281,6 +282,19 @@ class TranslationTests(TestCase): rendered = t.render(Context({'person': 'James'})) self.assertEqual(rendered, 'My name is James.') @override_settings(LOCALE_PATHS=(os.path.join(here, 'other', 'locale'),)) def test_bad_placeholder_2(self): """ Error in translation file should not crash template rendering (%(person) misses a 's' in fr.po, causing the string formatting to fail) Refs #18393. """ from django.template import Template, Context with translation.override('fr'): t = Template('{% load i18n %}{% blocktrans %}My other name is {{ person }}.{% endblocktrans %}') rendered = t.render(Context({'person': 'James'})) self.assertEqual(rendered, 'My other name is James.') class FormattingTests(TestCase): Loading Loading
django/templatetags/i18n.py +1 −1 Original line number Diff line number Diff line Loading @@ -148,7 +148,7 @@ class BlockTranslateNode(Node): context.pop() try: result = result % data except KeyError: except (KeyError, ValueError): with translation.override(None): result = self.render(context) return result Loading
tests/regressiontests/i18n/other/locale/fr/LC_MESSAGES/django.mo +74 B (528 B) File changed.No diff preview for this file type. View original file View changed file
tests/regressiontests/i18n/other/locale/fr/LC_MESSAGES/django.po +6 −0 Original line number Diff line number Diff line Loading @@ -17,5 +17,11 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: template.html:3 # Note: Intentional: variable name is translated. msgid "My name is %(person)s." msgstr "Mon nom est %(personne)s." #: template.html:3 # Note: Intentional: the variable name is badly formatted (missing 's' at the end) msgid "My other name is %(person)s." msgstr "Mon autre nom est %(person)." No newline at end of file
tests/regressiontests/i18n/tests.py +15 −1 Original line number Diff line number Diff line Loading @@ -270,10 +270,11 @@ class TranslationTests(TestCase): self.assertEqual(to_language('sr_Lat'), 'sr-lat') @override_settings(LOCALE_PATHS=(os.path.join(here, 'other', 'locale'),)) def test_bad_placeholder(self): def test_bad_placeholder_1(self): """ Error in translation file should not crash template rendering (%(person)s is translated as %(personne)s in fr.po) Refs #16516. """ from django.template import Template, Context with translation.override('fr'): Loading @@ -281,6 +282,19 @@ class TranslationTests(TestCase): rendered = t.render(Context({'person': 'James'})) self.assertEqual(rendered, 'My name is James.') @override_settings(LOCALE_PATHS=(os.path.join(here, 'other', 'locale'),)) def test_bad_placeholder_2(self): """ Error in translation file should not crash template rendering (%(person) misses a 's' in fr.po, causing the string formatting to fail) Refs #18393. """ from django.template import Template, Context with translation.override('fr'): t = Template('{% load i18n %}{% blocktrans %}My other name is {{ person }}.{% endblocktrans %}') rendered = t.render(Context({'person': 'James'})) self.assertEqual(rendered, 'My other name is James.') class FormattingTests(TestCase): Loading