1
2 from translate.filters import checks
3 from translate.lang import data
4 from translate.storage import po
5
6 -def passes(filterfunction, str1, str2):
7 """returns whether the given strings pass on the given test, handling FilterFailures"""
8 str1 = data.forceunicode(str1)
9 str2 = data.forceunicode(str2)
10 try:
11 filterresult = filterfunction(str1, str2)
12 except checks.FilterFailure, e:
13 filterresult = False
14 return filterresult
15
16 -def fails(filterfunction, str1, str2):
27
29 """returns whether the given strings fail on the given test, handling only SeriousFilterFailures"""
30 str1 = data.forceunicode(str1)
31 str2 = data.forceunicode(str2)
32 try:
33 filterresult = filterfunction(str1, str2)
34 except checks.SeriousFilterFailure, e:
35 filterresult = False
36 return not filterresult
37
38
46
54
56 """test that we have the correct accelerator marker for the various default configs"""
57 stdchecker = checks.StandardChecker()
58 assert stdchecker.config.accelmarkers == []
59 mozillachecker = checks.MozillaChecker()
60 assert mozillachecker.config.accelmarkers == ["&"]
61 ooochecker = checks.OpenOfficeChecker()
62 assert ooochecker.config.accelmarkers == ["~"]
63 gnomechecker = checks.GnomeChecker()
64 assert gnomechecker.config.accelmarkers == ["_"]
65 kdechecker = checks.KdeChecker()
66 assert kdechecker.config.accelmarkers == ["&"]
67
69 """tests accelerators"""
70 stdchecker = checks.StandardChecker(checks.CheckerConfig(accelmarkers="&"))
71 assert passes(stdchecker.accelerators, "&File", "&Fayile")
72 assert fails(stdchecker.accelerators, "&File", "Fayile")
73 assert fails(stdchecker.accelerators, "File", "&Fayile")
74 assert passes(stdchecker.accelerators, "Mail && News", "Pos en Nuus")
75 assert fails(stdchecker.accelerators, "Mail & News", "Pos en Nuus")
76 assert passes(stdchecker.accelerators, "&Allow", u'&\ufeb2\ufee3\ufe8e\ufea3')
77 assert fails(stdchecker.accelerators, "Open &File", "Vula& Ifayile")
78 kdechecker = checks.KdeChecker()
79 assert passes(kdechecker.accelerators, "&File", "&Fayile")
80 assert fails(kdechecker.accelerators, "&File", "Fayile")
81 assert fails(kdechecker.accelerators, "File", "&Fayile")
82 gnomechecker = checks.GnomeChecker()
83 assert passes(gnomechecker.accelerators, "_File", "_Fayile")
84 assert fails(gnomechecker.accelerators, "_File", "Fayile")
85 assert fails(gnomechecker.accelerators, "File", "_Fayile")
86 mozillachecker = checks.MozillaChecker()
87 assert passes(mozillachecker.accelerators, "&File", "&Fayile")
88 assert fails_serious(mozillachecker.accelerators, "&File", "Fayile")
89 assert fails_serious(mozillachecker.accelerators, "File", "&Fayile")
90 assert passes(mozillachecker.accelerators, "Mail & News", "Pos en Nuus")
91 assert fails_serious(mozillachecker.accelerators, "Mail & News", "Pos en &Nuus")
92 assert fails_serious(mozillachecker.accelerators, "&File", "Fayile")
93 ooochecker = checks.OpenOfficeChecker()
94 assert passes(ooochecker.accelerators, "~File", "~Fayile")
95 assert fails(ooochecker.accelerators, "~File", "Fayile")
96 assert fails(ooochecker.accelerators, "File", "~Fayile")
97
98
99 assert fails(ooochecker.accelerators, "F~ile", "L~êer")
100
101
102
104 """test for accelerated variables"""
105
106 mozillachecker = checks.MozillaChecker()
107 assert fails(mozillachecker.acceleratedvariables, "%S &Options", "&%S Ikhetho")
108 assert passes(mozillachecker.acceleratedvariables, "%S &Options", "%S &Ikhetho")
109 ooochecker = checks.OpenOfficeChecker()
110 assert fails(ooochecker.acceleratedvariables, "%PRODUCTNAME% ~Options", "~%PRODUCTNAME% Ikhetho")
111 assert passes(ooochecker.acceleratedvariables, "%PRODUCTNAME% ~Options", "%PRODUCTNAME% ~Ikhetho")
112
113
115 """tests acronyms"""
116 stdchecker = checks.StandardChecker()
117 assert passes(stdchecker.acronyms, "An HTML file", "'n HTML leer")
118 assert fails(stdchecker.acronyms, "An HTML file", "'n LMTH leer")
119 assert passes(stdchecker.acronyms, "It is HTML.", "Dit is HTML.")
120
121 assert passes(stdchecker.acronyms, "An html file", "'n HTML leer")
122
123 stdchecker = checks.StandardChecker(checks.CheckerConfig(musttranslatewords=["OK"]))
124 assert passes(stdchecker.acronyms, "OK", "Kulungile")
125
126 assert fails(stdchecker.acronyms, "Location (URL) not found", "Blah blah blah")
127
128 assert passes(stdchecker.acronyms, "%s: option `-W %s' is ambiguous", "%s: opsie '-W %s' is dubbelsinnig")
129
130 assert passes (stdchecker.acronyms, "DEPRECATED - Characters shown on applet startup", "Խորհուրդ չի տրվում – Ապլետի գործարկման ժամանակ երևացող նիշերը")
131
132
138
140 """tests brackets"""
141 stdchecker = checks.StandardChecker()
142 assert passes(stdchecker.brackets, "N number(s)", "N getal(le)")
143 assert fails(stdchecker.brackets, "For {sic} numbers", "Vier getalle")
144 assert fails(stdchecker.brackets, "For }sic{ numbers", "Vier getalle")
145 assert fails(stdchecker.brackets, "For [sic] numbers", "Vier getalle")
146 assert fails(stdchecker.brackets, "For ]sic[ numbers", "Vier getalle")
147 assert passes(stdchecker.brackets, "{[(", "[({")
148
150 """tests compendiumconflicts"""
151 stdchecker = checks.StandardChecker()
152 assert fails(stdchecker.compendiumconflicts, "File not saved", r"""#-#-#-#-# file1.po #-#-#-#-#\n
153 Leer nie gestoor gestoor nie\n
154 #-#-#-#-# file1.po #-#-#-#-#\n
155 Leer nie gestoor""")
156
158 """tests double quotes"""
159 stdchecker = checks.StandardChecker()
160 assert fails(stdchecker.doublequoting, "Hot plate", "\"Ipuleti\" elishisa")
161 assert passes(stdchecker.doublequoting, "\"Hot\" plate", "\"Ipuleti\" elishisa")
162 assert fails(stdchecker.doublequoting, "'Hot' plate", "\"Ipuleti\" elishisa")
163 assert passes(stdchecker.doublequoting, "\\\"Hot\\\" plate", "\\\"Ipuleti\\\" elishisa")
164
165
166 frchecker = checks.StandardChecker(checks.CheckerConfig(targetlanguage="fr"))
167 assert passes(frchecker.doublequoting, "Click <a href=\"page.html\">", "Clique <a href=\"page.html\">")
168 assert fails(frchecker.doublequoting, "Do \"this\"", "Do \"this\"")
169 assert passes(frchecker.doublequoting, "Do \"this\"", "Do « this »")
170 assert fails(frchecker.doublequoting, "Do \"this\"", "Do « this » « this »")
171
173 """tests double spacing"""
174 stdchecker = checks.StandardChecker()
175 assert passes(stdchecker.doublespacing, "Sentence. Another sentence.", "Sin. 'n Ander sin.")
176 assert passes(stdchecker.doublespacing, "Sentence. Another sentence.", "Sin. No double spacing.")
177 assert fails(stdchecker.doublespacing, "Sentence. Another sentence.", "Sin. Missing the double space.")
178 assert fails(stdchecker.doublespacing, "Sentence. Another sentence.", "Sin. Uneeded double space in translation.")
179 ooochecker = checks.OpenOfficeChecker()
180 assert passes(ooochecker.doublespacing, "Execute %PROGRAMNAME Calc", "Blah %PROGRAMNAME Calc")
181 assert passes(ooochecker.doublespacing, "Execute %PROGRAMNAME Calc", "Blah % PROGRAMNAME Calc")
182
191
193 """tests endpunc"""
194 stdchecker = checks.StandardChecker()
195 assert passes(stdchecker.endpunc, "Question?", "Correct?")
196 assert fails(stdchecker.endpunc, " Question?", "Wrong ?")
197
198 assert fails(stdchecker.endpunc, "Exit change recording mode?\n\n", "Phuma esimeni sekugucula kubhalisa.\n\n")
199 mozillachecker = checks.MozillaChecker()
200 assert passes(mozillachecker.endpunc, "Upgrades an existing $ProductShortName$ installation.", "Ku antswisiwa ka ku nghenisiwa ka $ProductShortName$.")
201
202 assert passes(stdchecker.endpunc, "A nickname that identifies this publishing site (e.g.: 'MySite')", "Vito ro duvulela leri tirhisiwaka ku kuma sayiti leri ro kandziyisa (xik.: 'Sayiti ra Mina')")
203 assert fails(stdchecker.endpunc, "Question", u"Wrong\u2026")
204
205 assert passes(stdchecker.endpunc, "Pseudo-elements can't be negated '%1$S'.", "Pseudo-elemente kan nie '%1$S' ontken word nie.")
206
207 stdchecker = checks.StandardChecker(checks.CheckerConfig(targetlanguage='km'))
208 assert passes(stdchecker.endpunc, "In this new version, there are some minor conversion improvements on complex style in Openoffice.org Writer.", u"នៅក្នុងកំណែថ្មីនេះ មានការកែសម្រួលមួយចំនួនតូចទាក់ទងនឹងការបំលែងពុម្ពអក្សរខ្មែរ ក្នុងកម្មវិធីការិយាល័យ ស្លឹករឹត ដែលមានប្រើប្រាស់រចនាប័ទ្មស្មុគស្មាញច្រើន\u00a0។")
209
210 stdchecker = checks.StandardChecker(checks.CheckerConfig(targetlanguage='zh'))
211 assert passes(stdchecker.endpunc, "To activate your account, follow this link:\n", u"要啟用戶口,請瀏覽這個鏈結:\n")
212
218
220 """tests escapes"""
221 stdchecker = checks.StandardChecker()
222 assert passes(stdchecker.escapes, r"""A sentence""", "I'm correct.")
223 assert passes(stdchecker.escapes, "A file\n", "'n Leer\n")
224 assert fails_serious(stdchecker.escapes, r"blah. A file", r"bleah.\n'n leer")
225 assert passes(stdchecker.escapes, r"A tab\t", r"'n Tab\t")
226 assert fails_serious(stdchecker.escapes, r"A tab\t", r"'n Tab")
227 assert passes(stdchecker.escapes, r"An escape escape \\", r"Escape escape \\")
228 assert fails_serious(stdchecker.escapes, r"An escape escape \\", "Escape escape")
229 assert passes(stdchecker.escapes, r"A double quote \"", r"Double quote \"")
230 assert fails_serious(stdchecker.escapes, r"A double quote \"", "Double quote")
231
232 assert passes(stdchecker.escapes, "An escaped newline \\n", "Escaped newline \\n")
233 assert fails_serious(stdchecker.escapes, "An escaped newline \\n", "Escaped newline \n")
234
235 ooochecker = checks.OpenOfficeChecker()
236 assert passes(ooochecker.escapes, ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{space}\t32", ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{space}\t32")
237
239 """tests newlines"""
240 stdchecker = checks.StandardChecker()
241 assert passes(stdchecker.newlines, "Nothing to see", "Niks te sien")
242 assert passes(stdchecker.newlines, "Correct\n", "Korrek\n")
243 assert passes(stdchecker.newlines, "Correct\r", "Korrek\r")
244 assert passes(stdchecker.newlines, "Correct\r\n", "Korrek\r\n")
245 assert fails(stdchecker.newlines, "A file\n", "'n Leer")
246 assert fails(stdchecker.newlines, "A file", "'n Leer\n")
247 assert fails(stdchecker.newlines, "A file\r", "'n Leer")
248 assert fails(stdchecker.newlines, "A file", "'n Leer\r")
249 assert fails(stdchecker.newlines, "A file\n", "'n Leer\r\n")
250 assert fails(stdchecker.newlines, "A file\r\n", "'n Leer\n")
251 assert fails(stdchecker.newlines, "blah.\nA file", "bleah. 'n leer")
252
253 ooochecker = checks.OpenOfficeChecker()
254 assert fails(ooochecker.newlines, "The arrowhead was modified without saving.\nWould you like to save the arrowhead now?", "Ṱhoho ya musevhe yo khwinifhadzwa hu si na u seiva.Ni khou ṱoda u seiva thoho ya musevhe zwino?")
255
257 """tests tabs"""
258 stdchecker = checks.StandardChecker()
259 assert passes(stdchecker.tabs, "Nothing to see", "Niks te sien")
260 assert passes(stdchecker.tabs, "Correct\t", "Korrek\t")
261 assert passes(stdchecker.tabs, "Correct\tAA", "Korrek\tAA")
262 assert fails_serious(stdchecker.tabs, "A file\t", "'n Leer")
263 assert fails_serious(stdchecker.tabs, "A file", "'n Leer\t")
264 ooochecker = checks.OpenOfficeChecker()
265 assert passes(ooochecker.tabs, ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{space}\t32", ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{space}\t32")
266
268 """tests filepaths"""
269 stdchecker = checks.StandardChecker()
270 assert passes(stdchecker.filepaths, "%s to the file /etc/hosts on your system.", "%s na die leer /etc/hosts op jou systeem.")
271 assert fails(stdchecker.filepaths, "%s to the file /etc/hosts on your system.", "%s na die leer /etc/gasheer op jou systeem.")
272
282
284 """tests long messages"""
285 stdchecker = checks.StandardChecker()
286 assert passes(stdchecker.long, "I am normal", "Ek is ook normaal")
287 assert fails(stdchecker.long, "Short.", "Kort.......................................................................................")
288 assert fails(stdchecker.long, "a", "bc")
289
291 """tests stopwords"""
292 stdchecker = checks.StandardChecker(checks.CheckerConfig(musttranslatewords=[]))
293 assert passes(stdchecker.musttranslatewords, "This uses Mozilla of course", "hierdie gebruik le mozille natuurlik")
294 stdchecker = checks.StandardChecker(checks.CheckerConfig(musttranslatewords=["Mozilla"]))
295 assert passes(stdchecker.musttranslatewords, "This uses Mozilla of course", "hierdie gebruik le mozille natuurlik")
296 assert fails(stdchecker.musttranslatewords, "This uses Mozilla of course", "hierdie gebruik Mozilla natuurlik")
297 assert passes(stdchecker.musttranslatewords, "This uses Mozilla. Don't you?", "hierdie gebruik le mozille soos jy")
298 assert fails(stdchecker.musttranslatewords, "This uses Mozilla. Don't you?", "hierdie gebruik Mozilla soos jy")
299
300 assert passes(stdchecker.musttranslatewords, "This uses something else. Don't you?", "hierdie gebruik Mozilla soos jy")
301
302 assert passes(stdchecker.musttranslatewords, "Click 'Mozilla' button", "Kliek 'Motzille' knoppie")
303 assert fails(stdchecker.musttranslatewords, "Click 'Mozilla' button", "Kliek 'Mozilla' knoppie")
304 assert passes(stdchecker.musttranslatewords, 'Click "Mozilla" button', 'Kliek "Motzille" knoppie')
305 assert fails(stdchecker.musttranslatewords, 'Click "Mozilla" button', 'Kliek "Mozilla" knoppie')
306 assert fails(stdchecker.musttranslatewords, 'Click "Mozilla" button', u'Kliek «Mozilla» knoppie')
307 assert passes(stdchecker.musttranslatewords, "Click (Mozilla) button", "Kliek (Motzille) knoppie")
308 assert fails(stdchecker.musttranslatewords, "Click (Mozilla) button", "Kliek (Mozilla) knoppie")
309 assert passes(stdchecker.musttranslatewords, "Click Mozilla!", "Kliek Motzille!")
310 assert fails(stdchecker.musttranslatewords, "Click Mozilla!", "Kliek Mozilla!")
311
312
313
314 stdchecker = checks.StandardChecker(checks.CheckerConfig(varmatches=[("%", None), ], musttranslatewords=["OK"]))
315 assert passes(stdchecker.musttranslatewords, "Click %OK to start", "Kliek %OK om te begin")
316
317 assert fails(stdchecker.musttranslatewords, "Click OK", u"Kiḽikani OK")
318
320 """tests stopwords"""
321 stdchecker = checks.StandardChecker(checks.CheckerConfig(notranslatewords=[]))
322 assert passes(stdchecker.notranslatewords, "This uses Mozilla of course", "hierdie gebruik le mozille natuurlik")
323 stdchecker = checks.StandardChecker(checks.CheckerConfig(notranslatewords=["Mozilla", "Opera"]))
324 assert fails(stdchecker.notranslatewords, "This uses Mozilla of course", "hierdie gebruik le mozille natuurlik")
325 assert passes(stdchecker.notranslatewords, "This uses Mozilla of course", "hierdie gebruik Mozilla natuurlik")
326 assert fails(stdchecker.notranslatewords, "This uses Mozilla. Don't you?", "hierdie gebruik le mozille soos jy")
327 assert passes(stdchecker.notranslatewords, "This uses Mozilla. Don't you?", "hierdie gebruik Mozilla soos jy")
328
329 assert passes(stdchecker.notranslatewords, "This uses something else. Don't you?", "hierdie gebruik Mozilla soos jy")
330
331 assert passes(stdchecker.notranslatewords, "using Mozilla Task Manager", u"šomiša Selaola Mošomo sa Mozilla, gomme")
332
333 assert fails(stdchecker.notranslatewords, "Click 'Mozilla' button", "Kliek 'Motzille' knoppie")
334 assert passes(stdchecker.notranslatewords, "Click 'Mozilla' button", "Kliek 'Mozilla' knoppie")
335 assert fails(stdchecker.notranslatewords, "Click Mozilla!", "Kliek Motzille!")
336 assert passes(stdchecker.notranslatewords, "Click Mozilla!", "Kliek Mozilla!")
337 assert fails(stdchecker.notranslatewords, "Searches (From Opera)", "adosako (kusukela ku- Ophera)")
338 stdchecker = checks.StandardChecker(checks.CheckerConfig(notranslatewords=["Sun", "NeXT"]))
339 assert fails(stdchecker.notranslatewords, "Sun/NeXT Audio", "Odio dza Ḓuvha/TeVHELAHO")
340 assert passes(stdchecker.notranslatewords, "Sun/NeXT Audio", "Odio dza Sun/NeXT")
341 stdchecker = checks.StandardChecker(checks.CheckerConfig(notranslatewords=["sendmail"]))
342 assert fails(stdchecker.notranslatewords, "because 'sendmail' could", "ngauri 'rumelameiḽi' a yo")
343 assert passes(stdchecker.notranslatewords, "because 'sendmail' could", "ngauri 'sendmail' a yo")
344 stdchecker = checks.StandardChecker(checks.CheckerConfig(notranslatewords=["Base"]))
345 assert fails(stdchecker.notranslatewords, " - %PRODUCTNAME Base: Relation design", " - %PRODUCTNAME Sisekelo: Umsiko wekuhlobana")
346 stdchecker = checks.StandardChecker(checks.CheckerConfig(notranslatewords=["Writer"]))
347 assert fails(stdchecker.notranslatewords, "&[ProductName] Writer/Web", "&[ProductName] Umbhali/iWebhu")
348
349 stdchecker = checks.StandardChecker(checks.CheckerConfig(notranslatewords=[u"\u1e3cike"]))
350 assert passes(stdchecker.notranslatewords, u"You \u1e3cike me", u"Ek \u004c\u032dike jou")
351
353 """test numbers"""
354 stdchecker = checks.StandardChecker()
355 assert passes(stdchecker.numbers, "Netscape 4 was not as good as Netscape 7.", "Netscape 4 was nie so goed soos Netscape 7 nie.")
356
357 assert fails(stdchecker.numbers, "180° turn", "180 turn")
358 assert passes(stdchecker.numbers, "180° turn", "180° turn")
359 assert fails(stdchecker.numbers, "180° turn", "360 turn")
360 assert fails(stdchecker.numbers, "180° turn", "360° turn")
361 assert passes(stdchecker.numbers, "180~ turn", "180 turn")
362 assert passes(stdchecker.numbers, "180¶ turn", "180 turn")
363
364 assert passes(stdchecker.numbers, "12.34.56", "12.34.56")
365 assert fails(stdchecker.numbers, "12.34.56", "98.76.54")
366
367
368 assert passes(stdchecker.numbers, "R57.60", "R57.60")
369
370 assert fails(stdchecker.numbers, "R57.60", "R57,60")
371 assert fails(stdchecker.numbers, "1,000.00", "1 000,00")
372
373 assert passes(stdchecker.numbers, "40-bit RC2 encryption with RSA and an MD5", "Umbhalo ocashile i-RC2 onamabhithi angu-40 one-RSA ne-MD5")
374
376 """tests command line options e.g. --option"""
377 stdchecker = checks.StandardChecker()
378 assert passes(stdchecker.options, "--help", "--help")
379 assert fails(stdchecker.options, "--help", "--hulp")
380 assert fails(stdchecker.options, "--input=FILE", "--input=FILE")
381 assert passes(stdchecker.options, "--input=FILE", "--input=LÊER")
382 assert fails(stdchecker.options, "--input=FILE", "--tovoer=LÊER")
383
384 assert passes(stdchecker.options, "Hello! -- Hi", "Hallo! — Haai")
385 assert passes(stdchecker.options, "--blank--", "--vide--")
386
388 """tests printf style variables"""
389
390
391 stdchecker = checks.StandardChecker()
392 assert passes(stdchecker.printf, "I am %s", "Ek is %s")
393 assert fails(stdchecker.printf, "I am %s", "Ek is %d")
394 assert passes(stdchecker.printf, "I am %#100.50hhf", "Ek is %#100.50hhf")
395 assert fails(stdchecker.printf, "I am %#100s", "Ek is %10s")
396 assert fails(stdchecker.printf, "... for user %.100s on %.100s:", "... lomuntu osebenzisa i-%. I-100s e-100s:")
397 assert passes(stdchecker.printf, "%dMB", "%d MG")
398
399 assert passes(stdchecker.printf, "String %s and number %d", "String %1$s en nommer %2$d")
400 assert passes(stdchecker.printf, "String %1$s and number %2$d", "String %1$s en nommer %2$d")
401 assert passes(stdchecker.printf, "String %s and number %d", "Nommer %2$d and string %1$s")
402 assert fails(stdchecker.printf, "String %s and number %d", "Nommer %1$d and string %2$s")
403
405 """tests spacing after punctuation"""
406 stdchecker = checks.StandardChecker()
407 assert passes(stdchecker.puncspacing, "One, two, three.", "Kunye, kubili, kuthathu.")
408 assert passes(stdchecker.puncspacing, "One, two, three. ", "Kunye, kubili, kuthathu.")
409 assert fails(stdchecker.puncspacing, "One, two, three. ", "Kunye, kubili,kuthathu.")
410 assert passes(stdchecker.puncspacing, "One, two, three!?", "Kunye, kubili, kuthathu?")
411
412
413 frchecker = checks.StandardChecker(checks.CheckerConfig(targetlanguage="fr"))
414 assert passes(frchecker.puncspacing, "Do \"this\"", "Do « this »")
415 assert fails(frchecker.puncspacing, "Do \"this\"", "Do «this»")
416
418 """tests messages containing only punctuation"""
419 stdchecker = checks.StandardChecker()
420 assert passes(stdchecker.purepunc, ".", ".")
421 assert passes(stdchecker.purepunc, "", "")
422 assert fails(stdchecker.purepunc, ".", " ")
423 assert fails(stdchecker.purepunc, "Find", "'")
424 assert fails(stdchecker.purepunc, "'", "Find")
425
433
435 """tests short messages"""
436 stdchecker = checks.StandardChecker()
437 assert passes(stdchecker.short, "I am normal", "Ek is ook normaal")
438 assert fails(stdchecker.short, "I am a very long sentence", "Ek")
439 assert fails(stdchecker.short, "abcde", "c")
440
442 """tests single quotes"""
443 stdchecker = checks.StandardChecker()
444 assert passes(stdchecker.singlequoting, "A 'Hot' plate", "Ipuleti 'elishisa' kunye")
445
446 assert passes(stdchecker.singlequoting, "'Hot' plate", "Ipuleti 'elishisa'")
447
448 assert passes(stdchecker.singlequoting, "File '%s'\n", "'%s' Faele\n")
449 assert fails(stdchecker.singlequoting, "'Hot' plate", "Ipuleti \"elishisa\"")
450 assert passes(stdchecker.singlequoting, "It's here.", "Dit is hier.")
451
452 assert passes(stdchecker.singlequoting, "File '%s'.", "'%s' Faele.")
453 assert passes(stdchecker.singlequoting, "Blah 'format' blah.", "Blah blah 'sebopego'.")
454 assert passes(stdchecker.singlequoting, "Blah 'format' blah!", "Blah blah 'sebopego'!")
455 assert passes(stdchecker.singlequoting, "Blah 'format' blah?", "Blah blah 'sebopego'?")
456
457 assert passes(stdchecker.singlequoting, "A nickname that identifies this publishing site (e.g.: 'MySite')", "Vito ro duvulela leri tirhisiwaka ku kuma sayiti leri ro kandziyisa (xik.: 'Sayiti ra Mina')")
458 assert passes(stdchecker.singlequoting, "isn't", "ayikho")
459
460 assert passes(stdchecker.singlequoting, "Please enter a different site name.", "Tik 'n ander werfnaam in.")
461 assert passes(stdchecker.singlequoting, "\"%name%\" already exists. Please enter a different site name.", "\"%name%\" bestaan reeds. Tik 'n ander werfnaam in.")
462
463 mozillachecker = checks.MozillaChecker()
464 assert passes(mozillachecker.singlequoting, "&Don't import anything", "&Moenie enigiets invoer nie")
465 ooochecker = checks.OpenOfficeChecker()
466 assert passes(ooochecker.singlequoting, "~Don't import anything", "~Moenie enigiets invoer nie")
467
469 """tests simple caps"""
470
471
472 stdchecker = checks.StandardChecker()
473 assert passes(stdchecker.simplecaps, "MB of disk space for the cache.", "MB yendzawo yediski etsala.")
474
475 assert passes(stdchecker.simplecaps, "if you say I want", "as jy se ek wil")
476 assert passes(stdchecker.simplecaps, "sentence. I want more.", "sin. Ek wil meer he.")
477 assert passes(stdchecker.simplecaps, "Where are we? I can't see where we are going.", "Waar is ons? Ek kan nie sien waar ons gaan nie.")
478
479 stdchecker = checks.StandardChecker(checks.CheckerConfig(varmatches=[("%", 1)]))
480 assert passes(stdchecker.simplecaps, "Could not load %s", "A swi koteki ku panga %S")
481 assert passes(stdchecker.simplecaps, "The element \"%S\" is not recognized.", "Elemente \"%S\" a yi tiveki.")
482 stdchecker = checks.StandardChecker(checks.CheckerConfig(varmatches=[("&", ";")]))
483 assert passes(stdchecker.simplecaps, "Determine how &brandShortName; connects to the Internet.", "Kuma &brandShortName; hlanganisa eka Internete.")
484
485 assert passes(stdchecker.simplecaps, "COUPDAYS", "COUPMALANGA")
486
487 assert passes(stdchecker.simplecaps, "Create a query entering an SQL statement directly.", "Yakha sibuti singena SQL inkhomba yesitatimende.")
488 ooochecker = checks.OpenOfficeChecker()
489 assert passes(ooochecker.simplecaps, "SOLK (%PRODUCTNAME Link)", "SOLK (%PRODUCTNAME Thumanyo)")
490 assert passes(ooochecker.simplecaps, "%STAROFFICE Image", "Tshifanyiso tsha %STAROFFICE")
491 assert passes(stdchecker.simplecaps, "Flies, flies, everywhere! Ack!", u"Vlieë, oral vlieë! Jig!")
492
498
500 """tests starting capitals"""
501 stdchecker = checks.StandardChecker()
502 assert passes(stdchecker.startcaps, "Find", "Vind")
503 assert passes(stdchecker.startcaps, "find", "vind")
504 assert fails(stdchecker.startcaps, "Find", "vind")
505 assert fails(stdchecker.startcaps, "find", "Vind")
506 assert passes(stdchecker.startcaps, "'", "'")
507 assert passes(stdchecker.startcaps, "\\.,/?!`'\"[]{}()@#$%^&*_-;:<>Find", "\\.,/?!`'\"[]{}()@#$%^&*_-;:<>Vind")
508
509 assert passes(stdchecker.startcaps, " Find", " Vind")
510 assert passes(stdchecker.startcaps, " find", " vind")
511 assert fails(stdchecker.startcaps, " Find", " vind")
512 assert fails(stdchecker.startcaps, " find", " Vind")
513
514 assert passes(stdchecker.startcaps, "'Find", "'Vind")
515 assert passes(stdchecker.startcaps, "'find", "'vind")
516 assert fails(stdchecker.startcaps, "'Find", "'vind")
517 assert fails(stdchecker.startcaps, "'find", "'Vind")
518
519 assert passes(stdchecker.startcaps, "Find", u"Šind")
520 assert passes(stdchecker.startcaps, "find", u"šind")
521 assert fails(stdchecker.startcaps, "Find", u"šind")
522 assert fails(stdchecker.startcaps, "find", u"Šind")
523
524 assert passes(stdchecker.startcaps, "A text enclosed...", u"Ḽiṅwalwa ḽo katelwaho...")
525 assert fails(stdchecker.startcaps, "A text enclosed...", u"ḽiṅwalwa ḽo katelwaho...")
526
527
528 stdchecker = checks.StandardChecker(checks.CheckerConfig(accelmarkers="&"))
529 assert passes(stdchecker.startcaps, "&Find", "Vi&nd")
530
531
532 stdchecker = checks.StandardChecker(checks.CheckerConfig(targetlanguage='af'))
533 assert passes(stdchecker.startcaps, "A cow", "'n Koei")
534 assert passes(stdchecker.startcaps, "A list of ", "'n Lys van ")
535
536
537 assert passes(stdchecker.startcaps, "'Do it'", "'Doen dit'")
538 assert fails(stdchecker.startcaps, "'Closer than'", "'nader as'")
539 assert passes(stdchecker.startcaps, "List", "Lys")
540 assert passes(stdchecker.startcaps, "a cow", "'n koei")
541 assert fails(stdchecker.startcaps, "a cow", "'n Koei")
542 assert passes(stdchecker.startcaps, "(A cow)", "('n Koei)")
543 assert fails(stdchecker.startcaps, "(a cow)", "('n Koei)")
544
551
557
559 """tests unchanged entries"""
560 stdchecker = checks.StandardChecker(checks.CheckerConfig(accelmarkers="&"))
561 assert fails(stdchecker.unchanged, "Unchanged", "Unchanged")
562 assert fails(stdchecker.unchanged, "&Unchanged", "Un&changed")
563 assert passes(stdchecker.unchanged, "Unchanged", "Changed")
564 assert passes(stdchecker.unchanged, "1234", "1234")
565 assert passes(stdchecker.unchanged, "2×2", "2×2")
566 assert passes(stdchecker.unchanged, "I", "I")
567 assert passes(stdchecker.unchanged, " ", " ")
568 assert passes(stdchecker.unchanged, "???", "???")
569 assert passes(stdchecker.unchanged, "&ACRONYM", "&ACRONYM")
570 assert passes(stdchecker.unchanged, "F1", "F1")
571
572 mozillachecker = checks.MozillaChecker()
573 assert passes(mozillachecker.unchanged, "$ProgramName$", "$ProgramName$")
574 assert passes(mozillachecker.unchanged, "$file$ : $dir$", "$file$ : $dir$")
575 assert fails(mozillachecker.unchanged, "$file$ in $dir$", "$file$ in $dir$")
576
577 stdchecker = checks.StandardChecker(checks.CheckerConfig(notranslatewords=["Mozilla"]))
578 assert passes(stdchecker.unchanged, "Mozilla", "Mozilla")
579
587
589 """tests valid characters"""
590 stdchecker = checks.StandardChecker(checks.CheckerConfig())
591 assert passes(stdchecker.validchars, "The check always passes if you don't specify chars", "Die toets sal altyd werk as jy nie karacters specifisier")
592 stdchecker = checks.StandardChecker(checks.CheckerConfig(validchars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'))
593 assert passes(stdchecker.validchars, "This sentence contains valid characters", "Hierdie sin bevat ware karakters")
594 assert fails(stdchecker.validchars, "Some unexpected characters", "©®°±÷¼½¾")
595 stdchecker = checks.StandardChecker(checks.CheckerConfig(validchars='⠁⠂⠃⠄⠅⠆⠇⠈⠉⠊⠋⠌⠍⠎⠏⠐⠑⠒⠓⠔⠕⠖⠗⠘⠙⠚⠛⠜⠝⠞⠟⠠⠡⠢⠣⠤⠥⠦⠧⠨⠩⠪⠫⠬⠭⠮⠯⠰'))
596 assert passes(stdchecker.validchars, "Our target language is all non-ascii", "⠁⠂⠃⠄⠆⠇⠈⠉⠜⠝⠞⠟⠠⠡⠢⠣⠤⠥⠦⠧⠨⠩⠪⠫")
597 assert fails(stdchecker.validchars, "Our target language is all non-ascii", "Some ascii⠁⠂⠃⠄⠆⠇⠈⠉⠜⠝⠞⠟⠠⠡⠢⠣⠤⠥⠦⠧⠨⠩⠪⠫")
598 stdchecker = checks.StandardChecker(checks.CheckerConfig(validchars=u'\u004c\u032d'))
599 assert passes(stdchecker.validchars, "This sentence contains valid chars", u"\u004c\u032d")
600 assert passes(stdchecker.validchars, "This sentence contains valid chars", u"\u1e3c")
601 stdchecker = checks.StandardChecker(checks.CheckerConfig(validchars=u'\u1e3c'))
602 assert passes(stdchecker.validchars, "This sentence contains valid chars", u"\u1e3c")
603 assert passes(stdchecker.validchars, "This sentence contains valid chars", u"\u004c\u032d")
604
606 """tests variables in KDE translations"""
607
608 kdechecker = checks.KdeChecker()
609 assert passes(kdechecker.variables, "%d files of type %s saved.", "%d leers van %s tipe gestoor.")
610 assert fails_serious(kdechecker.variables, "%d files of type %s saved.", "%s leers van %s tipe gestoor.")
611
613 """tests variables in GNOME translations"""
614
615 gnomechecker = checks.GnomeChecker()
616 assert passes(gnomechecker.variables, "%d files of type %s saved.", "%d leers van %s tipe gestoor.")
617 assert fails_serious(gnomechecker.variables, "%d files of type %s saved.", "%s leers van %s tipe gestoor.")
618 assert passes(gnomechecker.variables, "Save $(file)", "Stoor $(file)")
619 assert fails_serious(gnomechecker.variables, "Save $(file)", "Stoor $(leer)")
620
622 """tests variables in Mozilla translations"""
623
624 mozillachecker = checks.MozillaChecker()
625 assert passes(mozillachecker.variables, "Use the &brandShortname; instance.", "Gebruik die &brandShortname; weergawe.")
626 assert fails_serious(mozillachecker.variables, "Use the &brandShortname; instance.", "Gebruik die &brandKortnaam; weergawe.")
627 assert passes(mozillachecker.variables, "Save %file%", "Stoor %file%")
628 assert fails_serious(mozillachecker.variables, "Save %file%", "Stoor %leer%")
629 assert passes(mozillachecker.variables, "Save $file$", "Stoor $file$")
630 assert fails_serious(mozillachecker.variables, "Save $file$", "Stoor $leer$")
631 assert passes(mozillachecker.variables, "%d files of type %s saved.", "%d leers van %s tipe gestoor.")
632 assert fails_serious(mozillachecker.variables, "%d files of type %s saved.", "%s leers van %s tipe gestoor.")
633 assert passes(mozillachecker.variables, "Save $file", "Stoor $file")
634 assert fails_serious(mozillachecker.variables, "Save $file", "Stoor $leer")
635 assert passes(mozillachecker.variables, "About $ProgramName$", "Oor $ProgramName$")
636 assert fails_serious(mozillachecker.variables, "About $ProgramName$", "Oor $NaamVanProgam$")
637 assert passes(mozillachecker.variables, "About $_CLICK", "Oor $_CLICK")
638 assert fails_serious(mozillachecker.variables, "About $_CLICK", "Oor $_KLIK")
639 assert passes(mozillachecker.variables, "About $(^NameDA)", "Oor $(^NameDA)")
640 assert fails_serious(mozillachecker.variables, "About $(^NameDA)", "Oor $(^NaamDA)")
641
642 assert fails_serious(mozillachecker.variables, "Create In <<", "Etsa ka Ho <lt;")
643
644 assert fails_serious(mozillachecker.variables, "...time you start &brandShortName;.", "...lekgetlo le latelang ha o qala &LebitsoKgutshwane la kgwebo;.")
645
646 assert fails_serious(mozillachecker.variables, "&brandShortName; successfully downloaded and installed updates. You will have to restart &brandShortName; to complete the update.", "&brandShortName; ḽo dzhenisa na u longela khwinifhadzo zwavhuḓi. Ni ḓo tea u thoma hafhu &DzinaḼipfufhi ḽa pfungavhuṇe; u itela u fhedzisa khwinifha dzo.")
647
648 assert fails_serious(mozillachecker.variables, "Welcome to the &pluginWizard.title;", "Wamkelekile kwi&Sihloko Soncedo lwe-plugin;")
649
650 assert fails_serious(mozillachecker.variables, "\"%S\" is an executable file.... Are you sure you want to launch \"%S\"?", ".... Uyaqiniseka ukuthi ufuna ukuqalisa I\"%S\"?")
651
652 assert passes(mozillachecker.variables, "for reporting $ProductShortName$ crash information", "okokubika ukwaziswa kokumosheka kwe-$ProductShortName$")
653
654 assert fails_serious(mozillachecker.variables, "&brandShortName;", "&brandShortName;")
655
657 """tests variables in OpenOffice translations"""
658
659 ooochecker = checks.OpenOfficeChecker()
660 assert passes(ooochecker.variables, "Use the &brandShortname; instance.", "Gebruik die &brandShortname; weergawe.")
661 assert fails_serious(ooochecker.variables, "Use the &brandShortname; instance.", "Gebruik die &brandKortnaam; weergawe.")
662 assert passes(ooochecker.variables, "Save %file%", "Stoor %file%")
663 assert fails_serious(ooochecker.variables, "Save %file%", "Stoor %leer%")
664 assert passes(ooochecker.variables, "Save %file", "Stoor %file")
665 assert fails_serious(ooochecker.variables, "Save %file", "Stoor %leer")
666 assert passes(ooochecker.variables, "Save %1", "Stoor %1")
667 assert fails_serious(ooochecker.variables, "Save %1", "Stoor %2")
668 assert passes(ooochecker.variables, "Save %", "Stoor %")
669 assert fails_serious(ooochecker.variables, "Save %", "Stoor")
670 assert passes(ooochecker.variables, "Save $(file)", "Stoor $(file)")
671 assert fails_serious(ooochecker.variables, "Save $(file)", "Stoor $(leer)")
672 assert passes(ooochecker.variables, "Save $file$", "Stoor $file$")
673 assert fails_serious(ooochecker.variables, "Save $file$", "Stoor $leer$")
674 assert passes(ooochecker.variables, "Save ${file}", "Stoor ${file}")
675 assert fails_serious(ooochecker.variables, "Save ${file}", "Stoor ${leer}")
676 assert passes(ooochecker.variables, "Save #file#", "Stoor #file#")
677 assert fails_serious(ooochecker.variables, "Save #file#", "Stoor #leer#")
678 assert passes(ooochecker.variables, "Save #1", "Stoor #1")
679 assert fails_serious(ooochecker.variables, "Save #1", "Stoor #2")
680 assert passes(ooochecker.variables, "Save #", "Stoor #")
681 assert fails_serious(ooochecker.variables, "Save #", "Stoor")
682 assert passes(ooochecker.variables, "Save ($file)", "Stoor ($file)")
683 assert fails_serious(ooochecker.variables, "Save ($file)", "Stoor ($leer)")
684 assert passes(ooochecker.variables, "Save $[file]", "Stoor $[file]")
685 assert fails_serious(ooochecker.variables, "Save $[file]", "Stoor $[leer]")
686 assert passes(ooochecker.variables, "Save [file]", "Stoor [file]")
687 assert fails_serious(ooochecker.variables, "Save [file]", "Stoor [leer]")
688 assert passes(ooochecker.variables, "Save $file", "Stoor $file")
689 assert fails_serious(ooochecker.variables, "Save $file", "Stoor $leer")
690
691 assert fails_serious(ooochecker.variables, r"""Start %PROGRAMNAME% as %PROGRAMNAME%""", "Begin %PROGRAMNAME%")
692
694 """Tests variables in Creative Commons translations."""
695 checker = checks.CCLicenseChecker()
696 assert passes(checker.variables, "CC-GNU @license_code@.", "CC-GNU @license_code@.")
697 assert fails_serious(checker.variables, "CC-GNU @license_code@.", "CC-GNU @lisensie_kode@.")
698 assert passes(checker.variables, "Deed to the @license_name_full@", "Akte vir die @license_name_full@")
699 assert fails_serious(checker.variables, "Deed to the @license_name_full@", "Akte vir die @volle_lisensie@")
700 assert passes(checker.variables, "The @license_name_full@ is", "Die @license_name_full@ is")
701 assert fails_serious(checker.variables, "The @license_name_full@ is", "Die @iiilicense_name_full@ is")
702 assert fails_serious(checker.variables, "A @ccvar@", "'n @ccvertaaldeveranderlike@")
703
722
738
740 """tests to see that funtions() are not translated"""
741 stdchecker = checks.StandardChecker()
742 assert fails(stdchecker.functions, "blah rgb() blah", "blee brg() blee")
743 assert passes(stdchecker.functions, "blah rgb() blah", "blee rgb() blee")
744 assert fails(stdchecker.functions, "percentage in rgb()", "phesenthe kha brg()")
745 assert passes(stdchecker.functions, "percentage in rgb()", "phesenthe kha rgb()")
746 assert fails(stdchecker.functions, "rgb() in percentage", "brg() kha phesenthe")
747 assert passes(stdchecker.functions, "rgb() in percentage", "rgb() kha phesenthe")
748 assert fails(stdchecker.functions, "blah string.rgb() blah", "blee bleeb.rgb() blee")
749 assert passes(stdchecker.functions, "blah string.rgb() blah", "blee string.rgb() blee")
750 assert passes(stdchecker.functions, "or domain().", "domain() verwag.")
751 assert passes(stdchecker.functions, "Expected url(), url-prefix(), or domain().", "url(), url-prefix() of domain() verwag.")
752
754 """tests to see that email addresses are not translated"""
755 stdchecker = checks.StandardChecker()
756 assert fails(stdchecker.emails, "blah bob@example.net blah", "blee kobus@voorbeeld.net blee")
757 assert passes(stdchecker.emails, "blah bob@example.net blah", "blee bob@example.net blee")
758
760 """tests to see that URLs are not translated"""
761 stdchecker = checks.StandardChecker()
762 assert fails(stdchecker.urls, "blah http://translate.org.za blah", "blee http://vertaal.org.za blee")
763 assert passes(stdchecker.urls, "blah http://translate.org.za blah", "blee http://translate.org.za blee")
764
766 """test that we can find English style plural(s)"""
767 stdchecker = checks.StandardChecker()
768 assert passes(stdchecker.simpleplurals, "computer(s)", "rekenaar(s)")
769 assert fails(stdchecker.simpleplurals, "plural(s)", "meervoud(e)")
770 assert fails(stdchecker.simpleplurals, "Ungroup Metafile(s)...", "Kuvhanganyululani Metafaela(dzi)...")
771
772
773 stdchecker = checks.StandardChecker(checks.CheckerConfig(targetlanguage='vi'))
774 assert passes(stdchecker.simpleplurals, "computer(s)", u"Máy tính")
775 assert fails(stdchecker.simpleplurals, "computer(s)", u"Máy tính(s)")
776
778 """Test that we can find the wrong number of plural forms. Note that this
779 test uses a UnitChecker, not a translation checker."""
780 checker = checks.StandardUnitChecker()
781 unit = po.pounit("")
782
783 unit.source = ["%d file", "%d files"]
784 unit.target = [u"%d lêer", u"%d lêers"]
785 assert checker.nplurals(unit)
786
787 checker = checks.StandardUnitChecker(checks.CheckerConfig(targetlanguage='af'))
788 unit.source = "%d files"
789 unit.target = "%d lêer"
790 assert checker.nplurals(unit)
791
792 unit.source = ["%d file", "%d files"]
793 unit.target = [u"%d lêer", u"%d lêers"]
794 assert checker.nplurals(unit)
795
796 unit.source = ["%d file", "%d files"]
797 unit.target = [u"%d lêer", u"%d lêers", u"%d lêeeeers"]
798 assert not checker.nplurals(unit)
799
800 unit.source = ["%d file", "%d files"]
801 unit.target = [u"%d lêer"]
802 assert not checker.nplurals(unit)
803
804 checker = checks.StandardUnitChecker(checks.CheckerConfig(targetlanguage='km'))
805 unit.source = "%d files"
806 unit.target = "%d ឯកសារ"
807 assert checker.nplurals(unit)
808
809 unit.source = ["%d file", "%d files"]
810 unit.target = [u"%d ឯកសារ"]
811 assert checker.nplurals(unit)
812
813 unit.source = ["%d file", "%d files"]
814 unit.target = [u"%d ឯកសារ", u"%d lêers"]
815 assert not checker.nplurals(unit)
816
818 """tests credits"""
819 stdchecker = checks.StandardChecker()
820 assert passes(stdchecker.credits, "File", "iFayile")
821 assert passes(stdchecker.credits, "&File", "&Fayile")
822 assert passes(stdchecker.credits, "translator-credits", "Ekke, ekke!")
823 assert passes(stdchecker.credits, "Your names", "Ekke, ekke!")
824 assert passes(stdchecker.credits, "ROLES_OF_TRANSLATORS", "Ekke, ekke!")
825 kdechecker = checks.KdeChecker()
826 assert passes(kdechecker.credits, "File", "iFayile")
827 assert passes(kdechecker.credits, "&File", "&Fayile")
828 assert passes(kdechecker.credits, "translator-credits", "Ekke, ekke!")
829 assert fails(kdechecker.credits, "Your names", "Ekke, ekke!")
830 assert fails(kdechecker.credits, "ROLES_OF_TRANSLATORS", "Ekke, ekke!")
831 gnomechecker = checks.GnomeChecker()
832 assert passes(gnomechecker.credits, "File", "iFayile")
833 assert passes(gnomechecker.credits, "&File", "&Fayile")
834 assert fails(gnomechecker.credits, "translator-credits", "Ekke, ekke!")
835 assert passes(gnomechecker.credits, "Your names", "Ekke, ekke!")
836 assert passes(gnomechecker.credits, "ROLES_OF_TRANSLATORS", "Ekke, ekke!")
837