Mercurial > dive4elements > river
changeset 2625:72ce02d1a568
Added consistency checker for i18n properties files.
flys-artifacts/trunk@4213 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 11 Apr 2012 10:54:26 +0000 |
parents | 3f24865082da |
children | 50f6f0463153 |
files | flys-artifacts/ChangeLog flys-artifacts/contrib/check-i18n-properties.py |
diffstat | 2 files changed, 54 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/flys-artifacts/ChangeLog Wed Apr 11 10:14:13 2012 +0000 +++ b/flys-artifacts/ChangeLog Wed Apr 11 10:54:26 2012 +0000 @@ -1,3 +1,12 @@ +2012-04-11 Sascha L. Teichmann <sascha.teichmann@intevation.de> + + * contrib/check-i18n-properties.py: New. Script to check inconsistencies + of i18n properties files: Detects duplicates and keys not defined in other + properties files. Usage: + + $ find -name messages\*.properties | \ + xargs contrib/check-i18n-properties.py + 2012-04-11 Sascha L. Teichmann <sascha.teichmann@intevation.de> * src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/contrib/check-i18n-properties.py Wed Apr 11 10:54:26 2012 +0000 @@ -0,0 +1,45 @@ +#!/usr/bin/env python + +import sys +import re + +SPLIT_RE = re.compile(r"^\s*([^=]+)=\s*(.*)\s*") + +def load_properties_file(filename): + props = {} + with open(filename, "r") as f: + while True: + line = f.readline() + if not line: break + m = SPLIT_RE.match(line) + if not m: continue + k = m.group(1).strip() + v = m.group(2).strip + if k in props: + print >> sys.stderr, "'%s' more than once in '%s'." % ( + k, filename) + else: + props[k] = v + return props + +def main(): + + props = [(arg, load_properties_file(arg)) for arg in sys.argv[1:]] + + l = len(props) + + for i in range(0, l): + a = props[i][1] + for j in range(i+1, l): + b = props[j][1] + for k in a.iterkeys(): + if k not in b: + print >> sys.stderr, "'%s' found in '%s' but not in '%s'." % ( + k, props[i][0], props[j][0]) + for k in b.iterkeys(): + if k not in a: + print >> sys.stderr, "'%s' found in '%s' but not in '%s'." % ( + k, props[j][0], props[i][0]) + +if __name__ == '__main__': + main()