Mercurial > mplayer.hg
diff TOOLS/mphelp_check.py @ 18522:e151ef8cf21b
Add tool to check MPlayer translation files for conflicting arguments
and extra/missing translation strings.
author | uau |
---|---|
date | Tue, 16 May 2006 18:09:14 +0000 |
parents | |
children | 585837bbe7c3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TOOLS/mphelp_check.py Tue May 16 18:09:14 2006 +0000 @@ -0,0 +1,66 @@ +#!/usr/bin/python + +# Tool to compare MPlayer translation files against a base file. Reports +# conflicting arguments, extra strings not present in the base file and +# (optionally) missing strings. + +# Written by Uoti Urpala + +import sys +import re + +def parse(filename): + r = {} + f = open(filename) + it = iter(f) + cur = '' + for line in it: + line = line.strip() + if not line.startswith('#define'): + while line and line[-1] == '\\': + line = it.next().strip() + continue + _, name, value = line.split(None, 2) + value = value.strip('"') + while line[-1] == '\\': + line = it.next().strip() + value += line.rstrip('\\').strip('"') + r[name] = value + f.close() + return r + +def compare(base, other, show_missing=False): + r = re.compile('%[^diouxXeEfFgGaAcsPn%]*[diouxXeEfFgGaAcsPn%]') + missing = [] + for key in base: + if key not in other: + missing.append(key) + continue + if re.findall(r, base[key]) != re.findall(r, other[key]): + print 'Mismatch: ', key + print base[key] + print other[key] + print + del other[key] + if other: + extra = other.keys() + extra.sort() + print 'Extra: ', ' '.join(extra) + if show_missing and missing: + missing.sort() + print 'Missing: ', ' '.join(missing) + +if len(sys.argv) < 3: + print 'Usage:\n'+sys.argv[0]+' [-missing] base_helpfile otherfile1 '\ + '[otherfile2 ...]' + sys.exit(1) +i = 1 +show_missing = False +if sys.argv[i] == '-missing': + show_missing = True + i = 2 +base = parse(sys.argv[i]) +for filename in sys.argv[i+1:]: + print '*****', filename + compare(base, parse(filename), show_missing) + print '\n\n\n'