def addheaderunit(self, target, filename): unit = self.addsourceunit(target, filename, True) unit.target = target unit.xmlelement.set("restype", "x-gettext-domain-header") unit.xmlelement.set("approved", "no") setXMLspace(unit.xmlelement, "preserve") return unit
def addalttrans(self, txt, origin=None, lang=None, sourcetxt=None, matchquality=None): """Adds an alt-trans tag and alt-trans components to the unit. :type txt: String :param txt: Alternative translation of the source text. """ # TODO: support adding a source tag ad match quality attribute. At the # source tag is needed to inject fuzzy matches from a TM. if isinstance(txt, bytes): txt = txt.decode("utf-8") alttrans = etree.SubElement(self.xmlelement, self.namespaced("alt-trans")) setXMLspace(alttrans, "preserve") if sourcetxt: if isinstance(sourcetxt, bytes): sourcetxt = sourcetxt.decode("utf-8") altsource = etree.SubElement(alttrans, self.namespaced("source")) altsource.text = sourcetxt alttarget = etree.SubElement(alttrans, self.namespaced("target")) alttarget.text = txt if matchquality: alttrans.set("match-quality", matchquality) if origin: alttrans.set("origin", origin) if lang: setXMLlang(alttrans, lang)
def settarget(self, target, lang="xx", append=False): """Sets the target string to the given value.""" super().settarget(target, lang, append) if target: if getXMLspace(self.xmlelement) != "preserve": setXMLspace(self.xmlelement, "preserve") self.marktranslated()
def addunit(self, unit, new=True): """Adds the given unit to the body node.""" super(RESXFile, self).addunit(unit, new) setXMLspace(unit.xmlelement, "preserve") if unit.getid() is None: self._messagenum += 1 unit.setid(u"%s" % unit.source.strip(' ')) return unit
def construct_unit(self, source: str): unit = self.store.UnitClass(source) # Make sure new unit is using same namespace as the original # file (xliff 1.1/1.2) unit.namespace = self.store.namespace unit.xmlelement = etree.Element(unit.namespaced(unit.rootNode)) setXMLspace(unit.xmlelement, "preserve") return unit
def addunit(self, unit, new=True): """Adds the given unit to the body node.""" super(RESXFile, self).addunit(unit, new) setXMLspace(unit.xmlelement, "preserve") if unit.getid() is None: self._messagenum += 1 unit.setid(u"%s" % unit.source.strip(' ')) # adjust the current and previous elements for new ones; # otherwise they will not be indented correctly. if new: previous_node = unit.xmlelement.getprevious() if previous_node is None: # this is the first element; adjust root. # should not happen in a ResX file prepared by Visual Studio # since it includes an inline XSD plus resheader at all times. self.body.text = u"\n " # adjust the indent of the following <value> element unit.xmlelement.text = u"\n " return unit
def _insert_header(self, header): header.xmlelement.set("restype", "x-gettext-domain-header") header.xmlelement.set("approved", "no") setXMLspace(header.xmlelement, "preserve") self.addunit(header)
def __init__(self, source, empty=False, **kwargs): """Override the constructor to set xml:space="preserve".""" super(xliffunit, self).__init__(source, empty, **kwargs) if empty: return setXMLspace(self.xmlelement, "preserve")
def test_xml_space(self): """Test for the correct handling of xml:space attributes.""" xlfsource = self.skeleton % ( '''<trans-unit id="1" xml:space="preserve"> <source> File 1 </source> </trans-unit>''') xlifffile = xliff.xlifffile.parsestring(xlfsource) assert xlifffile.units[0].source == " File 1 " root_node = xlifffile.document.getroot() setXMLspace(root_node, "preserve") assert xlifffile.units[0].source == " File 1 " setXMLspace(root_node, "default") assert xlifffile.units[0].source == " File 1 " xlfsource = self.skeleton % ('''<trans-unit id="1" xml:space="default"> <source> File 1 </source> </trans-unit>''') xlifffile = xliff.xlifffile.parsestring(xlfsource) assert xlifffile.units[0].source == "File 1" root_node = xlifffile.document.getroot() setXMLspace(root_node, "preserve") assert xlifffile.units[0].source == "File 1" setXMLspace(root_node, "default") assert xlifffile.units[0].source == "File 1" xlfsource = self.skeleton % ('''<trans-unit id="1"> <source> File 1 </source> </trans-unit>''') # we currently always normalize as default behaviour for xliff xlifffile = xliff.xlifffile.parsestring(xlfsource) assert xlifffile.units[0].source == "File 1" root_node = xlifffile.document.getroot() setXMLspace(root_node, "preserve") assert xlifffile.units[0].source == "File 1" setXMLspace(root_node, "default") assert xlifffile.units[0].source == "File 1" xlfsource = self.skeleton % ('''<trans-unit id="1"> <source> File 1 </source> </trans-unit>''') # we currently always normalize as default behaviour for xliff xlifffile = xliff.xlifffile.parsestring(xlfsource) assert xlifffile.units[0].source == "File 1" root_node = xlifffile.document.getroot() setXMLspace(root_node, "preserve") assert xlifffile.units[0].source == "File 1" setXMLspace(root_node, "default") assert xlifffile.units[0].source == "File 1"
def test_xml_space(self): """Test for the correct handling of xml:space attributes.""" xlfsource = self.skeleton % ( '''<trans-unit id="1" xml:space="preserve"> <source> File 1 </source> </trans-unit>''') xlifffile = xliff.xlifffile.parsestring(xlfsource) assert xlifffile.units[0].source == " File 1 " root_node = xlifffile.document.getroot() setXMLspace(root_node, "preserve") assert xlifffile.units[0].source == " File 1 " setXMLspace(root_node, "default") assert xlifffile.units[0].source == " File 1 " xlfsource = self.skeleton % ( '''<trans-unit id="1" xml:space="default"> <source> File 1 </source> </trans-unit>''') xlifffile = xliff.xlifffile.parsestring(xlfsource) assert xlifffile.units[0].source == "File 1" root_node = xlifffile.document.getroot() setXMLspace(root_node, "preserve") assert xlifffile.units[0].source == "File 1" setXMLspace(root_node, "default") assert xlifffile.units[0].source == "File 1" xlfsource = self.skeleton % ( '''<trans-unit id="1"> <source> File 1 </source> </trans-unit>''') # we currently always normalize as default behaviour for xliff xlifffile = xliff.xlifffile.parsestring(xlfsource) assert xlifffile.units[0].source == "File 1" root_node = xlifffile.document.getroot() setXMLspace(root_node, "preserve") assert xlifffile.units[0].source == "File 1" setXMLspace(root_node, "default") assert xlifffile.units[0].source == "File 1" xlfsource = self.skeleton % ( '''<trans-unit id="1"> <source> File 1 </source> </trans-unit>''') # we currently always normalize as default behaviour for xliff xlifffile = xliff.xlifffile.parsestring(xlfsource) assert xlifffile.units[0].source == "File 1" root_node = xlifffile.document.getroot() setXMLspace(root_node, "preserve") assert xlifffile.units[0].source == "File 1" setXMLspace(root_node, "default") assert xlifffile.units[0].source == "File 1"