From b7508896fbe19ec2cdeb81565cd587091b6b68d0 Mon Sep 17 00:00:00 2001 From: Doug Beck Date: Wed, 15 Apr 2015 17:01:11 -0400 Subject: Fixed #24257 -- Corrected i18n handling of percent signs. Refactored tests to use a sample project. Updated extraction: * Removed special handling of single percent signs. * When extracting messages from template text, doubled all percent signs so they are not interpreted by gettext as string format flags. All strings extracted by gettext, if containing a percent sign, will now be labeled "#, python-format". Updated translation: * Used "%%" for "%" in template text before calling gettext. * Updated {% trans %} rendering to restore "%" from "%%". --- tests/template_tests/syntax_tests/test_basic.py | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'tests/template_tests/syntax_tests/test_basic.py') diff --git a/tests/template_tests/syntax_tests/test_basic.py b/tests/template_tests/syntax_tests/test_basic.py index b72d6e6414..da45fe2839 100644 --- a/tests/template_tests/syntax_tests/test_basic.py +++ b/tests/template_tests/syntax_tests/test_basic.py @@ -323,3 +323,12 @@ class BasicSyntaxTests(SimpleTestCase): msg = "Unclosed tag 'if'. Looking for one of: elif, else, endif." with self.assertRaisesMessage(TemplateSyntaxError, msg): self.engine.render_to_string('template') + + @setup({'tpl-str': '%s', 'tpl-percent': '%%', 'tpl-weird-percent': '% %s'}) + def test_ignores_strings_that_look_like_format_interpolation(self): + output = self.engine.render_to_string('tpl-str') + self.assertEqual(output, '%s') + output = self.engine.render_to_string('tpl-percent') + self.assertEqual(output, '%%') + output = self.engine.render_to_string('tpl-weird-percent') + self.assertEqual(output, '% %s') -- cgit v1.3