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