summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Kendrick <rjek@netsurf-browser.org>2012-03-25 09:39:54 +0000
committerRob Kendrick <rjek@netsurf-browser.org>2012-03-25 09:39:54 +0000
commit99701232b2a363c0303923b580aec806e9e3a91d (patch)
tree5c7841d23c27f6dd535da80ca82b36f5d45b0e87
parent66f4d9a8314c182d9f2311761e9ab5df9d7dfc06 (diff)
downloadnetsurf-99701232b2a363c0303923b580aec806e9e3a91d.tar.gz
netsurf-99701232b2a363c0303923b580aec806e9e3a91d.tar.bz2
Script to merge messages files. More tag manipulation patterns needed.
svn path=/trunk/netsurf/; revision=13662
-rwxr-xr-xutils/merge-messages.lua83
1 files changed, 83 insertions, 0 deletions
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