diff options
Diffstat (limited to 'advtrains/locale/update-l10n.lua')
-rw-r--r-- | advtrains/locale/update-l10n.lua | 46 |
1 files changed, 46 insertions, 0 deletions
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 |