def parse_tag_trans_unit(self, trans_unit_node, is_source=False, context=[], source_string = None, rule = None):
        source = ""
        source_node = trans_unit_node.getElementsByTagName("source")[0]
        if len(source_node.childNodes)>1:
            for i in source_node.childNodes:
                source += i.toxml()
        else:
            source = source_node.firstChild.data
        if source_string:
            pluralized = True
        else:
            pluralized = False
        for node in trans_unit_node.childNodes:
            if node.nodeType == node.ELEMENT_NODE and node.localName == "context-group" and not source_string and not rule:
                context.extend(self.parse_tag_context_group(node, is_source))
            # TODO prop-group, note, count-group, alt-trans
        # TODO seq-source
        context = escape_context(context)
        if is_source:
            translation = source
            if pluralized:
                source = source_string
            target = self.doc.createElement("target")
            target.childNodes = []
            if source_string and rule:
                target.appendChild(self.doc.createTextNode(
                    ("%(hash)s_pl_%(rule)s" % {'hash': hash_tag(
                        source_string, context), 'rule':rule})
                ))
            else:
                target.appendChild(self.doc.createTextNode(
                        ("%(hash)s_tr" % {'hash': hash_tag(
                            source, context)})
                ))
            if translation and not translation.strip():
                return
            indent_node = source_node.previousSibling.cloneNode(True)
            if source_node.nextSibling:
                trans_unit_node.insertBefore(target, source_node.nextSibling)
                trans_unit_node.insertBefore(indent_node, source_node.nextSibling)
            else:
                trans_unit_node.appendChild(indent_node)
                trans_unit_node.appendChild(target)
        else:
            if pluralized:
                source = source_string
            target_list = trans_unit_node.getElementsByTagName("target")
            if target_list:
                if len(target_list[0].childNodes)>1:
                    translation = self._getText(target_list[0].childNodes)
                else:
                    if target_list[0].firstChild:
                        translation = target_list[0].firstChild.data
                    else:
                        translation = u""
            else:
                translation = u""
            if not translation:
                return
            # TODO - do something with inline elements
        if pluralized:
            self._add_translation_string(
                    source, translation, context=context,
                    rule=rule, pluralized=True
             )
            """
             self.stringset_.strings.append(GenericTranslation(source,
                    translation, rule=rule,
                    context=context, pluralized=True, fuzzy=False,
                    obsolete=False))
             """
        else:
            self._add_translation_string(
                    source, translation, context=context
             )
            """
            self.stringset_.strings.append(GenericTranslation(source,
                    translation, rule=5,
                    context=context, pluralized=False, fuzzy=False,
                    obsolete=False))
            """
dataset/ETHPy150Open rvanlaar/easy-transifex/src/transifex/transifex/resources/formats/xliff.py/XliffHandler.parse_tag_trans_unit/original