X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=po%2Fxml2po.py;h=8108caeb5c1f667939c98ad8d2ee405eeea5d460;hb=3a044bea307a02147e2d01ad29f07b7348bd7203;hp=ec19acf1ada6cf6d4b3072d7425db9af24429d00;hpb=0f986f99ef13e1e4fb0e76f0dc4074650b655f32;p=vuplus_dvbapp diff --git a/po/xml2po.py b/po/xml2po.py index ec19acf..8108cae 100755 --- a/po/xml2po.py +++ b/po/xml2po.py @@ -1,23 +1,61 @@ #!/usr/bin/python import sys +import os +import string from xml.sax import make_parser -from xml.sax.handler import ContentHandler +from xml.sax.handler import ContentHandler, property_lexical_handler +try: + from _xmlplus.sax.saxlib import LexicalHandler + no_comments = False +except ImportError: + class LexicalHandler: + pass + no_comments = True -class parseXML(ContentHandler): - def __init__(self): +class parseXML(ContentHandler, LexicalHandler): + def __init__(self, attrlist): self.isPointsElement, self.isReboundsElement = 0, 0 + self.attrlist = attrlist + self.last_comment = None - def startElement(self, name, attrs): - if (attrs.has_key('text')): - print - print '#: ' + sys.argv[1] - print 'msgid "' + str(attrs.get('text', "")) + '"' - print 'msgstr ""' + def comment(self, comment): + if comment.find("TRANSLATORS:") != -1: + self.last_comment = comment -sys.argv[1] + def startElement(self, name, attrs): + for x in ["text", "title", "value", "caption"]: + try: + attrlist.add((attrs[x], self.last_comment)) + self.last_comment = None + except KeyError: + pass parser = make_parser() - -contentHandler = parseXML() + +attrlist = set() + +contentHandler = parseXML(attrlist) parser.setContentHandler(contentHandler) -parser.parse(sys.argv[1]) +if not no_comments: + parser.setProperty(property_lexical_handler, contentHandler) +dir = os.listdir(sys.argv[1]) +for x in dir: + if (str(x[-4:]) == ".xml"): + parser.parse(sys.argv[1] + str(x)) + +#parser.parse(sys.argv[1]) + +attrlist = list(attrlist) +attrlist.sort(key=lambda a: a[0]) + +for (k,c) in attrlist: + print + print '#: ' + sys.argv[1] + string.replace(k, "\\n", "\"\n\"") + if c: + for l in c.split('\n'): + print "#. ", l + if str(k) != "": + print 'msgid "' + str(k) + '"' + print 'msgstr ""' +