Rebased from upstream / out of band repository.
[librecmc/librecmc.git] / package / luci / modules / luci-base / luasrc / i18n.lua
index bcb16d5c04cb5ac7c90ff07dd00c75a641d0a1b2..323912b65022ef10cfe3dd63315cca8c99896f38 100644 (file)
@@ -1,37 +1,43 @@
 -- Copyright 2008 Steven Barth <steven@midlink.org>
 -- Licensed to the public under the Apache License 2.0.
 
-module("luci.i18n", package.seeall)
-require("luci.util")
+local tparser  = require "luci.template.parser"
+local util     = require "luci.util"
+local tostring = tostring
 
-local tparser = require "luci.template.parser"
+module "luci.i18n"
 
-table   = {}
-i18ndir = luci.util.libpath() .. "/i18n/"
-loaded  = {}
-context = luci.util.threadlocal()
+i18ndir = util.libpath() .. "/i18n/"
+context = util.threadlocal()
 default = "en"
 
-function clear()
-end
 
-function load(file, lang, force)
-end
+function setlanguage(lang)
+       local code, subcode = lang:match("^([A-Za-z][A-Za-z])[%-_]([A-Za-z][A-Za-z])$")
+       if not (code and subcode) then
+               subcode = lang:match("^([A-Za-z][A-Za-z])$")
+               if not subcode then
+                       return nil
+               end
+       end
 
--- Alternatively load the translation of the fallback language.
-function loadc(file, force)
-end
+       context.parent = code and code:lower()
+       context.lang   = context.parent and context.parent.."-"..subcode:lower() or subcode:lower()
 
-function setlanguage(lang)
-       context.lang   = lang:gsub("_", "-")
-       context.parent = (context.lang:match("^([a-z][a-z])_"))
-       if not tparser.load_catalog(context.lang, i18ndir) then
-               if context.parent then
-                       tparser.load_catalog(context.parent, i18ndir)
+       if tparser.load_catalog(context.lang, i18ndir) and
+          tparser.change_catalog(context.lang)
+       then
+               return context.lang
+
+       elseif context.parent then
+               if tparser.load_catalog(context.parent, i18ndir) and
+                  tparser.change_catalog(context.parent)
+               then
                        return context.parent
                end
        end
-       return context.lang
+
+       return nil
 end
 
 function translate(key)
@@ -42,14 +48,8 @@ function translatef(key, ...)
        return tostring(translate(key)):format(...)
 end
 
--- and ensure that the returned value is a Lua string value.
--- This is the same as calling <code>tostring(translate(...))</code>
-function string(key)
-       return tostring(translate(key))
-end
-
--- Ensure that the returned value is a Lua string value.
--- This is the same as calling <code>tostring(translatef(...))</code>
-function stringf(key, ...)
-       return tostring(translate(key)):format(...)
+function dump()
+       local rv = {}
+       tparser.get_translations(function(k, v) rv[k] = v end)
+       return rv
 end