| LEFT | RIGHT |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 | 2 |
| 3 from translate.convert import po2xliff | 3 from translate.convert import po2xliff |
| 4 from translate.storage import po | 4 from translate.storage import po |
| 5 from translate.storage import poxliff | 5 from translate.storage import poxliff |
| 6 from translate.storage import lisa | 6 from translate.storage import lisa |
| 7 | 7 |
| 8 class TestPO2XLIFF: | 8 class TestPO2XLIFF: |
| 9 | 9 |
| 10 def po2xliff(self, posource, sourcelanguage='en', targetlanguage=None): | 10 def po2xliff(self, posource, sourcelanguage='en', targetlanguage=None): |
| 11 """helper that converts po source to xliff source without requiring file
s""" | 11 """helper that converts po source to xliff source without requiring file
s""" |
| 12 postore = po.pofile(posource) | 12 postore = po.pofile(posource) |
| 13 convertor = po2xliff.po2xliff() | 13 convertor = po2xliff.po2xliff() |
| 14 outputxliff = convertor.convertstore(postore, None, sourcelanguage=sourc
elanguage, targetlanguage=targetlanguage) | 14 outputxliff = convertor.convertstore(postore, None, sourcelanguage=sourc
elanguage, targetlanguage=targetlanguage) |
| 15 return poxliff.PoXliffFile(outputxliff) | 15 return poxliff.PoXliffFile(outputxliff) |
| 16 | 16 |
| 17 def getnode(self, xliff): | 17 def getnode(self, xliff): |
| 18 """Retrieves the trans-unit node from the dom""" | 18 """Retrieves the trans-unit node from the dom""" |
| 19 assert len(xliff.units) == 1 | 19 assert len(xliff.units) == 1 |
| 20 unit = xliff.units[0] | 20 unit = xliff.units[0] |
| 21 return unit | 21 return unit |
| 22 | 22 |
| 23 def test_minimal(self): | 23 def test_minimal(self): |
| 24 minipo = '''msgid "red"\nmsgstr "rooi"\n''' | 24 minipo = '''msgid "red"\nmsgstr "rooi"\n''' |
| 25 xliff = self.po2xliff(minipo) | 25 xliff = self.po2xliff(minipo) |
| 26 print "The generated xml:" | 26 print "The generated xml:" |
| 27 print str(xliff) | 27 print str(xliff) |
| 28 assert len(xliff.units) == 1 | 28 assert len(xliff.units) == 1 |
| 29 assert xliff.translate("red") == "rooi" | 29 assert xliff.translate("red") == "rooi" |
| 30 assert xliff.translate("bla") is None | 30 assert xliff.translate("bla") is None |
| 31 | 31 |
| 32 def test_basic(self): | 32 def test_basic(self): |
| 33 minipo = """# Afrikaans translation of program ABC | 33 minipo = """# Afrikaans translation of program ABC |
| 34 # | 34 # |
| 35 msgid "" | 35 msgid "" |
| 36 msgstr "" | 36 msgstr "" |
| 37 "Project-Id-Version: program 2.1-branch\n" | 37 "Project-Id-Version: program 2.1-branch\n" |
| 38 "Report-Msgid-Bugs-To: \n" | 38 "Report-Msgid-Bugs-To: \n" |
| 39 "POT-Creation-Date: 2006-01-09 07:15+0100\n" | 39 "POT-Creation-Date: 2006-01-09 07:15+0100\n" |
| 40 "PO-Revision-Date: 2004-03-30 17:02+0200\n" | 40 "PO-Revision-Date: 2004-03-30 17:02+0200\n" |
| 41 "Last-Translator: Zuza Software Foundation <xxx@translate.org.za>\n" | 41 "Last-Translator: Zuza Software Foundation <xxx@translate.org.za>\n" |
| 42 "Language-Team: Afrikaans <translate-discuss-xxx@lists.sourceforge.net>\n" | 42 "Language-Team: Afrikaans <translate-discuss-xxx@lists.sourceforge.net>\n" |
| 43 "MIME-Version: 1.0\n" | 43 "MIME-Version: 1.0\n" |
| 44 "Content-Type: text/plain; charset=UTF-8\n" | 44 "Content-Type: text/plain; charset=UTF-8\n" |
| 45 "Content-Transfer-Encoding: 8bit\n" | 45 "Content-Transfer-Encoding: 8bit\n" |
| 46 | 46 |
| 47 # Please remember to do something | 47 # Please remember to do something |
| 48 #: ../dir/file.xml.in.h:1 ../dir/file2.xml.in.h:4 | 48 #: ../dir/file.xml.in.h:1 ../dir/file2.xml.in.h:4 |
| 49 msgid "Applications" | 49 msgid "Applications" |
| 50 msgstr "Toepassings" | 50 msgstr "Toepassings" |
| 51 """ | 51 """ |
| 52 xliff = self.po2xliff(minipo) | 52 xliff = self.po2xliff(minipo) |
| 53 print "The generated xml:" | 53 print "The generated xml:" |
| 54 print str(xliff) | 54 print str(xliff) |
| 55 assert xliff.translate("Applications") == "Toepassings" | 55 assert xliff.translate("Applications") == "Toepassings" |
| 56 assert xliff.translate("bla") is None | 56 assert xliff.translate("bla") is None |
| 57 xmltext = str(xliff) | 57 xmltext = str(xliff) |
| 58 assert xmltext.index('<xliff ') >= 0 | 58 assert xmltext.index('<xliff ') >= 0 |
| 59 assert xmltext.index(' version="1.1"') >= 0 | 59 assert xmltext.index(' version="1.1"') >= 0 |
| 60 assert xmltext.index('<file') | 60 assert xmltext.index('<file') |
| 61 assert xmltext.index('source-language') | 61 assert xmltext.index('source-language') |
| 62 assert xmltext.index('datatype') | 62 assert xmltext.index('datatype') |
| 63 | 63 |
| 64 def test_multiline(self): | 64 def test_multiline(self): |
| 65 """Test multiline po entry""" | 65 """Test multiline po entry""" |
| 66 minipo = r'''msgid "First part " | 66 minipo = r'''msgid "First part " |
| 67 "and extra" | 67 "and extra" |
| 68 msgstr "Eerste deel " | 68 msgstr "Eerste deel " |
| 69 "en ekstra"''' | 69 "en ekstra"''' |
| 70 xliff = self.po2xliff(minipo) | 70 xliff = self.po2xliff(minipo) |
| 71 print "The generated xml:" | 71 print "The generated xml:" |
| 72 print str(xliff) | 72 print str(xliff) |
| 73 assert xliff.translate('First part and extra') == 'Eerste deel en ekstra
' | 73 assert xliff.translate('First part and extra') == 'Eerste deel en ekstra
' |
| 74 | 74 |
| 75 | 75 |
| 76 def test_escapednewlines(self): | 76 def test_escapednewlines(self): |
| 77 """Test the escaping of newlines""" | 77 """Test the escaping of newlines""" |
| 78 minipo = r'''msgid "First line\nSecond line" | 78 minipo = r'''msgid "First line\nSecond line" |
| 79 msgstr "Eerste lyn\nTweede lyn" | 79 msgstr "Eerste lyn\nTweede lyn" |
| 80 ''' | 80 ''' |
| 81 xliff = self.po2xliff(minipo) | 81 xliff = self.po2xliff(minipo) |
| 82 print "The generated xml:" | 82 print "The generated xml:" |
| 83 xmltext = str(xliff) | 83 xmltext = str(xliff) |
| 84 print xmltext | 84 print xmltext |
| 85 assert xliff.translate("First line\nSecond line") == "Eerste lyn\nTweede
lyn" | 85 assert xliff.translate("First line\nSecond line") == "Eerste lyn\nTweede
lyn" |
| 86 assert xliff.translate("First line\\nSecond line") is None | 86 assert xliff.translate("First line\\nSecond line") is None |
| 87 assert xmltext.find("line\\nSecond") == -1 | 87 assert xmltext.find("line\\nSecond") == -1 |
| 88 assert xmltext.find("lyn\\nTweede") == -1 | 88 assert xmltext.find("lyn\\nTweede") == -1 |
| 89 assert xmltext.find("line\nSecond") > 0 | 89 assert xmltext.find("line\nSecond") > 0 |
| 90 assert xmltext.find("lyn\nTweede") > 0 | 90 assert xmltext.find("lyn\nTweede") > 0 |
| 91 | 91 |
| 92 def test_escapedtabs(self): | 92 def test_escapedtabs(self): |
| 93 """Test the escaping of tabs""" | 93 """Test the escaping of tabs""" |
| 94 minipo = r'''msgid "First column\tSecond column" | 94 minipo = r'''msgid "First column\tSecond column" |
| 95 msgstr "Eerste kolom\tTweede kolom" | 95 msgstr "Eerste kolom\tTweede kolom" |
| 96 ''' | 96 ''' |
| 97 xliff = self.po2xliff(minipo) | 97 xliff = self.po2xliff(minipo) |
| 98 print "The generated xml:" | 98 print "The generated xml:" |
| 99 xmltext = str(xliff) | 99 xmltext = str(xliff) |
| 100 print xmltext | 100 print xmltext |
| 101 assert xliff.translate("First column\tSecond column") == "Eerste kolom\t
Tweede kolom" | 101 assert xliff.translate("First column\tSecond column") == "Eerste kolom\t
Tweede kolom" |
| 102 assert xliff.translate("First column\\tSecond column") is None | 102 assert xliff.translate("First column\\tSecond column") is None |
| 103 assert xmltext.find("column\\tSecond") == -1 | 103 assert xmltext.find("column\\tSecond") == -1 |
| 104 assert xmltext.find("kolom\\tTweede") == -1 | 104 assert xmltext.find("kolom\\tTweede") == -1 |
| 105 assert xmltext.find("column\tSecond") > 0 | 105 assert xmltext.find("column\tSecond") > 0 |
| 106 assert xmltext.find("kolom\tTweede") > 0 | 106 assert xmltext.find("kolom\tTweede") > 0 |
| 107 | 107 |
| 108 def test_escapedquotes(self): | 108 def test_escapedquotes(self): |
| 109 """Test the escaping of quotes (and slash)""" | 109 """Test the escaping of quotes (and slash)""" |
| 110 minipo = r'''msgid "Hello \"Everyone\"" | 110 minipo = r'''msgid "Hello \"Everyone\"" |
| 111 msgstr "Good day \"All\"" | 111 msgstr "Good day \"All\"" |
| 112 | 112 |
| 113 msgid "Use \\\"." | 113 msgid "Use \\\"." |
| 114 msgstr "Gebruik \\\"." | 114 msgstr "Gebruik \\\"." |
| 115 ''' | 115 ''' |
| 116 xliff = self.po2xliff(minipo) | 116 xliff = self.po2xliff(minipo) |
| 117 print "The generated xml:" | 117 print "The generated xml:" |
| 118 xmltext = str(xliff) | 118 xmltext = str(xliff) |
| 119 print xmltext | 119 print xmltext |
| 120 assert xliff.translate('Hello "Everyone"') == 'Good day "All"' | 120 assert xliff.translate('Hello "Everyone"') == 'Good day "All"' |
| 121 assert xliff.translate(r'Use \".') == r'Gebruik \".' | 121 assert xliff.translate(r'Use \".') == r'Gebruik \".' |
| 122 assert xmltext.find(r'\"') > 0 or xmltext.find(r'\"') > 0 | 122 assert xmltext.find(r'\"') > 0 or xmltext.find(r'\"') > 0 |
| 123 assert xmltext.find(r"\\") == -1 | 123 assert xmltext.find(r"\\") == -1 |
| 124 | 124 |
| 125 def getcontexttuples(self, node, namespace): | 125 def getcontexttuples(self, node, namespace): |
| 126 """Returns all the information in the context nodes as a list of tuples | 126 """Returns all the information in the context nodes as a list of tuples |
| 127 of (type, text)""" | 127 of (type, text)""" |
| 128 contexts = node.findall(".//{%s}context" % namespace) | 128 contexts = node.findall(".//{%s}context" % namespace) |
| 129 return [(context.get("context-type"), lisa.getText(context)) for context
in contexts] | 129 return [(context.get("context-type"), lisa.getText(context)) for context
in contexts] |
| 130 | 130 |
| 131 def test_locationcomments(self): | 131 def test_locationcomments(self): |
| 132 minipo = r'''#: file.c:123 asdf.c | 132 minipo = r'''#: file.c:123 asdf.c |
| 133 msgid "one" | 133 msgid "one" |
| 134 msgstr "kunye" | 134 msgstr "kunye" |
| 135 ''' | 135 ''' |
| 136 xliff = self.po2xliff(minipo) | 136 xliff = self.po2xliff(minipo) |
| 137 print "The generated xml:" | 137 print "The generated xml:" |
| 138 xmltext = str(xliff) | 138 xmltext = str(xliff) |
| 139 print xmltext | 139 print xmltext |
| 140 assert xliff.translate("one") == "kunye" | 140 assert xliff.translate("one") == "kunye" |
| 141 assert len(xliff.units) == 1 | 141 assert len(xliff.units) == 1 |
| 142 node = xliff.units[0].xmlelement | 142 node = xliff.units[0].xmlelement |
| 143 contextgroups = node.findall(".//%s" % xliff.namespaced("context-group")
) | 143 contextgroups = node.findall(".//%s" % xliff.namespaced("context-group")
) |
| 144 assert len(contextgroups) == 2 | 144 assert len(contextgroups) == 2 |
| 145 for group in contextgroups: | 145 for group in contextgroups: |
| 146 assert group.get("name").startswith("po-reference") | 146 assert group.get("name") == "po-reference" |
| 147 assert group.get("purpose") == "location" | 147 assert group.get("purpose") == "location" |
| 148 tuples = self.getcontexttuples(node, xliff.namespace) | 148 tuples = self.getcontexttuples(node, xliff.namespace) |
| 149 assert tuples == [("sourcefile", "file.c"), ("linenumber", "123"), ("sou
rcefile", "asdf.c")] | 149 assert tuples == [("sourcefile", "file.c"), ("linenumber", "123"), ("sou
rcefile", "asdf.c")] |
| 150 | 150 |
| 151 def test_othercomments(self): | 151 def test_othercomments(self): |
| 152 minipo = r'''# Translate? | 152 minipo = r'''# Translate? |
| 153 # How? | 153 # How? |
| 154 msgid "one" | 154 msgid "one" |
| 155 msgstr "kunye" | 155 msgstr "kunye" |
| 156 ''' | 156 ''' |
| 157 xliff = self.po2xliff(minipo) | 157 xliff = self.po2xliff(minipo) |
| 158 print "The generated xml:" | 158 print "The generated xml:" |
| 159 xmltext = str(xliff) | 159 xmltext = str(xliff) |
| 160 print xmltext | 160 print xmltext |
| 161 assert xliff.translate("one") == "kunye" | 161 assert xliff.translate("one") == "kunye" |
| 162 assert len(xliff.units) == 1 | 162 assert len(xliff.units) == 1 |
| 163 node = xliff.units[0].xmlelement | 163 node = xliff.units[0].xmlelement |
| 164 contextgroups = node.findall(".//%s" % xliff.namespaced("context-group")
) | 164 contextgroups = node.findall(".//%s" % xliff.namespaced("context-group")
) |
| 165 assert len(contextgroups) == 1 | 165 assert len(contextgroups) == 1 |
| 166 for group in contextgroups: | 166 for group in contextgroups: |
| 167 assert group.get("name").startswith("po-entry") | 167 assert group.get("name") == "po-entry" |
| 168 assert group.get("purpose") == "information" | 168 assert group.get("purpose") == "information" |
| 169 tuples = self.getcontexttuples(node, xliff.namespace) | 169 tuples = self.getcontexttuples(node, xliff.namespace) |
| 170 assert tuples == [("x-po-trancomment", "Translate?\nHow?")] | 170 assert tuples == [("x-po-trancomment", "Translate?\nHow?")] |
| 171 | 171 |
| 172 assert xliff.units[0].getnotes("translator") == "Translate?\nHow?" | 172 assert xliff.units[0].getnotes("translator") == "Translate?\nHow?" |
| 173 | 173 |
| 174 | 174 |
| 175 def test_automaticcomments(self): | 175 def test_automaticcomments(self): |
| 176 minipo = r'''#. Don't translate. | 176 minipo = r'''#. Don't translate. |
| 177 #. Please | 177 #. Please |
| 178 msgid "one" | 178 msgid "one" |
| 179 msgstr "kunye" | 179 msgstr "kunye" |
| 180 ''' | 180 ''' |
| 181 xliff = self.po2xliff(minipo) | 181 xliff = self.po2xliff(minipo) |
| 182 print "The generated xml:" | 182 print "The generated xml:" |
| 183 xmltext = str(xliff) | 183 xmltext = str(xliff) |
| 184 print xmltext | 184 print xmltext |
| 185 assert xliff.translate("one") == "kunye" | 185 assert xliff.translate("one") == "kunye" |
| 186 assert len(xliff.units) == 1 | 186 assert len(xliff.units) == 1 |
| 187 node = xliff.units[0].xmlelement | 187 node = xliff.units[0].xmlelement |
| 188 contextgroups = node.findall(".//%s" % xliff.namespaced("context-group")
) | 188 contextgroups = node.findall(".//%s" % xliff.namespaced("context-group")
) |
| 189 assert len(contextgroups) == 1 | 189 assert len(contextgroups) == 1 |
| 190 for group in contextgroups: | 190 for group in contextgroups: |
| 191 assert group.get("name").startswith("po-entry") | 191 assert group.get("name") == "po-entry" |
| 192 assert group.get("purpose") == "information" | 192 assert group.get("purpose") == "information" |
| 193 tuples = self.getcontexttuples(node, xliff.namespace) | 193 tuples = self.getcontexttuples(node, xliff.namespace) |
| 194 assert tuples == [("x-po-autocomment", "Don't translate.\nPlease")] | 194 assert tuples == [("x-po-autocomment", "Don't translate.\nPlease")] |
| 195 | 195 |
| 196 def test_header(self): | 196 def test_header(self): |
| 197 minipo = r'''# Pulana Translation for bla | 197 minipo = r'''# Pulana Translation for bla |
| 198 # Hallo Ma! | 198 # Hallo Ma! |
| 199 #, fuzzy | 199 #, fuzzy |
| 200 msgid "" | 200 msgid "" |
| 201 msgstr "" | 201 msgstr "" |
| 202 "MIME-Version: 1.0\n" | 202 "MIME-Version: 1.0\n" |
| 203 ''' | 203 ''' |
| 204 xliff = self.po2xliff(minipo) | 204 xliff = self.po2xliff(minipo) |
| 205 print "The generated xml:" | 205 print "The generated xml:" |
| 206 xmltext = str(xliff) | 206 xmltext = str(xliff) |
| 207 print xmltext | 207 print xmltext |
| 208 assert len(xliff.units) == 1 | 208 assert len(xliff.units) == 1 |
| 209 unit = xliff.units[0] | 209 unit = xliff.units[0] |
| 210 assert unit.source == unit.target == "MIME-Version: 1.0\n" | 210 assert unit.source == unit.target == "MIME-Version: 1.0\n" |
| 211 assert unit.xmlelement.get("restype") == "x-gettext-domain-header" | 211 assert unit.xmlelement.get("restype") == "x-gettext-domain-header" |
| 212 assert unit.xmlelement.get("approved") != "yes" | 212 assert unit.xmlelement.get("approved") == "no" |
| 213 assert unit.xmlelement.get("{%s}space" % lisa.XML_NS) == "preserve" | 213 assert unit.xmlelement.get("{%s}space" % lisa.XML_NS) == "preserve" |
| 214 assert unit.getnotes("po-translator") == "Pulana Translation for bla\nH
allo Ma!" | 214 assert unit.getnotes("po-translator") == "Pulana Translation for bla\nH
allo Ma!" |
| 215 | 215 |
| 216 def test_fuzzy(self): | 216 def test_fuzzy(self): |
| 217 minipo = r'''#, fuzzy | 217 minipo = r'''#, fuzzy |
| 218 msgid "two" | 218 msgid "two" |
| 219 msgstr "pedi" | 219 msgstr "pedi" |
| 220 | 220 |
| 221 msgid "three" | 221 msgid "three" |
| 222 msgstr "raro" | 222 msgstr "raro" |
| 223 ''' | 223 ''' |
| 224 xliff = self.po2xliff(minipo) | 224 xliff = self.po2xliff(minipo) |
| 225 print "The generated xml:" | 225 print "The generated xml:" |
| 226 xmltext = str(xliff) | 226 xmltext = str(xliff) |
| 227 print xmltext | 227 print xmltext |
| 228 assert len(xliff.units) == 2 | 228 assert len(xliff.units) == 2 |
| 229 assert xliff.units[0].isfuzzy() | 229 assert xliff.units[0].isfuzzy() |
| 230 assert not xliff.units[1].isfuzzy() | 230 assert not xliff.units[1].isfuzzy() |
| 231 | 231 |
| 232 def test_germanic_plurals(self): | 232 def test_germanic_plurals(self): |
| 233 minipo = r'''msgid "cow" | 233 minipo = r'''msgid "cow" |
| 234 msgid_plural "cows" | 234 msgid_plural "cows" |
| 235 msgstr[0] "inkomo" | 235 msgstr[0] "inkomo" |
| 236 msgstr[1] "iinkomo" | 236 msgstr[1] "iinkomo" |
| 237 ''' | 237 ''' |
| 238 xliff = self.po2xliff(minipo) | 238 xliff = self.po2xliff(minipo) |
| 239 print "The generated xml:" | 239 print "The generated xml:" |
| 240 xmltext = str(xliff) | 240 xmltext = str(xliff) |
| 241 print xmltext | 241 print xmltext |
| 242 assert len(xliff.units) == 1 | 242 assert len(xliff.units) == 1 |
| 243 assert xliff.translate("cow") == "inkomo" | 243 assert xliff.translate("cow") == "inkomo" |
| 244 | 244 |
| 245 def test_funny_plurals(self): | 245 def test_funny_plurals(self): |
| 246 minipo = r'''msgid "cow" | 246 minipo = r'''msgid "cow" |
| 247 msgid_plural "cows" | 247 msgid_plural "cows" |
| 248 msgstr[0] "inkomo" | 248 msgstr[0] "inkomo" |
| 249 msgstr[1] "iinkomo" | 249 msgstr[1] "iinkomo" |
| 250 msgstr[2] "iiinkomo" | 250 msgstr[2] "iiinkomo" |
| 251 ''' | 251 ''' |
| 252 xliff = self.po2xliff(minipo) | 252 xliff = self.po2xliff(minipo) |
| 253 print "The generated xml:" | 253 print "The generated xml:" |
| 254 xmltext = str(xliff) | 254 xmltext = str(xliff) |
| 255 print xmltext | 255 print xmltext |
| 256 assert len(xliff.units) == 1 | 256 assert len(xliff.units) == 1 |
| 257 assert xliff.translate("cow") == "inkomo" | 257 assert xliff.translate("cow") == "inkomo" |
| 258 | 258 |
| 259 def test_language_tags(self): | 259 def test_language_tags(self): |
| 260 minipo = r'''msgid "Een" | 260 minipo = r'''msgid "Een" |
| 261 msgstr "Uno" | 261 msgstr "Uno" |
| 262 ''' | 262 ''' |
| 263 xliff = self.po2xliff(minipo, "af", "es") | 263 xliff = self.po2xliff(minipo, "af", "es") |
| 264 assert xliff.sourcelanguage == "af" | 264 assert xliff.sourcelanguage == "af" |
| 265 assert xliff.targetlanguage == "es" | 265 assert xliff.targetlanguage == "es" |
| 266 | 266 |
| 267 def test_variables(self): | 267 def test_variables(self): |
| 268 minipo = r'''msgid "%s%s%s%s has made %s his or her buddy%s%s" | 268 minipo = r'''msgid "%s%s%s%s has made %s his or her buddy%s%s" |
| 269 msgstr "%s%s%s%s het %s sy/haar vriend/vriendin gemaak%s%s"''' | 269 msgstr "%s%s%s%s het %s sy/haar vriend/vriendin gemaak%s%s"''' |
| 270 xliff = self.po2xliff(minipo) | 270 xliff = self.po2xliff(minipo) |
| 271 print xliff.units[0].source | 271 print xliff.units[0].source |
| 272 assert xliff.units[0].source == "%s%s%s%s has made %s his or her buddy%s
%s" | 272 assert xliff.units[0].source == "%s%s%s%s has made %s his or her buddy%s
%s" |
| 273 | 273 |
| 274 def test_approved(self): | 274 def test_approved(self): |
| 275 minipo = r'''#, fuzzy | 275 minipo = r'''#, fuzzy |
| 276 msgid "two" | 276 msgid "two" |
| 277 msgstr "pedi" | 277 msgstr "pedi" |
| 278 | 278 |
| 279 msgid "three" | 279 msgid "three" |
| 280 msgstr "raro" | 280 msgstr "raro" |
| 281 | 281 |
| 282 msgid "four" | 282 msgid "four" |
| 283 msgstr "" | 283 msgstr "" |
| 284 ''' | 284 ''' |
| 285 xliff = self.po2xliff(minipo) | 285 xliff = self.po2xliff(minipo) |
| 286 print "The generated xml:" | 286 print "The generated xml:" |
| 287 xmltext = str(xliff) | 287 xmltext = str(xliff) |
| 288 print xmltext | 288 print xmltext |
| 289 assert len(xliff.units) == 3 | 289 assert len(xliff.units) == 3 |
| 290 assert xliff.units[0].xmlelement.get("approved") != "yes" | 290 assert xliff.units[0].xmlelement.get("approved") == "no" |
| 291 assert not xliff.units[0].isapproved() | 291 assert not xliff.units[0].isapproved() |
| 292 assert xliff.units[1].xmlelement.get("approved") == "yes" | 292 assert xliff.units[1].xmlelement.get("approved") == "yes" |
| 293 assert xliff.units[1].isapproved() | 293 assert xliff.units[1].isapproved() |
| 294 assert xliff.units[2].xmlelement.get("approved") == "no" | 294 assert xliff.units[2].xmlelement.get("approved") == "no" |
| 295 assert not xliff.units[2].isapproved() | 295 assert not xliff.units[2].isapproved() |
| 296 | 296 |
| 297 def test_po_with_msgctxt(self): |
| 298 minipo = 'msgctxt "numbers"\nmsgid "one"\nmsgstr "um"\n' |
| 299 xliff = self.po2xliff(minipo) |
| 300 print str(xliff) |
| 301 node = xliff.units[0].xmlelement |
| 302 contextgroups = node.findall(".//%s" % xliff.namespaced("context-group")
) |
| 303 assert len(contextgroups) == 1 |
| 304 for group in contextgroups: |
| 305 assert group.get("name") == "po-1025" |
| 306 assert group.get("purpose") == "match information" |
| 307 tuples = self.getcontexttuples(node, xliff.namespace) |
| 308 assert tuples == [('x-unknown', 'numbers')] |
| LEFT | RIGHT |