luci的国际化(多语言)

语言的选择在dispatch函数入口出完成,如果配置文件/etc/config/luci中配置的langauto,则根据浏览器所带的信息选择一个合适的语言,否则就使用lang定义的语言,然后使用i18n.lua中的setlanguage设置对应的语言。

local lang = conf.main.lang or "auto"

         if lang == "auto" then

                   local aclang = http.getenv("HTTP_ACCEPT_LANGUAGE") or ""

                   for lpat in aclang:gmatch("[%w-]+") do

                            lpat = lpat and lpat:gsub("-", "_")

                            if conf.languages[lpat] then

                                     lang = lpat

                                     break

                            end

                   end

         end

         require "luci.i18n".setlanguage(lang)

 

装载资源文件使用i18n.lua中的函数loadc。资源文件位于/usr/lib/lua/luci/i18n,后缀名为lmo,这些文件是有.po文件转换的紧凑格式。

 

如果对应的页面有自己的资源文件,可以在entry定义菜单时添加,如

entry({"admin", "network", "ahcpd"}, cbi("ahcp"), _("AHCP Server"), 90).i18n = "ahcp"

disptach中会自动加载

if track.i18n then

         i18n.loadc(track.i18n)

end

也可以在htm文件中主动调用loadc加载资源文件。

 

对于需要多语言显示的字符串,调用i18n.lua中的translate获取对应语言的字符串显示,参数是po文件对应的英文资源名称。


http://blog.csdn.net/kwongfung/article/details/8488188

官方文档:http://luci.subsignal.org/api/luci/modules/luci.i18n.html


你可能感兴趣的:(openwrt)