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