--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/check_lua_locale_files.lua Fri Nov 02 17:43:06 2018 +0100
@@ -0,0 +1,71 @@
+local SHOW_WARNINGS = false
+
+local function scandir(directory)
+ local i, t, popen = 0, {}, io.popen
+ local pfile = popen('ls -a "'..directory..'"')
+ for filename in pfile:lines() do
+ i = i + 1
+ t[i] = filename
+ end
+ pfile:close()
+ return t
+end
+
+local locale_dir = "../share/hedgewars/Data/Locale"
+
+local files = scandir(locale_dir)
+
+for f = 1, #files do
+ local filename = files[f]
+ if string.match(filename, "^[a-zA-Z_]+%.lua$") ~= nil and filename ~= "stub.lua" then
+
+ print("== "..filename.." ==")
+ dofile(locale_dir .. "/" .. filename)
+ local errors = 0
+ for eng, transl in pairs(locale) do
+ local example = "[\""..tostring(eng).."\"] = \""..tostring(transl).."\""
+
+ -- Check for obvious errors
+ if transl == "" then
+ print("[EE] Empty translation: "..example)
+ errors = errors + 1
+ end
+ if eng == "" then
+ print("[EE] Empty source string: "..example)
+ errors = errors + 1
+ end
+ if type(transl) ~= "string" then
+ print("[EE] Translation is not a string: "..example)
+ errors = errors + 1
+ end
+ if type(eng) ~= "string" then
+ print("[EE] Source is not a string: "..example)
+ errors = errors + 1
+ end
+
+ -- Check parameters
+ local ne, nt = 0, 0
+ local patterns = { "c", "d", "E", "e", "f", "g", "G", "i", "o", "u", "X", "x", "q", "s", "%.%df", "%.f", "" }
+ for p = 1, #patterns do
+ for w in string.gmatch(eng, "%%"..patterns[p]) do
+ ne = ne + 1
+ end
+ for w in string.gmatch(transl, "%%"..patterns[p]) do
+ nt = nt + 1
+ end
+ end
+ if ne ~= nt then
+ print("[EE] Param mismatch!: [\""..eng.."\"] = \""..transl.."\"")
+ errors = errors + 1
+ end
+
+ -- Warnings
+ if SHOW_WARNINGS and eng == transl then
+ print("[WW] Translation unchanged: "..example)
+ end
+ end
+ if errors == 0 then
+ print("OK")
+ end
+ end
+end