def mergeSingleDocument(folder, language, root):
    xmlfiles = []
    outputfiles = []
    abspath = os.path.join(root, folder)
    if os.path.isdir(abspath):
        os.path.walk(abspath, get_xml_list, xmlfiles)
    else:
        return None

    if xmlfiles:
        popath = os.path.join(abspath, "locale", language + ".po")
        # generate MO file
        mofile_handler, mofile_tmppath = tempfile.mkstemp()
        os.close(mofile_handler)
        os.system("msgfmt -o %s %s" % (mofile_tmppath, popath))

        for aXML in xmlfiles:
            # (filename, ext) = os.path.splitext(os.path.basename(aXML))
            relpath = os.path.relpath(aXML, root)
            outputpath = os.path.join(os.path.curdir, "generated", language,
                                      relpath)
            try:
                xml2po_main = Main(default_mode, "merge", outputpath,
                                   xml_options)
                xml2po_main.current_mode = myDocbookXmlMode()
                xml2po_main.merge(mofile_tmppath, aXML)
                outputfiles.append(outputpath)
            except IOError:
                print("Error: cannot open aFile %s for writing.")
                sys.exit(5)
            except Exception:
                print("Exception happen")
        if mofile_tmppath:
            os.remove(mofile_tmppath)

    return outputfiles
def mergeSingleDocument(folder, language, root):
    xmlfiles = []
    outputfiles = []
    abspath = os.path.join(root, folder)
    if os.path.isdir(abspath):
        os.path.walk(abspath, get_xml_list, xmlfiles)
    else:
        return None

    if len(xmlfiles) > 0:
        popath = os.path.join(abspath, "locale", language + ".po")
        # generate MO file
        mofile_handler, mofile_tmppath = tempfile.mkstemp()
        os.close(mofile_handler)
        os.system("msgfmt -o %s %s" % (mofile_tmppath, popath))

        for aXML in xmlfiles:
            # (filename, ext) = os.path.splitext(os.path.basename(aXML))
            relpath = os.path.relpath(aXML, root)
            outputpath = os.path.join(os.path.curdir, "generated", language,
                                      relpath)
            try:
                xml2po_main = Main(default_mode, "merge", outputpath,
                                   xml_options)
                xml2po_main.current_mode = myDocbookXmlMode()
                xml2po_main.merge(mofile_tmppath, aXML)
                outputfiles.append(outputpath)
            except IOError:
                print("Error: cannot open aFile %s for writing.")
                sys.exit(5)
            except Exception:
                print("Exception happen")
        if mofile_tmppath:
            os.remove(mofile_tmppath)

    return outputfiles
Exemplo n.º 3
0
def main(argv):
    if not argv:
        usage()
        sys.exit(2)

    name = os.path.join(os.path.dirname(__file__), '..')
    if not name in sys.path:
        sys.path.insert(0, name)

    from xml2po import Main

    # Default parameters
    default_mode = 'docbook'
    operation = 'pot'  # 'pot', 'merge', 'update'
    output = '-'  # this means to stdout
    options = {
        'mark_untranslated': False,
        'expand_entities': True,
        'expand_all_entities': False,
    }
    origxml = ''
    mofile = None
    mofile_tmppath = None

    try:
        opts, remaining_args = getopt.getopt(argv, 'avhkem:t:o:p:u:r:l:', [
            'automatic-tags', 'version', 'help', 'keep-entities',
            'expand-all-entities', 'mode=', 'translation=', 'output=',
            'po-file=', 'update-translation=', 'reuse=', 'language=',
            'mark-untranslated'
        ])
    except getopt.GetoptError:
        usage(True)
        sys.exit(2)

    for opt, arg in opts:
        if opt in ('-m', '--mode'):
            default_mode = arg
        if opt in ('-a', '--automatic-tags'):
            default_mode = 'basic'
        elif opt in ('-k', '--keep-entities'):
            options['expand_entities'] = False
        elif opt in ('--mark-untranslated', ):
            options['mark_untranslated'] = True
        elif opt in ('-e', '--expand-all-entities'):
            options['expand_all_entities'] = True
        elif opt in ('-l', '--language'):
            options['translationlanguage'] = arg
        elif opt in ('-t', '--translation'):
            mofile = arg
            operation = 'merge'
            if 'translationlanguage' not in options:
                options['translationlanguage'] = os.path.split(
                    os.path.splitext(mofile)[0])[1]
        elif opt in ('-r', '--reuse'):
            origxml = arg
        elif opt in ('-u', '--update-translation'):
            operation = 'update'
            po_to_update = arg
        elif opt in ('-p', '--po-file'):
            mofile_handle, mofile_tmppath = tempfile.mkstemp()
            os.close(mofile_handle)
            pofile = arg
            operation = 'merge'
            if 'translationlanguage' not in options:
                options['translationlanguage'] = os.path.split(
                    os.path.splitext(pofile)[0])[1]
            os.system("msgfmt -o %s %s >%s" %
                      (mofile_tmppath, pofile, NULL_STRING)) and sys.exit(7)
            mofile = mofile_tmppath
        elif opt in ('-o', '--output'):
            output = arg
        elif opt in ('-v', '--version'):
            print VERSION
            sys.exit(0)
        elif opt in ('-h', '--help'):
            usage(True)
            sys.exit(0)

    if operation == 'update' and output != "-":
        print >> sys.stderr, "Option '-o' is not yet supported when updating translations directly. Ignoring this option."

    # Treat remaining arguments as XML files
    filenames = []
    while remaining_args:
        filenames.append(remaining_args.pop())

    try:
        xml2po_main = Main(default_mode, operation, output, options)
    except IOError:
        print >> sys.stderr, "Error: cannot open file %s for writing." % (
            output)
        sys.exit(5)

    if operation == 'merge':
        if len(filenames) > 1:
            print >> sys.stderr, "Error: You can merge translations with only one XML file at a time."
            sys.exit(2)

        if not mofile:
            print >> sys.stderr, "Error: You must specify MO file when merging translations."
            sys.exit(3)

        xml2po_main.merge(mofile, filenames[0])

    elif operation == 'update':
        xml2po_main.update(filenames, po_to_update)

    elif origxml:
        xml2po_main.reuse(origxml, filenames[0])

    else:
        # Standard POT producing
        xml2po_main.to_pot(filenames)

    if mofile_tmppath:
        os.remove(mofile_tmppath)
