about summary refs log tree commit diff
path: root/scripts
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2009-06-13 16:54:04 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2009-06-13 16:54:04 +0000
commit6d9ccee95dd99fecda3a6ba62c2768b4d39f69e5 (patch)
treeed06c372126df9d843b7d72c0263982923e1ccba /scripts
parentc2f8d0e07ac19d4a876444d045a4f199f4d7c4d7 (diff)
downloadzcatch-6d9ccee95dd99fecda3a6ba62c2768b4d39f69e5.tar.gz
zcatch-6d9ccee95dd99fecda3a6ba62c2768b4d39f69e5.zip
base for the localization system
Diffstat (limited to 'scripts')
-rw-r--r--scripts/update_localization.py92
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))
+
+
+