diff --git a/Tools/i18n/msgfmt.py b/Tools/i18n/msgfmt.py index aa72a075ecf..411e3aeff58 100755 --- a/Tools/i18n/msgfmt.py +++ b/Tools/i18n/msgfmt.py @@ -11,6 +11,11 @@ GNU msgfmt program, however, it is a simpler implementation. Usage: msgfmt.py [OPTIONS] filename.po Options: + -o file + --output-file=file + Specify the output file to write to. If omitted, output will go to a + file named filename.mo (based off the input file name). + -h --help Print this message and exit. @@ -18,15 +23,15 @@ Options: -V --version Display version information and exit. - """ import sys +import os import getopt import struct import array -__version__ = "1.0" +__version__ = "1.1" MESSAGES = {} @@ -91,17 +96,18 @@ def generate(): -def make(filename): +def make(filename, outfile): ID = 1 STR = 2 - # Compute .mo name from .po name + # Compute .mo name from .po name and arguments if filename.endswith('.po'): infile = filename - outfile = filename[:-2] + 'mo' else: infile = filename + '.po' - outfile = filename + '.mo' + if outfile is None: + outfile = os.path.splitext(infile)[0] + '.mo' + try: lines = open(infile).readlines() except IOError, msg: @@ -159,7 +165,6 @@ def make(filename): # Compute output output = generate() - # Save output try: open(outfile,"wb").write(output) except IOError,msg: @@ -169,10 +174,12 @@ def make(filename): def main(): try: - opts, args = getopt.getopt(sys.argv[1:], 'hV', ['help','version']) + opts, args = getopt.getopt(sys.argv[1:], 'hVo:', + ['help', 'version', 'output-file=']) except getopt.error, msg: usage(1, msg) + outfile = None # parse options for opt, arg in opts: if opt in ('-h', '--help'): @@ -180,6 +187,8 @@ def main(): elif opt in ('-V', '--version'): print >> sys.stderr, "msgfmt.py", __version__ sys.exit(0) + elif opt in ('-o', '--output-file'): + outfile = arg # do it if not args: print >> sys.stderr, 'No input file given' @@ -187,7 +196,7 @@ def main(): return for filename in args: - make(filename) + make(filename, outfile) if __name__ == '__main__':