1local SHOW_WARNINGS = false
2
3local function scandir(directory)
4	local i, t, popen = 0, {}, io.popen
5	local pfile = popen('ls -a "'..directory..'"')
6	for filename in pfile:lines() do
7		i = i + 1
8		t[i] = filename
9	end
10	pfile:close()
11	return t
12end
13
14local locale_dir = "../share/hedgewars/Data/Locale"
15
16local files = scandir(locale_dir)
17
18for f = 1, #files do
19	local filename = files[f]
20	if string.match(filename, "^[a-zA-Z_]+%.lua$") ~= nil and filename ~= "stub.lua" then
21
22		print("== "..filename.." ==")
23		dofile(locale_dir .. "/" .. filename)
24		local errors = 0
25		for eng, transl in pairs(locale) do
26			local example = "[\""..tostring(eng).."\"] = \""..tostring(transl).."\""
27
28			-- Check for obvious errors
29			if transl == "" then
30				print("[EE] Empty translation: "..example)
31				errors = errors + 1
32			end
33			if eng == "" then
34				print("[EE] Empty source string: "..example)
35				errors = errors + 1
36			end
37			if type(transl) ~= "string" then
38				print("[EE] Translation is not a string: "..example)
39				errors = errors + 1
40			end
41			if type(eng) ~= "string" then
42				print("[EE] Source is not a string: "..example)
43				errors = errors + 1
44			end
45
46			-- Check parameters
47			local ne, nt = 0, 0
48			local patterns = { "c", "d", "E", "e", "f", "g", "G", "i", "o", "u", "X", "x", "q", "s", "%.%df", "%.f", "" }
49			for p = 1, #patterns do
50				for w in string.gmatch(eng, "%%"..patterns[p]) do
51					ne = ne + 1
52				end
53				for w in string.gmatch(transl, "%%"..patterns[p]) do
54					nt = nt + 1
55				end
56			end
57			if ne ~= nt then
58				print("[EE] Param mismatch!: [\""..eng.."\"] = \""..transl.."\"")
59				errors = errors + 1
60			end
61
62			-- Warnings
63			if SHOW_WARNINGS and eng == transl then
64				print("[WW] Translation unchanged: "..example)
65			end
66		end
67		if errors == 0 then
68			print("OK")
69		end
70	end
71end
72