Index: /trunk/genshi/filters/tests/i18n.py =================================================================== --- /trunk/genshi/filters/tests/i18n.py (revision 1177) +++ /trunk/genshi/filters/tests/i18n.py (revision 1242) @@ -928,4 +928,16 @@ """

""", 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()) Index: /trunk/genshi/filters/i18n.py =================================================================== --- /trunk/genshi/filters/i18n.py (revision 1177) +++ /trunk/genshi/filters/i18n.py (revision 1242) @@ -1049,5 +1049,11 @@ 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()