summaryrefslogtreecommitdiffhomepage
path: root/libs/web
diff options
context:
space:
mode:
Diffstat (limited to 'libs/web')
-rw-r--r--libs/web/luasrc/dispatcher.lua11
-rw-r--r--libs/web/luasrc/i18n.lua20
2 files changed, 19 insertions, 12 deletions
diff --git a/libs/web/luasrc/dispatcher.lua b/libs/web/luasrc/dispatcher.lua
index e9d3b24d1..8d1e493fb 100644
--- a/libs/web/luasrc/dispatcher.lua
+++ b/libs/web/luasrc/dispatcher.lua
@@ -122,11 +122,12 @@ function dispatch()
-- Init template engine
local tpl = require("luci.template")
- tpl.viewns.translate = function(...) return require("luci.i18n").translate(...) end
- tpl.viewns.controller = luci.http.dispatcher()
- tpl.viewns.uploadctrl = luci.http.dispatcher_upload()
- tpl.viewns.media = luci.config.main.mediaurlbase
- tpl.viewns.resource = luci.config.main.resourcebase
+ tpl.viewns.translate = function(...) return require("luci.i18n").translate(...) end
+ tpl.viewns.controller = luci.http.dispatcher()
+ tpl.viewns.uploadctrl = luci.http.dispatcher_upload()
+ tpl.viewns.media = luci.config.main.mediaurlbase
+ tpl.viewns.resource = luci.config.main.resourcebase
+ tpl.viewns.REQUEST_URI = luci.http.env.SCRIPT_NAME .. luci.http.env.PATH_INFO
if c and type(c.target) == "function" then
diff --git a/libs/web/luasrc/i18n.lua b/libs/web/luasrc/i18n.lua
index 3a8a9a6c7..7ace708e9 100644
--- a/libs/web/luasrc/i18n.lua
+++ b/libs/web/luasrc/i18n.lua
@@ -29,6 +29,7 @@ require("luci.sys")
table = {}
i18ndir = luci.sys.libpath() .. "/i18n/"
+loaded = {}
-- Clears the translation table
function clear()
@@ -36,14 +37,19 @@ function clear()
end
-- Loads a translation and copies its data into the global translation table
-function load(file)
- local f = loadfile(i18ndir .. file)
- if f then
- setfenv(f, table)
- f()
- return true
+function load(file, force)
+ if force or not loaded[file] then
+ local f = loadfile(i18ndir .. file)
+ if f then
+ setfenv(f, table)
+ f()
+ loaded[file] = true
+ return true
+ else
+ return false
+ end
else
- return false
+ return true
end
end