设置语言的流程
一、关联的配置文件
/etc/config/luci
查看配置文件内容如下:
root@hbg:/# cat /etc/config/luci

config core 'main'
        option mediaurlbase '/luci-static/openwrt.org'
        option resourcebase '/luci-static/resources'
        option lang 'zh_cn'     // 目前使用的语言zh_cn,中文

config extern 'flash_keep'
        option uci '/etc/config/'
        option dropbear '/etc/dropbear/'
        option openvpn '/etc/openvpn/'
        option passwd '/etc/passwd'
        option opkg '/etc/opkg.conf'
        option firewall '/etc/firewall.user'
        option uploads '/lib/uci/upload/'

config internal 'languages'    // 语言选项
        option zh_cn 'chinese' // 中文
        option en 'English'    // 英语

config internal 'sauth'
        option sessionpath '/tmp/luci-sessions'
        option sessiontime '3600'

config internal 'ccache'
        option enable '1'

config internal 'themes'
        option Bootstrap '/luci-static/bootstrap'
  
二、调用过程

在dispatcher.lua中httpdispatch() 函数中调用了函数dispatch(),
在dispatch()函数中实现:

local conf = require "luci.config"    // 配置文件为/etc/config/luci
        assert(conf.main,                     // 查看配置文件中是否有main段,若无,提示错误。
                "/etc/config/luci seems to be corrupt, unable to find section 'main'")

local lang = conf.main.lang

if lang == nil then
   lang = "zh_cn"
            luci.sys.call("uci set luci.main.lang=zh_cn; uci commit luci")   
        end

require "luci.i18n".setlanguage(lang)  // 设置语言

查找调用dispatch()的地方,可以找到:
1)cgi.lua 
2)uhttpd.lua
两个脚本都位 ./feeds/luci/modules/base/luasrc/sgi目录下,
并且都是调用这句
local x = coroutine.create(luci.dispatcher.httpdispatch)
调用cgi.lua脚本的地方为./feeds/luci/modules/base/htdocs/cgi-bin/luci
文件内容如下:
#!/usr/bin/lua
require "luci.cacheloader"
require "luci.sgi.cgi"    // 包含头文件cgi.lua
luci.dispatcher.indexcache = "/tmp/luci-indexcache"
luci.sgi.cgi.run()        // 调用cgi.lua中的run函数。

三、luci的启动-uhttpd
uhttpd是一个简单的web服务器程序,主要就是cgi的处理,openwrt是利用uhttpd作为web服务器,
实现客户端web页面配置功能。对于request处理方式,采用的是cgi,而所用的cgi程序就是luci.

