# HG changeset patch # User hodgestar # Date 1389302774 0 # Node ID fa0e84724feeefeb68982f1d16f0961759dd83fa # Parent 203d981d314a207c39cd08ddebbfddd1f5fdbc66 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 @@ -1041,7 +1041,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 @@ -906,6 +906,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):