From af43c413b0f57d7ee907a05139515f2b3eb9e4cd Mon Sep 17 00:00:00 2001 From: ywang Date: Sat, 27 Mar 2021 16:45:41 +0100 Subject: Update German translation; add script to update l10n files --- advtrains/locale/update-l10n.lua | 46 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 advtrains/locale/update-l10n.lua (limited to 'advtrains/locale/update-l10n.lua') diff --git a/advtrains/locale/update-l10n.lua b/advtrains/locale/update-l10n.lua new file mode 100644 index 0000000..011f9c6 --- /dev/null +++ b/advtrains/locale/update-l10n.lua @@ -0,0 +1,46 @@ +local lang = arg[1] or error("No language supplied") +local tfn = string.format("advtrains.%s.tr", lang) +local f = io.open(tfn, "rb") or error("Cannot read from translation file") +local tf = {} +for l in f:lines() do + tf[#tf+1] = l +end +f:close() + +local ot = {[0] = ""} +local f = io.open("template.txt", "rb") or error("Cannot read from translation template") +for l in f:lines() do + if l == "" then -- blank line + if ot[#ot] ~= l then ot[#ot+1] = l end + elseif l:find("^#") then -- comment + if ot[#ot] ~= l then ot[#ot+1] = l end + else + s = l:match("^(.+[^@]=)") + if s then + local found = false + for i = 1, #tf, 1 do + if tf[i]:find(s, 1, true) == 1 then + found = i + break + end + end + if found then + local fc = found-1 + while fc > 0 do + if not tf[fc]:find("^#") then break end + fc = fc-1 + end + for i = fc+1, found, 1 do + if ot[#ot] ~= tf[i] then ot[#ot+1] = tf[i] end + end + else + if ot[#ot] ~= l then ot[#ot+1] = l end + end + end + end +end +f:close() + +local f = io.open(tfn, "wb") or error("Cannot write to translation file") +f:write(table.concat(ot,"\n")) +f:close() \ No newline at end of file -- cgit v1.2.3