# HG changeset patch # User hodgestar # Date 1389302721 0 # Node ID 9c4fafa85f4adbcc3b6d18b16c0949e2db53de97 # Parent 2069c7a0059c2ed2cdac1621823ac7d94fb3caa5 Merge r1242 from trunk (fix handling of case where a translation has text after a closing tag). diff --git a/genshi/filters/i18n.py b/genshi/filters/i18n.py --- a/genshi/filters/i18n.py +++ b/genshi/filters/i18n.py @@ -1048,7 +1048,13 @@ while parts: order, string = parts.pop(0) - events = self.events[order].pop(0) + events = self.events[order] + if events: + events = events.pop(0) + else: + # create a dummy empty text event so any remaining + # part of the translation can be processed. + events = [(TEXT, "", (None, -1, -1))] parts_counter[order].pop() for event in events: diff --git a/genshi/filters/tests/i18n.py b/genshi/filters/tests/i18n.py --- a/genshi/filters/tests/i18n.py +++ b/genshi/filters/tests/i18n.py @@ -928,6 +928,18 @@ """

""", tmpl.generate(first="FIRST", second="SECOND").render()) + def test_translate_i18n_msg_ticket_404_regression(self): + tmpl = MarkupTemplate(""" +

text $name

+ """) + gettext = lambda s: u'head [1:%(name)s] tail' + translator = Translator(gettext) + translator.setup(tmpl) + self.assertEqual(""" +

head NAME tail

+ """, tmpl.generate(name='NAME').render()) + class ChooseDirectiveTestCase(unittest.TestCase):