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'