Exemplo n.º 4
0
def main(argv):
    if not argv:
        usage()
        sys.exit(2)

    name = os.path.join(os.path.dirname(__file__), '..')
    if os.path.exists(os.path.join(name, 'tests')):
        print >> sys.stderr, 'Running from source folder, modifying PYTHONPATH'
        sys.path.insert(0, name)

    from xml2po import Main

    # Default parameters
    default_mode = 'docbook'
    operation = 'pot' # 'pot', 'merge', 'update'
    output  = '-' # this means to stdout
    options = {
        'mark_untranslated'   : False,
        'expand_entities'     : True,
        'expand_all_entities' : False,
    }
    origxml = ''
    mofile = None
    mofile_tmppath = None

    try: opts, remaining_args = getopt.getopt(argv, 'avhkem:t:o:p:u:r:l:',
                               ['automatic-tags','version', 'help', 'keep-entities', 'expand-all-entities', 'mode=', 'translation=',
                                'output=', 'po-file=', 'update-translation=', 'reuse=', 'language=', 'mark-untranslated' ])
    except getopt.GetoptError:
        usage(True)
        sys.exit(2)

    for opt, arg in opts:
        if opt in ('-m', '--mode'):
            default_mode = arg
        if opt in ('-a', '--automatic-tags'):
            default_mode = 'basic'
        elif opt in ('-k', '--keep-entities'):
            options['expand_entities'] = False
        elif opt in ('--mark-untranslated',):
            options['mark_untranslated'] = True
        elif opt in ('-e', '--expand-all-entities'):
            options['expand_all_entities'] = True
        elif opt in ('-l', '--language'):
            options['translationlanguage'] = arg
        elif opt in ('-t', '--translation'):
            mofile = arg
            operation = 'merge'
            if 'translationlanguage' not in options:
                options['translationlanguage'] = os.path.split(os.path.splitext(mofile)[0])[1]
        elif opt in ('-r', '--reuse'):
            origxml = arg
        elif opt in ('-u', '--update-translation'):
            operation = 'update'
            po_to_update = arg
        elif opt in ('-p', '--po-file'):
            mofile_handle, mofile_tmppath = tempfile.mkstemp()
            os.close(mofile_handle)
            pofile = arg
            operation = 'merge'
            if 'translationlanguage' not in options:
                options['translationlanguage'] = os.path.split(os.path.splitext(pofile)[0])[1]
            os.system("msgfmt -o %s %s >%s" % (mofile_tmppath, pofile, NULL_STRING)) and sys.exit(7)
            mofile = mofile_tmppath
        elif opt in ('-o', '--output'):
            output = arg
        elif opt in ('-v', '--version'):
            print VERSION
            sys.exit(0)
        elif opt in ('-h', '--help'):
            usage(True)
            sys.exit(0)

    if operation == 'update' and output != "-":
        print >> sys.stderr, "Option '-o' is not yet supported when updating translations directly. Ignoring this option."

    # Treat remaining arguments as XML files
    filenames = []
    while remaining_args:
        filenames.append(remaining_args.pop())

    try:
        xml2po_main = Main(default_mode, operation, output, options)
    except IOError:
        print >> sys.stderr, "Error: cannot open file %s for writing." % (output)
        sys.exit(5)

    if operation == 'merge':
        if len(filenames) > 1:
            print  >> sys.stderr, "Error: You can merge translations with only one XML file at a time."
            sys.exit(2)

        if not mofile:
            print >> sys.stderr, "Error: You must specify MO file when merging translations."
            sys.exit(3)

        xml2po_main.merge(mofile, filenames[0])

    elif operation == 'update':
        xml2po_main.update(filenames, po_to_update)

    elif origxml:
        xml2po_main.reuse(origxml, filenames[0])

    else:
        # Standard POT producing
        xml2po_main.to_pot(filenames)

    if mofile_tmppath:
        os.remove(mofile_tmppath)
