1   
  2   
  3   
  4   
  5   
  6   
  7   
  8   
  9   
 10   
 11   
 12   
 13   
 14   
 15   
 16   
 17   
 18   
 19   
 20   
 21   
 22   
 23  """module for parsing TMX translation memeory files""" 
 24   
 25  from translate.storage import lisa 
 26  from lxml import etree 
 27   
 28  from translate import __version__ 
 29   
 31      """A single unit in the TMX file.""" 
 32      rootNode = "tu" 
 33      languageNode = "tuv" 
 34      textNode = "seg" 
 35                      
 45   
 46 -    def addnote(self, text, origin=None): 
  47          """Add a note specifically in a "note" tag. 
 48           
 49          The origin parameter is ignored""" 
 50          if isinstance(text, str): 
 51              text = text.decode("utf-8") 
 52          note = etree.SubElement(self.xmlelement, self.namespaced("note")) 
 53          note.text = text.strip() 
  54    
 56          """Private method that returns the text from notes. 
 57           
 58          The origin parameter is ignored..""" 
 59          note_nodes = self.xmlelement.findall(".//%s" % self.namespaced("note")) 
 60          note_list = [lisa.getText(note) for note in note_nodes] 
 61   
 62          return note_list  
  63   
 66   
 68          """Remove all the translator notes.""" 
 69          notes = self.xmlelement.findall(".//%s" % self.namespaced("note")) 
 70          for note in notes: 
 71              self.xmlelement.remove(note) 
  72   
 73 -    def adderror(self, errorname, errortext): 
  74          """Adds an error message to this unit.""" 
 75           
 76          text = errorname + ': ' + errortext 
 77          self.addnote(text, origin="pofilter") 
  78   
 80          """Get all error messages.""" 
 81           
 82          notelist = self.getnotelist(origin="pofilter") 
 83          errordict = {} 
 84          for note in notelist: 
 85              errorname, errortext = note.split(': ') 
 86              errordict[errorname] = errortext 
 87          return errordict 
   88   
 89   
 91      """Class representing a TMX file store.""" 
 92      UnitClass = tmxunit 
 93      rootNode = "tmx" 
 94      bodyNode = "body" 
 95      XMLskeleton = '''<?xml version="1.0" encoding="utf-8"?> 
 96  <!DOCTYPE tmx SYSTEM "tmx14.dtd"> 
 97  <tmx version="1.4"> 
 98  <header></header> 
 99  <body></body> 
100  </tmx>''' 
101       
103          headernode = self.document.find("//%s" % self.namespaced("header")) 
104          headernode.set("creationtool", "Translate Toolkit - po2tmx") 
105          headernode.set("creationtoolversion", __version__.ver) 
106          headernode.set("segtype", "sentence") 
107          headernode.set("o-tmf", "UTF-8") 
108          headernode.set("adminlang", "en") 
109           
110          headernode.set("srclang", self.sourcelanguage) 
111          headernode.set("datatype", "PlainText") 
 112           
113           
114   
122   
123 -    def translate(self, sourcetext, sourcelang=None, targetlang=None): 
 124          """method to test old unit tests""" 
125          return getattr(self.findunit(sourcetext), "target", None) 
  126