四、luci的启动-luci
在web server中的cgi-bin目录下,运行 luci 文件(权限一般是 755,luci的代码如下:

  #!/usr/bin/lua      --cgi的执行命令的路径

  require"luci.cacheloader"    --导入cacheloader包

  require"luci.sgi.cgi"         --导入sgi.cgi包

  luci.dispatcher.indexcache = "/tmp/luci-indexcache"  --cache缓存路径地址

  luci.sgi.cgi.run()  --执行run,此方法位于*/luci/sgi/cgi.lua

五、Luci-- Web
  a.登录

  输入: http://x.x.x.x/ 登录LuCI.

调用 /www/cgi-bin/luci.

  b. 进入主菜单‘status’

  输入: http://x.x.x.x/cgi-bin/luci/admin/status/即可访问status页面。
    Luci则会调用 /luci/admin/目录下的status.lua脚本:

  module("luci.controller.admin.status", package.seeall)

  /usr/lib/lua/luci/controller/admin/status.lua->index()

openwrt设置语言的过程的更多相关文章

  1. 用source函数代替繁冗的R语言打包过程

    用source函数代替繁冗的R语言打包过程 经过初级的学习和使用R语言之后我们渐渐的开始动手写自己的R语言小程序,这些小程序因为和自己的工作非常契合而变得通用性不是那么强.因此,要让它们成为一个独立的 ...

  2. C语言调试过程中duplicate symbol错误分析

    说明:在我们调试C语言的过程中,经常会遇到duplicate symbol错误(在Mac平台下利用Xcode集成开发环境).如下图: 一.简单分析一下C语言程序的开发步骤. 由上图我们可以看出C语言由 ...

  3. Windows Store App 全球化:应用中设置语言选项

    当开发者将开发的应用上传到Windows应用商店以后,使用Windows 8系统的用户可能会看到并下载这些应用,而这些用户所在的区域或者所使用的语言可能都不相同,如果他们在使用应用程序时希望改变应用显 ...

  4. SQL设置语言,返回中文”星期几”格式

    SQL中语言表: SELECT * FROM sys.syslanguages   eg: SET LANGUAGE 简体中文 --设置语言 PRINT DATENAME(weekday,GETDAT ...

  5. linux设置语言编码

    前段时间在服务器上安装了centos6.2版本,当初安装时语言选择英文.这本来也没有什么问题,直到前一段时间.我的同事发现部署的web项目中出现乱码情况.但中文作为参数进行传递到下一个页面的时候就乱码 ...

  6. locale命令设置语言环境

    locale命令设置语言环境 在Linux中通过locale来设置程序运行的不同语言环境,locale由 ANSI C提供支持.locale的命名规则为_.,如zh_CN.GBK,zh代表中文, CN ...

  7. C语言编译过程及数据类型

    写在前面 C语言可以称得上是高级语言中的低级语言,接下来一段时间,我会写一下文章关于c语言,把它的神秘面纱一 一揭开.下面主要是c语言的C语言编译过程及数据类型 源文件编译过程 为了使计算机能执行高级 ...

  8. CentOS7--系统设置语言环境

    设置语言: 系统范围的区域设置存储在/etc/locale.conf文件中,在systemd守护进程提前引导时读取.配置的区域设置/etc/locale.conf由每个服务或用户继承,除非个别程序或个 ...

  9. C语言编译过程以及gcc编译参数

    1.1       C语言编译过程,gcc参数简介 1.1.1          C语言编译过程 一.gcc - o a a.c -o:指定文件输出名字 二.C语言编译的过程: 1.1.1       ...

随机推荐

  1. CODE[VS]-寻找子串位置-字符串处理-天梯青铜

    题目描述 Description 给出字符串a和字符串b,保证b是a的一个子串,请你输出b在a中第一次出现的位置. 输入描述 Input Description 仅一行包含两个字符串a和b 输出描述 ...

  2. hibernate、easyui、struts2整合

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. R语言数据结构

    5. 数据结构 5.1 数据结构简介 (1)向量 一个向量的所有元素必须有相同的类型(模式) (2)列表 列表可以非同质的 列表可按位置索引:lst[[2]] 抽取子列表:lst[c(2,5)] 列表 ...

  4. SpringMVC 学习-异常处理 SimpleMappingExceptionResolver 类

    Spring3.0 对异常的处理方式总共有两种: 一种是使用 HandlerExceptionResolver 接口,并且 Spring 已经提供默认的实现类 SimpleMappingExcepti ...

  5. 基于html5 canvas 的强大图表插件【Chart.js】

    名词解释 Chart.js:是基于html5和canvas的强大图表插件,支持多样的图表形式,柱状线性饼环极地雷达等等: canvas:只兼容到IE9 excanvas.js:强大的第三方兼容插件,可 ...

  6. [河南省ACM省赛-第四届] 表达式求值(nyoj 305)

    栈的模拟应用: #include<iostream> #include<cstdio> #include<cstring> #include<string&g ...

  7. C# 语言规范_版本5.0 (第12章 数组)

    1. 数组 数组是一种包含若干变量的数据结构,这些变量都可以通过计算索引进行访问.数组中包含的变量(又称数组的元素)具有相同的类型,该类型称为数组的元素类型. 数组有一个“秩”,它确定和每个数组元素关 ...

  8. unity笔录

    ----------------------------unity项目在启动splash的时候黑屏 原因不明------------------测试复制项目  用剔除法测试 笔录开始 先用原版本打包 ...

  9. EF Codefirst 初步学习(二)—— 程序管理命令 更新数据库

    前提:搭建成功codefirst相关代码,参见EF Codefirst  初步学习(一)--设置codefirst开发模式 具体需要注意点如下: 1.确保实体类库程序生成成功 2.确保实体表类库不缺少 ...

  10. 为什么要html语义化?

    1.什么是HTML语义化? <基本上都是围绕着几个主要的标签,像标题(H1~H6).列表(li).强调(strong em)等等> 根据内容的结构化(内容语义化),选择合适的标签(代码语义 ...