1   
  2   
  3   
  4  from translate.convert import po2tmx 
  5  from translate.convert import test_convert 
  6  from translate.misc import wStringIO 
  7  from translate.storage import tmx 
  8  from translate.storage import lisa 
  9   
 11   
 12 -    def po2tmx(self, posource, sourcelanguage='en', targetlanguage='af'): 
  13          """helper that converts po source to tmx source without requiring files""" 
 14          inputfile = wStringIO.StringIO(posource) 
 15          outputfile = wStringIO.StringIO() 
 16          outputfile.tmxfile = tmx.tmxfile(inputfile=None, sourcelanguage=sourcelanguage) 
 17          po2tmx.convertpo(inputfile, outputfile, templatefile=None, sourcelanguage=sourcelanguage, targetlanguage=targetlanguage) 
 18          return outputfile.tmxfile 
  19   
 21          minipo = """# Afrikaans translation of program ABC 
 22  # 
 23  msgid "" 
 24  msgstr "" 
 25  "Project-Id-Version: program 2.1-branch\n" 
 26  "Report-Msgid-Bugs-To: \n" 
 27  "POT-Creation-Date: 2006-01-09 07:15+0100\n" 
 28  "PO-Revision-Date: 2004-03-30 17:02+0200\n" 
 29  "Last-Translator: Zuza Software Foundation <xxx@translate.org.za>\n" 
 30  "Language-Team: Afrikaans <translate-discuss-xxx@lists.sourceforge.net>\n" 
 31  "MIME-Version: 1.0\n" 
 32  "Content-Type: text/plain; charset=UTF-8\n" 
 33  "Content-Transfer-Encoding: 8bit\n" 
 34   
 35  # Please remember to do something 
 36  #: ../dir/file.xml.in.h:1 ../dir/file2.xml.in.h:4 
 37  msgid "Applications" 
 38  msgstr "Toepassings" 
 39  """ 
 40          tmx = self.po2tmx(minipo) 
 41          print "The generated xml:" 
 42          print str(tmx) 
 43          assert tmx.translate("Applications") == "Toepassings" 
 44          assert tmx.translate("bla") is None 
 45          xmltext = str(tmx) 
 46          assert xmltext.index('creationtool="Translate Toolkit - po2tmx"') 
 47          assert xmltext.index('adminlang') 
 48          assert xmltext.index('creationtoolversion') 
 49          assert xmltext.index('datatype') 
 50          assert xmltext.index('o-tmf') 
 51          assert xmltext.index('segtype') 
 52          assert xmltext.index('srclang') 
  53   
 55          minipo = 'msgid "String"\nmsgstr "String"\n' 
 56          tmx = self.po2tmx(minipo, sourcelanguage="xh") 
 57          print "The generated xml:" 
 58          print str(tmx) 
 59          header = tmx.document.find("header") 
 60          assert header.get("srclang") == "xh" 
  61           
 63          minipo = 'msgid "String"\nmsgstr "String"\n' 
 64          tmx = self.po2tmx(minipo, targetlanguage="xh") 
 65          print "The generated xml:" 
 66          print str(tmx) 
 67          tuv = tmx.document.findall(".//%s" % tmx.namespaced("tuv"))[1] 
 68           
 69          assert tuv.get("{%s}lang" % lisa.XML_NS) == "xh" 
  70           
 72          """Test multiline po entry""" 
 73          minipo = r'''msgid "First part " 
 74  "and extra" 
 75  msgstr "Eerste deel " 
 76  "en ekstra"''' 
 77          tmx = self.po2tmx(minipo) 
 78          print "The generated xml:" 
 79          print str(tmx) 
 80          assert tmx.translate('First part and extra') == 'Eerste deel en ekstra' 
  81   
 82           
 84          """Test the escaping of newlines""" 
 85          minipo = r'''msgid "First line\nSecond line" 
 86  msgstr "Eerste lyn\nTweede lyn" 
 87  ''' 
 88          tmx = self.po2tmx(minipo) 
 89          print "The generated xml:" 
 90          print str(tmx) 
 91          assert tmx.translate("First line\nSecond line") == "Eerste lyn\nTweede lyn" 
  92   
 94          """Test the escaping of tabs""" 
 95          minipo = r'''msgid "First column\tSecond column" 
 96  msgstr "Eerste kolom\tTweede kolom" 
 97  ''' 
 98          tmx = self.po2tmx(minipo) 
 99          print "The generated xml:" 
100          print str(tmx) 
101          assert tmx.translate("First column\tSecond column") == "Eerste kolom\tTweede kolom" 
 102   
104          """Test the escaping of quotes (and slash)""" 
105          minipo = r'''msgid "Hello \"Everyone\"" 
106  msgstr "Good day \"All\"" 
107   
108  msgid "Use \\\"." 
109  msgstr "Gebruik \\\"." 
110  ''' 
111          tmx = self.po2tmx(minipo) 
112          print "The generated xml:" 
113          print str(tmx) 
114          assert tmx.translate('Hello "Everyone"') == 'Good day "All"' 
115          assert tmx.translate(r'Use \".') == r'Gebruik \".' 
 116   
118          """Test that empty and fuzzy messages are excluded""" 
119          minipo = r'''#, fuzzy 
120  msgid "One" 
121  msgstr "Een" 
122   
123  msgid "Two" 
124  msgstr "" 
125   
126  msgid "" 
127  msgstr "Drie" 
128  ''' 
129          tmx = self.po2tmx(minipo) 
130          print "The generated xml:" 
131          print str(tmx) 
132          assert "<tu" not in str(tmx) 
133          assert len(tmx.units) == 0 
 134   
136          """Tests that non-ascii conversion works.""" 
137          minipo = r'''msgid "Bézier curve" 
138  msgstr "Bézier-kurwe" 
139  ''' 
140          tmx = self.po2tmx(minipo) 
141          print str(tmx) 
142          assert tmx.translate(u"Bézier curve") == u"Bézier-kurwe" 
  143   
144   
146      """Tests running actual po2tmx commands on files""" 
147      convertmodule = po2tmx 
148   
 154