summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--modules/luci-base/luasrc/dispatcher.lua64
1 files changed, 34 insertions, 30 deletions
diff --git a/modules/luci-base/luasrc/dispatcher.lua b/modules/luci-base/luasrc/dispatcher.lua
index 4eb23b3e3..f150dcb42 100644
--- a/modules/luci-base/luasrc/dispatcher.lua
+++ b/modules/luci-base/luasrc/dispatcher.lua
@@ -503,6 +503,38 @@ function error500(message)
return false
end
+local function determine_request_language()
+ local conf = require "luci.config"
+ assert(conf.main, "/etc/config/luci seems to be corrupt, unable to find section 'main'")
+
+ local lang = conf.main.lang or "auto"
+ if lang == "auto" then
+ local aclang = http.getenv("HTTP_ACCEPT_LANGUAGE") or ""
+ for aclang in aclang:gmatch("[%w_-]+") do
+ local country, culture = aclang:match("^([a-z][a-z])[_-]([a-zA-Z][a-zA-Z])$")
+ if country and culture then
+ local cc = "%s_%s" %{ country, culture:lower() }
+ if conf.languages[cc] then
+ lang = cc
+ break
+ elseif conf.languages[country] then
+ lang = country
+ break
+ end
+ elseif conf.languages[aclang] then
+ lang = aclang
+ break
+ end
+ end
+ end
+
+ if lang == "auto" then
+ lang = i18n.default
+ end
+
+ i18n.setlanguage(lang)
+end
+
function httpdispatch(request, prefix)
http.context.request = request
@@ -522,6 +554,8 @@ function httpdispatch(request, prefix)
r[#r+1] = node
end
+ determine_request_language()
+
local stat, err = util.coxpcall(function()
dispatch(context.request)
end, error500)
@@ -639,36 +673,6 @@ function dispatch(request)
local ctx = context
ctx.path = request
- local conf = require "luci.config"
- assert(conf.main,
- "/etc/config/luci seems to be corrupt, unable to find section 'main'")
-
- local i18n = require "luci.i18n"
- local lang = conf.main.lang or "auto"
- if lang == "auto" then
- local aclang = http.getenv("HTTP_ACCEPT_LANGUAGE") or ""
- for aclang in aclang:gmatch("[%w_-]+") do
- local country, culture = aclang:match("^([a-z][a-z])[_-]([a-zA-Z][a-zA-Z])$")
- if country and culture then
- local cc = "%s_%s" %{ country, culture:lower() }
- if conf.languages[cc] then
- lang = cc
- break
- elseif conf.languages[country] then
- lang = country
- break
- end
- elseif conf.languages[aclang] then
- lang = aclang
- break
- end
- end
- end
- if lang == "auto" then
- lang = i18n.default
- end
- i18n.setlanguage(lang)
-
local c = ctx.tree
local stat
if not c then