annotate genshi/filters/tests/i18n.py @ 820:1837f39efd6f experimental-inline

Sync (old) experimental inline branch with trunk@1027.
author cmlenz
date Wed, 11 Mar 2009 17:51:06 +0000
parents 0742f421caba
children 09cc3627654c
rev   line source
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
1 # -*- coding: utf-8 -*-
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
2 #
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
3 # Copyright (C) 2007-2008 Edgewall Software
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
4 # All rights reserved.
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
5 #
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
6 # This software is licensed as described in the file COPYING, which
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
7 # you should have received as part of this distribution. The terms
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
8 # are also available at http://genshi.edgewall.org/wiki/License.
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
9 #
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
10 # This software consists of voluntary contributions made by many
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
11 # individuals. For the exact contribution history, see the revision
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
12 # history and logs, available at http://genshi.edgewall.org/log/.
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
13
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
14 from datetime import datetime
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
15 import doctest
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
16 from gettext import NullTranslations
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
17 from StringIO import StringIO
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
18 import unittest
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
19
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
20 from genshi.core import Attrs
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
21 from genshi.template import MarkupTemplate
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
22 from genshi.filters.i18n import Translator, extract
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
23 from genshi.input import HTML
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
24
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
25
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
26 class DummyTranslations(NullTranslations):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
27
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
28 def __init__(self, catalog):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
29 NullTranslations.__init__(self)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
30 self._catalog = catalog
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
31
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
32 def ugettext(self, message):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
33 missing = object()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
34 tmsg = self._catalog.get(message, missing)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
35 if tmsg is missing:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
36 if self._fallback:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
37 return self._fallback.ugettext(message)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
38 return unicode(message)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
39 return tmsg
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
40
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
41
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
42 class TranslatorTestCase(unittest.TestCase):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
43
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
44 def test_translate_included_attribute_text(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
45 """
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
46 Verify that translated attributes end up in a proper `Attrs` instance.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
47 """
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
48 html = HTML("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
49 <span title="Foo"></span>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
50 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
51 translator = Translator(lambda s: u"Voh")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
52 stream = list(html.filter(translator))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
53 kind, data, pos = stream[2]
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
54 assert isinstance(data[1], Attrs)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
55
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
56 def test_extract_without_text(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
57 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
58 <p title="Bar">Foo</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
59 ${ngettext("Singular", "Plural", num)}
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
60 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
61 translator = Translator(extract_text=False)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
62 messages = list(translator.extract(tmpl.stream))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
63 self.assertEqual(1, len(messages))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
64 self.assertEqual((3, 'ngettext', (u'Singular', u'Plural', None), []),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
65 messages[0])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
66
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
67 def test_extract_plural_form(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
68 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/">
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
69 ${ngettext("Singular", "Plural", num)}
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
70 </html>""")
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
71 translator = Translator()
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
72 messages = list(translator.extract(tmpl.stream))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
73 self.assertEqual(1, len(messages))
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
74 self.assertEqual((2, 'ngettext', (u'Singular', u'Plural', None), []),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
75 messages[0])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
76
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
77 def test_extract_funky_plural_form(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
78 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
79 ${ngettext(len(items), *widget.display_names)}
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
80 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
81 translator = Translator()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
82 messages = list(translator.extract(tmpl.stream))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
83 self.assertEqual(1, len(messages))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
84 self.assertEqual((2, 'ngettext', (None, None), []), messages[0])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
85
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
86 def test_extract_gettext_with_unicode_string(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
87 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
88 ${gettext("Grüße")}
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
89 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
90 translator = Translator()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
91 messages = list(translator.extract(tmpl.stream))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
92 self.assertEqual(1, len(messages))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
93 self.assertEqual((2, 'gettext', u'Gr\xfc\xdfe', []), messages[0])
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
94
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
95 def test_extract_included_attribute_text(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
96 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/">
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
97 <span title="Foo"></span>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
98 </html>""")
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
99 translator = Translator()
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
100 messages = list(translator.extract(tmpl.stream))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
101 self.assertEqual(1, len(messages))
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
102 self.assertEqual((2, None, u'Foo', []), messages[0])
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
103
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
104 def test_extract_attribute_expr(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
105 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/">
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
106 <input type="submit" value="${_('Save')}" />
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
107 </html>""")
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
108 translator = Translator()
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
109 messages = list(translator.extract(tmpl.stream))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
110 self.assertEqual(1, len(messages))
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
111 self.assertEqual((2, '_', u'Save', []), messages[0])
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
112
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
113 def test_extract_non_included_attribute_interpolated(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
114 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/">
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
115 <a href="#anchor_${num}">Foo</a>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
116 </html>""")
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
117 translator = Translator()
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
118 messages = list(translator.extract(tmpl.stream))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
119 self.assertEqual(1, len(messages))
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
120 self.assertEqual((2, None, u'Foo', []), messages[0])
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
121
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
122 def test_extract_text_from_sub(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
123 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/">
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
124 <py:if test="foo">Foo</py:if>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
125 </html>""")
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
126 translator = Translator()
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
127 messages = list(translator.extract(tmpl.stream))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
128 self.assertEqual(1, len(messages))
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
129 self.assertEqual((2, None, u'Foo', []), messages[0])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
130
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
131 def test_ignore_tag_with_fixed_xml_lang(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
132 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
133 <p xml:lang="en">(c) 2007 Edgewall Software</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
134 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
135 translator = Translator()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
136 messages = list(translator.extract(tmpl.stream))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
137 self.assertEqual(0, len(messages))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
138
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
139 def test_extract_tag_with_variable_xml_lang(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
140 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
141 <p xml:lang="${lang}">(c) 2007 Edgewall Software</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
142 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
143 translator = Translator()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
144 messages = list(translator.extract(tmpl.stream))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
145 self.assertEqual(1, len(messages))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
146 self.assertEqual((2, None, u'(c) 2007 Edgewall Software', []),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
147 messages[0])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
148
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
149 def test_ignore_attribute_with_expression(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
150 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
151 <input type="submit" value="Reply" title="Reply to comment $num" />
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
152 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
153 translator = Translator()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
154 messages = list(translator.extract(tmpl.stream))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
155 self.assertEqual(0, len(messages))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
156
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
157 def test_extract_i18n_msg(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
158 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
159 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
160 <p i18n:msg="">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
161 Please see <a href="help.html">Help</a> for details.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
162 </p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
163 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
164 translator = Translator()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
165 messages = list(translator.extract(tmpl.stream))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
166 self.assertEqual(1, len(messages))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
167 self.assertEqual('Please see [1:Help] for details.', messages[0][2])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
168
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
169 def test_translate_i18n_msg(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
170 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
171 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
172 <p i18n:msg="">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
173 Please see <a href="help.html">Help</a> for details.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
174 </p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
175 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
176 gettext = lambda s: u"Für Details siehe bitte [1:Hilfe]."
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
177 translator = Translator(gettext)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
178 tmpl.filters.insert(0, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
179 tmpl.add_directives(Translator.NAMESPACE, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
180 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
181 <p>Für Details siehe bitte <a href="help.html">Hilfe</a>.</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
182 </html>""", tmpl.generate().render())
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
183
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
184 def test_extract_i18n_msg_nested(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
185 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
186 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
187 <p i18n:msg="">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
188 Please see <a href="help.html"><em>Help</em> page</a> for details.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
189 </p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
190 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
191 translator = Translator()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
192 messages = list(translator.extract(tmpl.stream))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
193 self.assertEqual(1, len(messages))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
194 self.assertEqual('Please see [1:[2:Help] page] for details.',
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
195 messages[0][2])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
196
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
197 def test_translate_i18n_msg_nested(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
198 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
199 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
200 <p i18n:msg="">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
201 Please see <a href="help.html"><em>Help</em> page</a> for details.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
202 </p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
203 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
204 gettext = lambda s: u"Für Details siehe bitte [1:[2:Hilfeseite]]."
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
205 translator = Translator(gettext)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
206 tmpl.filters.insert(0, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
207 tmpl.add_directives(Translator.NAMESPACE, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
208 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
209 <p>Für Details siehe bitte <a href="help.html"><em>Hilfeseite</em></a>.</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
210 </html>""", tmpl.generate().render())
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
211
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
212 def test_extract_i18n_msg_empty(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
213 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
214 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
215 <p i18n:msg="">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
216 Show me <input type="text" name="num" /> entries per page.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
217 </p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
218 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
219 translator = Translator()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
220 messages = list(translator.extract(tmpl.stream))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
221 self.assertEqual(1, len(messages))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
222 self.assertEqual('Show me [1:] entries per page.', messages[0][2])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
223
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
224 def test_translate_i18n_msg_empty(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
225 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
226 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
227 <p i18n:msg="">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
228 Show me <input type="text" name="num" /> entries per page.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
229 </p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
230 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
231 gettext = lambda s: u"[1:] Einträge pro Seite anzeigen."
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
232 translator = Translator(gettext)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
233 tmpl.filters.insert(0, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
234 tmpl.add_directives(Translator.NAMESPACE, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
235 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
236 <p><input type="text" name="num"/> Einträge pro Seite anzeigen.</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
237 </html>""", tmpl.generate().render())
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
238
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
239 def test_extract_i18n_msg_multiple(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
240 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
241 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
242 <p i18n:msg="">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
243 Please see <a href="help.html">Help</a> for <em>details</em>.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
244 </p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
245 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
246 translator = Translator()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
247 messages = list(translator.extract(tmpl.stream))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
248 self.assertEqual(1, len(messages))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
249 self.assertEqual('Please see [1:Help] for [2:details].', messages[0][2])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
250
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
251 def test_translate_i18n_msg_multiple(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
252 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
253 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
254 <p i18n:msg="">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
255 Please see <a href="help.html">Help</a> for <em>details</em>.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
256 </p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
257 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
258 gettext = lambda s: u"Für [2:Details] siehe bitte [1:Hilfe]."
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
259 translator = Translator(gettext)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
260 tmpl.filters.insert(0, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
261 tmpl.add_directives(Translator.NAMESPACE, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
262 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
263 <p>Für <em>Details</em> siehe bitte <a href="help.html">Hilfe</a>.</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
264 </html>""", tmpl.generate().render())
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
265
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
266 def test_extract_i18n_msg_multiple_empty(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
267 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
268 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
269 <p i18n:msg="">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
270 Show me <input type="text" name="num" /> entries per page, starting at page <input type="text" name="num" />.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
271 </p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
272 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
273 translator = Translator()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
274 messages = list(translator.extract(tmpl.stream))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
275 self.assertEqual(1, len(messages))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
276 self.assertEqual('Show me [1:] entries per page, starting at page [2:].',
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
277 messages[0][2])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
278
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
279 def test_translate_i18n_msg_multiple_empty(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
280 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
281 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
282 <p i18n:msg="">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
283 Show me <input type="text" name="num" /> entries per page, starting at page <input type="text" name="num" />.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
284 </p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
285 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
286 gettext = lambda s: u"[1:] Einträge pro Seite, beginnend auf Seite [2:]."
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
287 translator = Translator(gettext)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
288 tmpl.filters.insert(0, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
289 tmpl.add_directives(Translator.NAMESPACE, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
290 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
291 <p><input type="text" name="num"/> Eintr\xc3\xa4ge pro Seite, beginnend auf Seite <input type="text" name="num"/>.</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
292 </html>""", tmpl.generate().render())
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
293
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
294 def test_extract_i18n_msg_with_param(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
295 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
296 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
297 <p i18n:msg="name">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
298 Hello, ${user.name}!
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
299 </p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
300 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
301 translator = Translator()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
302 messages = list(translator.extract(tmpl.stream))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
303 self.assertEqual(1, len(messages))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
304 self.assertEqual('Hello, %(name)s!', messages[0][2])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
305
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
306 def test_translate_i18n_msg_with_param(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
307 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
308 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
309 <p i18n:msg="name">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
310 Hello, ${user.name}!
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
311 </p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
312 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
313 gettext = lambda s: u"Hallo, %(name)s!"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
314 translator = Translator(gettext)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
315 tmpl.filters.insert(0, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
316 tmpl.add_directives(Translator.NAMESPACE, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
317 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
318 <p>Hallo, Jim!</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
319 </html>""", tmpl.generate(user=dict(name='Jim')).render())
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
320
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
321 def test_translate_i18n_msg_with_param_reordered(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
322 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
323 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
324 <p i18n:msg="name">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
325 Hello, ${user.name}!
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
326 </p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
327 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
328 gettext = lambda s: u"%(name)s, sei gegrüßt!"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
329 translator = Translator(gettext)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
330 tmpl.filters.insert(0, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
331 tmpl.add_directives(Translator.NAMESPACE, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
332 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
333 <p>Jim, sei gegrüßt!</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
334 </html>""", tmpl.generate(user=dict(name='Jim')).render())
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
335
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
336 def test_translate_i18n_msg_with_attribute_param(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
337 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
338 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
339 <p i18n:msg="">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
340 Hello, <a href="#${anchor}">dude</a>!
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
341 </p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
342 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
343 gettext = lambda s: u"Sei gegrüßt, [1:Alter]!"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
344 translator = Translator(gettext)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
345 tmpl.filters.insert(0, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
346 tmpl.add_directives(Translator.NAMESPACE, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
347 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
348 <p>Sei gegrüßt, <a href="#42">Alter</a>!</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
349 </html>""", tmpl.generate(anchor='42').render())
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
350
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
351 def test_extract_i18n_msg_with_two_params(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
352 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
353 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
354 <p i18n:msg="name, time">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
355 Posted by ${post.author} at ${entry.time.strftime('%H:%m')}
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
356 </p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
357 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
358 translator = Translator()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
359 messages = list(translator.extract(tmpl.stream))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
360 self.assertEqual(1, len(messages))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
361 self.assertEqual('Posted by %(name)s at %(time)s', messages[0][2])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
362
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
363 def test_translate_i18n_msg_with_two_params(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
364 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
365 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
366 <p i18n:msg="name, time">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
367 Written by ${entry.author} at ${entry.time.strftime('%H:%M')}
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
368 </p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
369 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
370 gettext = lambda s: u"%(name)s schrieb dies um %(time)s"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
371 translator = Translator(gettext)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
372 tmpl.filters.insert(0, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
373 tmpl.add_directives(Translator.NAMESPACE, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
374 entry = {
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
375 'author': 'Jim',
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
376 'time': datetime(2008, 4, 1, 14, 30)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
377 }
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
378 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
379 <p>Jim schrieb dies um 14:30</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
380 </html>""", tmpl.generate(entry=entry).render())
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
381
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
382 def test_extract_i18n_msg_with_directive(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
383 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
384 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
385 <p i18n:msg="">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
386 Show me <input type="text" name="num" py:attrs="{'value': x}" /> entries per page.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
387 </p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
388 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
389 translator = Translator()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
390 messages = list(translator.extract(tmpl.stream))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
391 self.assertEqual(1, len(messages))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
392 self.assertEqual('Show me [1:] entries per page.', messages[0][2])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
393
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
394 # FIXME: this currently fails :-/
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
395 # def test_translate_i18n_msg_with_directive(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
396 # tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
397 # xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
398 # <p i18n:msg="">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
399 # Show me <input type="text" name="num" py:attrs="{'value': x}" /> entries per page.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
400 # </p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
401 # </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
402 # gettext = lambda s: u"[1:] Einträge pro Seite anzeigen."
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
403 # tmpl.filters.insert(0, Translator(gettext))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
404 # self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
405 # <p><input type="text" name="num" value="x"/> Einträge pro Seite anzeigen.</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
406 # </html>""", tmpl.generate().render())
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
407
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
408 def test_extract_i18n_msg_with_comment(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
409 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
410 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
411 <p i18n:msg="" i18n:comment="As in foo bar">Foo</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
412 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
413 translator = Translator()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
414 messages = list(translator.extract(tmpl.stream))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
415 self.assertEqual(1, len(messages))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
416 self.assertEqual((3, None, u'Foo', ['As in foo bar']), messages[0])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
417
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
418 def test_translate_i18n_msg_with_comment(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
419 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
420 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
421 <p i18n:msg="" i18n:comment="As in foo bar">Foo</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
422 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
423 gettext = lambda s: u"Voh"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
424 translator = Translator(gettext)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
425 tmpl.filters.insert(0, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
426 tmpl.add_directives(Translator.NAMESPACE, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
427 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
428 <p>Voh</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
429 </html>""", tmpl.generate().render())
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
430
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
431 def test_extract_i18n_msg_with_attr(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
432 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
433 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
434 <p i18n:msg="" title="Foo bar">Foo</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
435 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
436 translator = Translator()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
437 messages = list(translator.extract(tmpl.stream))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
438 self.assertEqual(2, len(messages))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
439 self.assertEqual((3, None, u'Foo bar', []), messages[0])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
440 self.assertEqual((3, None, u'Foo', []), messages[1])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
441
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
442 def test_translate_i18n_msg_with_attr(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
443 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
444 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
445 <p i18n:msg="" title="Foo bar">Foo</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
446 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
447 gettext = lambda s: u"Voh"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
448 translator = Translator(DummyTranslations({
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
449 'Foo': u'Voh',
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
450 'Foo bar': u'Voh bär'
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
451 }))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
452 tmpl.filters.insert(0, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
453 tmpl.add_directives(Translator.NAMESPACE, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
454 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
455 <p title="Voh bär">Voh</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
456 </html>""", tmpl.generate().render())
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
457
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
458 def test_translate_with_translations_object(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
459 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
460 xmlns:i18n="http://genshi.edgewall.org/i18n">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
461 <p i18n:msg="" i18n:comment="As in foo bar">Foo</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
462 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
463 translator = Translator(DummyTranslations({'Foo': 'Voh'}))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
464 tmpl.filters.insert(0, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
465 tmpl.add_directives(Translator.NAMESPACE, translator)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
466 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
467 <p>Voh</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
468 </html>""", tmpl.generate().render())
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
469
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
470
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
471 class ExtractTestCase(unittest.TestCase):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
472
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
473 def test_markup_template_extraction(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
474 buf = StringIO("""<html xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
475 <head>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
476 <title>Example</title>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
477 </head>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
478 <body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
479 <h1>Example</h1>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
480 <p>${_("Hello, %(name)s") % dict(name=username)}</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
481 <p>${ngettext("You have %d item", "You have %d items", num)}</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
482 </body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
483 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
484 results = list(extract(buf, ['_', 'ngettext'], [], {}))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
485 self.assertEqual([
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
486 (3, None, u'Example', []),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
487 (6, None, u'Example', []),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
488 (7, '_', u'Hello, %(name)s', []),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
489 (8, 'ngettext', (u'You have %d item', u'You have %d items', None),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
490 []),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
491 ], results)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
492
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
493 def test_extraction_without_text(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
494 buf = StringIO("""<html xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
495 <p title="Bar">Foo</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
496 ${ngettext("Singular", "Plural", num)}
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
497 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
498 results = list(extract(buf, ['_', 'ngettext'], [], {
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
499 'extract_text': 'no'
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
500 }))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
501 self.assertEqual([
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
502 (3, 'ngettext', (u'Singular', u'Plural', None), []),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
503 ], results)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
504
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
505 def test_text_template_extraction(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
506 buf = StringIO("""${_("Dear %(name)s") % {'name': name}},
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
507
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
508 ${ngettext("Your item:", "Your items", len(items))}
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
509 #for item in items
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
510 * $item
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
511 #end
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
512
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
513 All the best,
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
514 Foobar""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
515 results = list(extract(buf, ['_', 'ngettext'], [], {
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
516 'template_class': 'genshi.template:TextTemplate'
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
517 }))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
518 self.assertEqual([
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
519 (1, '_', u'Dear %(name)s', []),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
520 (3, 'ngettext', (u'Your item:', u'Your items', None), []),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
521 (7, None, u'All the best,\n Foobar', [])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
522 ], results)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
523
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
524 def test_extraction_with_keyword_arg(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
525 buf = StringIO("""<html xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
526 ${gettext('Foobar', foo='bar')}
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
527 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
528 results = list(extract(buf, ['gettext'], [], {}))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
529 self.assertEqual([
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
530 (2, 'gettext', (u'Foobar'), []),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
531 ], results)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
532
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
533 def test_extraction_with_nonstring_arg(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
534 buf = StringIO("""<html xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
535 ${dgettext(curdomain, 'Foobar')}
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
536 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
537 results = list(extract(buf, ['dgettext'], [], {}))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
538 self.assertEqual([
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
539 (2, 'dgettext', (None, u'Foobar'), []),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
540 ], results)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
541
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
542 def test_extraction_inside_ignored_tags(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
543 buf = StringIO("""<html xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
544 <script type="text/javascript">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
545 $('#llist').tabs({
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
546 remote: true,
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
547 spinner: "${_('Please wait...')}"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
548 });
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
549 </script>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
550 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
551 results = list(extract(buf, ['_'], [], {}))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
552 self.assertEqual([
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
553 (5, '_', u'Please wait...', []),
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
554 ], results)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
555
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
556 def test_extraction_inside_ignored_tags_with_directives(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
557 buf = StringIO("""<html xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
558 <script type="text/javascript">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
559 <py:if test="foobar">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
560 alert("This shouldn't be extracted");
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
561 </py:if>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
562 </script>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
563 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
564 self.assertEqual([], list(extract(buf, ['_'], [], {})))
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
565
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
566
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
567 def suite():
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
568 suite = unittest.TestSuite()
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
569 suite.addTest(doctest.DocTestSuite(Translator.__module__))
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
570 suite.addTest(unittest.makeSuite(TranslatorTestCase, 'test'))
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
571 suite.addTest(unittest.makeSuite(ExtractTestCase, 'test'))
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
572 return suite
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
573
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
574 if __name__ == '__main__':
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents:
diff changeset
575 unittest.main(defaultTest='suite')
Copyright (C) 2012-2017 Edgewall Software