Exemplo n.º 5
0
def main(argv):
    if not argv:
        usage()
        sys.exit(2)

    name = os.path.join(os.path.dirname(__file__), "..")
    if not name in sys.path:
        sys.path.insert(0, name)

    from xml2po import Main

    # Default parameters
    default_mode = "docbook"
    operation = "pot"  # 'pot', 'merge', 'update'
    output = "-"  # this means to stdout
    options = {"mark_untranslated": False, "expand_entities": True, "expand_all_entities": False}
    origxml = ""
    mofile = None
    mofile_tmppath = None

    try:
        opts, remaining_args = getopt.getopt(
            argv,
            "avhkem:t:o:p:u:r:l:",
            [
                "automatic-tags",
                "version",
                "help",
                "keep-entities",
                "expand-all-entities",
                "mode=",
                "translation=",
                "output=",
                "po-file=",
                "update-translation=",
                "reuse=",
                "language=",
                "mark-untranslated",
            ],
        )
    except getopt.GetoptError:
        usage(True)
        sys.exit(2)

    for opt, arg in opts:
        if opt in ("-m", "--mode"):
            default_mode = arg
        if opt in ("-a", "--automatic-tags"):
            default_mode = "basic"
        elif opt in ("-k", "--keep-entities"):
            options["expand_entities"] = False
        elif opt in ("--mark-untranslated",):
            options["mark_untranslated"] = True
        elif opt in ("-e", "--expand-all-entities"):
            options["expand_all_entities"] = True
        elif opt in ("-l", "--language"):
            options["translationlanguage"] = arg
        elif opt in ("-t", "--translation"):
            mofile = arg
            operation = "merge"
            if "translationlanguage" not in options:
                options["translationlanguage"] = os.path.split(os.path.splitext(mofile)[0])[1]
        elif opt in ("-r", "--reuse"):
            origxml = arg
        elif opt in ("-u", "--update-translation"):
            operation = "update"
            po_to_update = arg
        elif opt in ("-p", "--po-file"):
            mofile_handle, mofile_tmppath = tempfile.mkstemp()
            os.close(mofile_handle)
            pofile = arg
            operation = "merge"
            if "translationlanguage" not in options:
                options["translationlanguage"] = os.path.split(os.path.splitext(pofile)[0])[1]
            os.system("msgfmt -o %s %s >%s" % (mofile_tmppath, pofile, NULL_STRING)) and sys.exit(7)
            mofile = mofile_tmppath
        elif opt in ("-o", "--output"):
            output = arg
        elif opt in ("-v", "--version"):
            print VERSION
            sys.exit(0)
        elif opt in ("-h", "--help"):
            usage(True)
            sys.exit(0)

    if operation == "update" and output != "-":
        print >> sys.stderr, "Option '-o' is not yet supported when updating translations directly. Ignoring this option."

    # Treat remaining arguments as XML files
    filenames = []
    while remaining_args:
        filenames.append(remaining_args.pop())

    try:
        xml2po_main = Main(default_mode, operation, output, options)
    except IOError:
        print >> sys.stderr, "Error: cannot open file %s for writing." % (output)
        sys.exit(5)

    if operation == "merge":
        if len(filenames) > 1:
            print >> sys.stderr, "Error: You can merge translations with only one XML file at a time."
            sys.exit(2)

        if not mofile:
            print >> sys.stderr, "Error: You must specify MO file when merging translations."
            sys.exit(3)

        xml2po_main.merge(mofile, filenames[0])

    elif operation == "update":
        xml2po_main.update(filenames, po_to_update)

    elif origxml:
        xml2po_main.reuse(origxml, filenames[0])

    else:
        # Standard POT producing
        xml2po_main.to_pot(filenames)

    if mofile_tmppath:
        os.remove(mofile_tmppath)