Luci的自动语言选择机制
今天发现一个奇怪的问题,luci在安装中文语言包后竟然无法切回英文,于是简单分析了一下代码,下面简单记录1. luci的语言选择在/usr/lib/lua/luci/dispatcher.lua文件中实现,相关代码段如下
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("^()()$")
if country and culture then
local cc = "%s_%s" %{ country, culture:lower() }
if conf.languages then
lang = cc
break
elseif conf.languages then
lang = country
break
end
elseif conf.languages then
lang = aclang
break
end
end
end
if lang == "auto" then
lang = i18n.default
end
i18n.setlanguage(lang)
end简单分析以上代码,大致流程如下
. 获取已安装的语言包列表
. 获取浏览器支持的语言列表
. 将浏览器语言支持列表和已安装语言包进行比对, 按照优先级匹配,如果匹配上,就使用对应语言
. 如果浏览器支持的语言列表没有在语言包中匹配上,则使用默认语言(英文)
1. 问题解决
知道了语言匹配过程,解决问题就简单啦,将浏览器的中文语言支持移除,然后重启浏览器即可切换回英文界面
改英文难度不需要单独安语言包? 这是饭店 发表于 2022-8-29 22:14
改英文难度不需要单独安语言包?
英文是默认语言,所以不需要单独安装,当然,你单独安装也可以 萝卜大侠 发表于 2022-8-29 23:28
英文是默认语言,所以不需要单独安装,当然,你单独安装也可以
英文写的代码不显示英文还能显示中文吗
页:
[1]