Mercurial > genshi > mirror
changeset 1016:38565f2ab970 trunk
Fix handling of case where a translation has text after a closing tag (fixes #566, thanks to jomae for the patch).
author | hodgestar |
---|---|
date | Thu, 09 Jan 2014 21:23:41 +0000 |
parents | cdb5d435d237 |
children | ad96321e4d2b |
files | genshi/filters/i18n.py genshi/filters/tests/i18n.py |
diffstat | 2 files changed, 19 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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:
--- a/genshi/filters/tests/i18n.py +++ b/genshi/filters/tests/i18n.py @@ -928,6 +928,18 @@ """</p></html>""", tmpl.generate(first="FIRST", second="SECOND").render()) + def test_translate_i18n_msg_ticket_404_regression(self): + tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/" + xmlns:i18n="http://genshi.edgewall.org/i18n"> + <h1 i18n:msg="name">text <a>$name</a></h1> + </html>""") + gettext = lambda s: u'head [1:%(name)s] tail' + translator = Translator(gettext) + translator.setup(tmpl) + self.assertEqual("""<html> + <h1>head <a>NAME</a> tail</h1> + </html>""", tmpl.generate(name='NAME').render()) + class ChooseDirectiveTestCase(unittest.TestCase):