Mercurial > genshi > genshi-test
comparison genshi/filters/tests/i18n.py @ 560:f227a2f12e5f
Start implementation of advanced I18n as dicussed in #129 and the MailingList. This is not complete yet, but many simple cases work okay.
author | cmlenz |
---|---|
date | Thu, 05 Jul 2007 11:06:14 +0000 |
parents | da5cbf6d134d |
children | aa8e85a4085e |
comparison
equal
deleted
inserted
replaced
558:2a6cf641cb5e | 560:f227a2f12e5f |
---|---|
88 <input type="submit" value="Reply" title="Reply to comment $num" /> | 88 <input type="submit" value="Reply" title="Reply to comment $num" /> |
89 </html>""") | 89 </html>""") |
90 translator = Translator() | 90 translator = Translator() |
91 messages = list(translator.extract(tmpl.stream)) | 91 messages = list(translator.extract(tmpl.stream)) |
92 self.assertEqual(0, len(messages)) | 92 self.assertEqual(0, len(messages)) |
93 | |
94 def test_extract_i18n_msg(self): | |
95 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/" | |
96 xmlns:i18n="http://genshi.edgewall.org/i18n"> | |
97 <p i18n:msg=""> | |
98 Please see <a href="help.html">Help</a> for details. | |
99 </p> | |
100 </html>""") | |
101 translator = Translator() | |
102 messages = list(translator.extract(tmpl.stream)) | |
103 self.assertEqual(1, len(messages)) | |
104 self.assertEqual('Please see [1:Help] for details.', messages[0][2]) | |
105 | |
106 def test_translate_i18n_msg(self): | |
107 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/" | |
108 xmlns:i18n="http://genshi.edgewall.org/i18n"> | |
109 <p i18n:msg=""> | |
110 Please see <a href="help.html">Help</a> for details. | |
111 </p> | |
112 </html>""") | |
113 gettext = lambda s: u"Für Details siehe bitte [1:Hilfe]." | |
114 tmpl.filters.insert(0, Translator(gettext)) | |
115 self.assertEqual("""<html> | |
116 <p>Für Details siehe bitte <a href="help.html">Hilfe</a>.</p> | |
117 </html>""", tmpl.generate().render()) | |
118 | |
119 def test_extract_i18n_msg_nested(self): | |
120 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/" | |
121 xmlns:i18n="http://genshi.edgewall.org/i18n"> | |
122 <p i18n:msg=""> | |
123 Please see <a href="help.html"><em>Help</em> page</a> for details. | |
124 </p> | |
125 </html>""") | |
126 translator = Translator() | |
127 messages = list(translator.extract(tmpl.stream)) | |
128 self.assertEqual(1, len(messages)) | |
129 self.assertEqual('Please see [1:[2:Help] page] for details.', | |
130 messages[0][2]) | |
131 | |
132 def test_translate_i18n_msg_nested(self): | |
133 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/" | |
134 xmlns:i18n="http://genshi.edgewall.org/i18n"> | |
135 <p i18n:msg=""> | |
136 Please see <a href="help.html"><em>Help</em> page</a> for details. | |
137 </p> | |
138 </html>""") | |
139 gettext = lambda s: u"Für Details siehe bitte [1:[2:Hilfeseite]]." | |
140 tmpl.filters.insert(0, Translator(gettext)) | |
141 self.assertEqual("""<html> | |
142 <p>Für Details siehe bitte <a href="help.html"><em>Hilfeseite</em></a>.</p> | |
143 </html>""", tmpl.generate().render()) | |
144 | |
145 def test_extract_i18n_msg_empty(self): | |
146 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/" | |
147 xmlns:i18n="http://genshi.edgewall.org/i18n"> | |
148 <p i18n:msg=""> | |
149 Show me <input type="text" name="num" /> entries per page. | |
150 </p> | |
151 </html>""") | |
152 translator = Translator() | |
153 messages = list(translator.extract(tmpl.stream)) | |
154 self.assertEqual(1, len(messages)) | |
155 self.assertEqual('Show me [1:] entries per page.', messages[0][2]) | |
156 | |
157 def test_translate_i18n_msg_empty(self): | |
158 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/" | |
159 xmlns:i18n="http://genshi.edgewall.org/i18n"> | |
160 <p i18n:msg=""> | |
161 Show me <input type="text" name="num" /> entries per page. | |
162 </p> | |
163 </html>""") | |
164 gettext = lambda s: u"[1:] Einträge pro Seite anzeigen." | |
165 tmpl.filters.insert(0, Translator(gettext)) | |
166 self.assertEqual("""<html> | |
167 <p><input type="text" name="num"/> Einträge pro Seite anzeigen.</p> | |
168 </html>""", tmpl.generate().render()) | |
169 | |
170 def test_extract_i18n_msg_multiple(self): | |
171 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/" | |
172 xmlns:i18n="http://genshi.edgewall.org/i18n"> | |
173 <p i18n:msg=""> | |
174 Please see <a href="help.html">Help</a> for <em>details</em>. | |
175 </p> | |
176 </html>""") | |
177 translator = Translator() | |
178 messages = list(translator.extract(tmpl.stream)) | |
179 self.assertEqual(1, len(messages)) | |
180 self.assertEqual('Please see [1:Help] for [2:details].', messages[0][2]) | |
181 | |
182 def test_translate_i18n_msg_multiple(self): | |
183 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/" | |
184 xmlns:i18n="http://genshi.edgewall.org/i18n"> | |
185 <p i18n:msg=""> | |
186 Please see <a href="help.html">Help</a> for <em>details</em>. | |
187 </p> | |
188 </html>""") | |
189 gettext = lambda s: u"Für [2:Details] siehe bitte [1:Hilfe]." | |
190 tmpl.filters.insert(0, Translator(gettext)) | |
191 self.assertEqual("""<html> | |
192 <p>Für <em>Details</em> siehe bitte <a href="help.html">Hilfe</a>.</p> | |
193 </html>""", tmpl.generate().render()) | |
194 | |
195 def test_extract_i18n_msg_multiple_empty(self): | |
196 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/" | |
197 xmlns:i18n="http://genshi.edgewall.org/i18n"> | |
198 <p i18n:msg=""> | |
199 Show me <input type="text" name="num" /> entries per page, starting at page <input type="text" name="num" />. | |
200 </p> | |
201 </html>""") | |
202 translator = Translator() | |
203 messages = list(translator.extract(tmpl.stream)) | |
204 self.assertEqual(1, len(messages)) | |
205 self.assertEqual('Show me [1:] entries per page, starting at page [2:].', | |
206 messages[0][2]) | |
207 | |
208 def test_translate_i18n_msg_multiple_empty(self): | |
209 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/" | |
210 xmlns:i18n="http://genshi.edgewall.org/i18n"> | |
211 <p i18n:msg=""> | |
212 Show me <input type="text" name="num" /> entries per page, starting at page <input type="text" name="num" />. | |
213 </p> | |
214 </html>""") | |
215 gettext = lambda s: u"[1:] Einträge pro Seite, beginnend auf Seite [2:]." | |
216 tmpl.filters.insert(0, Translator(gettext)) | |
217 self.assertEqual("""<html> | |
218 <p><input type="text" name="num"/> Eintr\xc3\xa4ge pro Seite, beginnend auf Seite <input type="text" name="num"/>.</p> | |
219 </html>""", tmpl.generate().render()) | |
220 | |
221 def test_extract_i18n_msg_with_directive(self): | |
222 tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/" | |
223 xmlns:i18n="http://genshi.edgewall.org/i18n"> | |
224 <p i18n:msg=""> | |
225 Show me <input type="text" name="num" py:attrs="{'value': x}" /> entries per page. | |
226 </p> | |
227 </html>""") | |
228 translator = Translator() | |
229 messages = list(translator.extract(tmpl.stream)) | |
230 self.assertEqual(1, len(messages)) | |
231 self.assertEqual('Show me [1:] entries per page.', messages[0][2]) | |
232 | |
233 # FIXME: this currently fails :-/ | |
234 # def test_translate_i18n_msg_with_directive(self): | |
235 # tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/" | |
236 # xmlns:i18n="http://genshi.edgewall.org/i18n"> | |
237 # <p i18n:msg=""> | |
238 # Show me <input type="text" name="num" py:attrs="{'value': x}" /> entries per page. | |
239 # </p> | |
240 # </html>""") | |
241 # gettext = lambda s: u"[1:] Einträge pro Seite anzeigen." | |
242 # tmpl.filters.insert(0, Translator(gettext)) | |
243 # self.assertEqual("""<html> | |
244 # <p><input type="text" name="num" value="x"/> Einträge pro Seite anzeigen.</p> | |
245 # </html>""", tmpl.generate().render()) | |
93 | 246 |
94 | 247 |
95 class ExtractTestCase(unittest.TestCase): | 248 class ExtractTestCase(unittest.TestCase): |
96 | 249 |
97 def test_markup_template_extraction(self): | 250 def test_markup_template_extraction(self): |