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