diff options
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/update_localization.py | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/scripts/update_localization.py b/scripts/update_localization.py new file mode 100644 index 00000000..7dbc90f5 --- /dev/null +++ b/scripts/update_localization.py @@ -0,0 +1,92 @@ +import sys, os + +source_exts = [".c", ".cpp", ".h", ".hpp"] + +def parse_source(): + stringtable = {} + def process_line(line): + if 'localize("' in line: + fields = line.split('localize("', 2)[1].split('"', 2) + stringtable[fields[0]] = "" + process_line(fields[1]) + + for root, dirs, files in os.walk("src"): + for name in files: + filename = os.path.join(root, name) + + if os.sep + "external" + os.sep in filename: + continue + + if filename[-2:] in source_exts or filename[-4:] in source_exts: + for line in file(filename): + process_line(line) + + return stringtable + +def load_languagefile(filename): + f = file(filename) + lines = f.readlines() + f.close() + stringtable = {} + + for i in xrange(0, len(lines)-1): + l = lines[i].strip() + if len(l) and not l[0] == '=' and not l[0] == '#': + stringtable[l] = lines[i+1][3:].strip() + + return stringtable + + +def generate_languagefile(outputfilename, srctable, loctable): + f = file(outputfilename, "w") + + num_items = 0 + new_items = 0 + old_items = 0 + + print >>f, "" + print >>f, "##### translated strings #####" + print >>f, "" + for k in srctable: + if k in loctable: + print >>f, k + print >>f, "==", loctable[k] + print >>f, "" + num_items += 1 + + + print >>f, "##### needs translation ####" + print >>f, "" + for k in srctable: + if not k in loctable: + print >>f, k + print >>f, "==", srctable[k] + print >>f, "" + num_items += 1 + new_items += 1 + + print >>f, "##### old translations ####" + print >>f, "" + for k in loctable: + if not k in srctable: + print >>f, k + print >>f, "==", loctable[k] + print >>f, "" + num_items += 1 + old_items += 1 + + print "%-40s %8s %8s %8s" % ("filename", "total", "new", "old") + print "%-40s %8d %8d %8d" % (outputfilename, num_items, new_items, old_items) + f.close() + +srctable = parse_source() + +for filename in os.listdir("data/languages"): + if not ".txt" in filename: + continue + + filename = "data/languages/" + filename + generate_languagefile(filename, srctable, load_languagefile(filename)) + + + |