changeset 869:38c44e2f4232

Apply patch for I18n message extraction bug as reported in #358. Thanks to cboos for the patch, again.
author cmlenz
date Sat, 28 Nov 2009 15:42:49 +0000
parents 9309530ee279
children 1ea88e82713d
files genshi/filters/i18n.py genshi/filters/tests/i18n.py
diffstat 2 files changed, 47 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/genshi/filters/i18n.py
+++ b/genshi/filters/i18n.py
@@ -186,8 +186,7 @@
         for event in stream:
             msgbuf.append(*previous)
             previous = event
-        if previous[0] is not END:
-            msgbuf.append(*previous)
+        msgbuf.append(*previous)
 
         yield None, msgbuf.format(), comment_stack[-1:]
 
--- a/genshi/filters/tests/i18n.py
+++ b/genshi/filters/tests/i18n.py
@@ -208,6 +208,52 @@
           <p>Für Details siehe bitte <a href="help.html">Hilfe</a>.</p>
         </html>""", tmpl.generate().render())
 
+    def test_extract_i18n_msg_nonewline(self):
+        tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
+            xmlns:i18n="http://genshi.edgewall.org/i18n">
+          <p i18n:msg="">Please see <a href="help.html">Help</a></p>
+        </html>""")
+        translator = Translator()
+        tmpl.add_directives(Translator.NAMESPACE, translator)
+        messages = list(translator.extract(tmpl.stream))
+        self.assertEqual(1, len(messages))
+        self.assertEqual('Please see [1:Help]', messages[0][2])
+
+    def test_translate_i18n_msg_nonewline(self):
+        tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
+            xmlns:i18n="http://genshi.edgewall.org/i18n">
+          <p i18n:msg="">Please see <a href="help.html">Help</a></p>
+        </html>""")
+        gettext = lambda s: u"Für Details siehe bitte [1:Hilfe]"
+        translator = Translator(gettext)
+        translator.setup(tmpl)
+        self.assertEqual("""<html>
+          <p>Für Details siehe bitte <a href="help.html">Hilfe</a></p>
+        </html>""", tmpl.generate().render())
+
+    def test_extract_i18n_msg_elt_nonewline(self):
+        tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
+            xmlns:i18n="http://genshi.edgewall.org/i18n">
+          <i18n:msg>Please see <a href="help.html">Help</a></i18n:msg>
+        </html>""")
+        translator = Translator()
+        tmpl.add_directives(Translator.NAMESPACE, translator)
+        messages = list(translator.extract(tmpl.stream))
+        self.assertEqual(1, len(messages))
+        self.assertEqual('Please see [1:Help]', messages[0][2])
+
+    def test_translate_i18n_msg_elt_nonewline(self):
+        tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
+            xmlns:i18n="http://genshi.edgewall.org/i18n">
+          <i18n:msg>Please see <a href="help.html">Help</a></i18n:msg>
+        </html>""")
+        gettext = lambda s: u"Für Details siehe bitte [1:Hilfe]"
+        translator = Translator(gettext)
+        translator.setup(tmpl)
+        self.assertEqual("""<html>
+          Für Details siehe bitte <a href="help.html">Hilfe</a>
+        </html>""", tmpl.generate().render())
+
     def test_extract_i18n_msg_nested(self):
         tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
             xmlns:i18n="http://genshi.edgewall.org/i18n">
Copyright (C) 2012-2017 Edgewall Software