Esempio n. 1
0
 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)
Esempio n. 3
0
 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()
Esempio n. 4
0
 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
Esempio n. 5
0
 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
Esempio n. 6
0
 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
Esempio n. 7
0
 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
Esempio n. 8
0
 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
Esempio n. 9
0
 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
Esempio n. 10
0
 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")
Esempio n. 12
0
    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"
Esempio n. 13
0
    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"
Esempio n. 14
0
 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)