From 99701232b2a363c0303923b580aec806e9e3a91d Mon Sep 17 00:00:00 2001 From: Rob Kendrick Date: Sun, 25 Mar 2012 09:39:54 +0000 Subject: Script to merge messages files. More tag manipulation patterns needed. svn path=/trunk/netsurf/; revision=13662 --- utils/merge-messages.lua | 83 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100755 utils/merge-messages.lua (limited to 'utils') diff --git a/utils/merge-messages.lua b/utils/merge-messages.lua new file mode 100755 index 000000000..11087550a --- /dev/null +++ b/utils/merge-messages.lua @@ -0,0 +1,83 @@ +#!/usr/bin/env lua5.1 + +local lfs = require "lfs" + +local en_stat = assert(lfs.attributes "!NetSurf/Resources/en/Messages") +local language = { } +local sorted = { } + +io.stderr:write("loading non-en languages...\n"); + +for dir in lfs.dir "!NetSurf/Resources" do + local path = "!NetSurf/Resources/" .. dir + if dir ~= "en" and lfs.attributes(path .. "/Messages") then + local f = io.open(path .. "/Messages", "r") + local c = 0 + io.stderr:write(dir, ":") + language[dir] = { } + sorted[#sorted + 1] = dir + for l in f:lines() do + if l:sub(1, 1) ~= "#" then + local tag, msg = l:match "^([^:]*):(.*)$" + if tag then + language[dir][tag] = msg + c = c + 1 + end + end + end + f:close() + io.stderr:write(tostring(c), " entries.\n") + end +end + +table.sort(sorted) + +io.stderr:write("working through en...\n") + +local manipulators = { + { "^ami(.*)", "ami.%1" }, + { "^gtk(.*)", "gtk.%1" }, + { "^Help(.*)", "ro.Help%1" }, + + { "^(.*)$", "all.%1" } -- must be last +} + +local function manipulate_tag(t) + for _, m in ipairs(manipulators) do + local r, s = t:gsub(m[1], m[2]) +-- if s > 0 then io.stderr:write(("*** '%s' -> '%s' (%d)\n"):format(t, r, s)) end + if s > 0 then return r end + end + return t +end + +local f = io.open("!NetSurf/Resources/en/Messages", "r") + +for l in f:lines() do + if l:sub(1,1) == "#" then + print(l) + else + local tag, msg = l:match "^([^:]*):(.*)$" + if not tag then + print(l) + else + local mtag = manipulate_tag(tag) + io.stdout:write("en.", mtag, ":", msg, "\n") + for _, langname in ipairs(sorted) do + local trans = language[langname][tag] + if not trans then + io.stderr:write("*** language ", langname, " lacks translation for ", mtag, "/", tag, "\n") + trans = msg + end + io.stdout:write(langname, ".", mtag, ":", trans, "\n") + language[langname][tag] = nil + end + end + end +end + +for _, langname in ipairs(sorted) do + for tag in pairs(language[langname]) do + io.stderr:write("*** language ", langname, " contains orphan tag ", tag, "\n") + end +end \ No newline at end of file -- cgit v1.2.3