12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- -- Copyright 2008 Steven Barth <steven@midlink.org>
- -- Licensed to the public under the Apache License 2.0.
- local tparser = require "luci.template.parser"
- local util = require "luci.util"
- local tostring = tostring
- module "luci.i18n"
- i18ndir = util.libpath() .. "/i18n/"
- context = util.threadlocal()
- default = "en"
- 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
- context.parent = code and code:lower()
- context.lang = context.parent and context.parent.."-"..subcode:lower() or subcode:lower()
- 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 nil
- end
- function translate(key)
- return tparser.translate(key) or key
- end
- function translatef(key, ...)
- return tostring(translate(key)):format(...)
- end
- function dump()
- local rv = {}
- tparser.get_translations(function(k, v) rv[k] = v end)
- return rv
- end
|