openwrt设置语言的过程
设置语言的流程
一、关联的配置文件
/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设置语言的过程的更多相关文章
- 用source函数代替繁冗的R语言打包过程
用source函数代替繁冗的R语言打包过程 经过初级的学习和使用R语言之后我们渐渐的开始动手写自己的R语言小程序,这些小程序因为和自己的工作非常契合而变得通用性不是那么强.因此,要让它们成为一个独立的 ...
- C语言调试过程中duplicate symbol错误分析
说明:在我们调试C语言的过程中,经常会遇到duplicate symbol错误(在Mac平台下利用Xcode集成开发环境).如下图: 一.简单分析一下C语言程序的开发步骤. 由上图我们可以看出C语言由 ...
- Windows Store App 全球化:应用中设置语言选项
当开发者将开发的应用上传到Windows应用商店以后,使用Windows 8系统的用户可能会看到并下载这些应用,而这些用户所在的区域或者所使用的语言可能都不相同,如果他们在使用应用程序时希望改变应用显 ...
- SQL设置语言,返回中文”星期几”格式
SQL中语言表: SELECT * FROM sys.syslanguages eg: SET LANGUAGE 简体中文 --设置语言 PRINT DATENAME(weekday,GETDAT ...
- linux设置语言编码
前段时间在服务器上安装了centos6.2版本,当初安装时语言选择英文.这本来也没有什么问题,直到前一段时间.我的同事发现部署的web项目中出现乱码情况.但中文作为参数进行传递到下一个页面的时候就乱码 ...
- locale命令设置语言环境
locale命令设置语言环境 在Linux中通过locale来设置程序运行的不同语言环境,locale由 ANSI C提供支持.locale的命名规则为_.,如zh_CN.GBK,zh代表中文, CN ...
- C语言编译过程及数据类型
写在前面 C语言可以称得上是高级语言中的低级语言,接下来一段时间,我会写一下文章关于c语言,把它的神秘面纱一 一揭开.下面主要是c语言的C语言编译过程及数据类型 源文件编译过程 为了使计算机能执行高级 ...
- CentOS7--系统设置语言环境
设置语言: 系统范围的区域设置存储在/etc/locale.conf文件中,在systemd守护进程提前引导时读取.配置的区域设置/etc/locale.conf由每个服务或用户继承,除非个别程序或个 ...
- C语言编译过程以及gcc编译参数
1.1 C语言编译过程,gcc参数简介 1.1.1 C语言编译过程 一.gcc - o a a.c -o:指定文件输出名字 二.C语言编译的过程: 1.1.1 ...
随机推荐
- centos安装ganttproject
官网下载 http://www.ganttproject.biz/ 我的JAVA早已经安装了. 问题:root #ganttproject 提示org.bardsoftware.eclipsito.B ...
- swift3 循环滚动视图 自适应横竖屏 reload数据源
一句话创建banner图,可时时刷新 用到了 SnapKit.SDWebImage两个第三方库 实现步骤------------------------------------------------ ...
- 【IE6的疯狂之九】li在IE中底部空行的BUG
曾经写过[IE6的疯狂之六]li在IE中底部3像素的BUG(增加浮动解决问题),原文地址:http://www.css88.com/archives/421: IE6 BUG大全: http://ww ...
- 低功耗蓝牙BLE外围模式(peripheral)-使用BLE作为服务端
低功耗蓝牙BLE外围模式(peripheral)-使用BLE作为服务端 Android对外模模式(peripheral)的支持 从Android5.0开始才支持 关键术语和概念 以下是关键BLE术语和 ...
- iBeacon在iPhone锁屏下有几率扫描不到蓝牙设备以及折中解决方案
前言: 这个问题的确困扰了很久,查了国内外各种论坛.社区,都没找到一个有效的解决办法. 所幸后来用一种折中的办法解决了,但也不是从技术根本上解决的,所以有解决的兄弟还望指导下. 正文如下: 一.需求描 ...
- android应用编译失败 ResXMLTree_node size 类错误,以及 android studio 项目内搜索
今天很郁闷,又遇到个很让人崩溃的问题: ResXMLTree_node size 0 is smaller than header size 0x45. 类似这样的错误,提示中看不出任何有用的内容,网 ...
- Intellij Idea使用频率较高的几个快捷键
自动补全参数定义: Ctrl+Alt+V 运行断点Expression: Alt+F8 选择具体的方法以断点步入:Shift+F7 智能操作: Alt+Enter 打开最近文件:Ctrl+E 打开最近 ...
- 启动Mysql报错:Another MySQL daemon already running with the same unix socket.
启动Mysql报错: Another MySQL daemon already running with the same unix socket. 删除如下文件即可解决 /var/lib/mysql ...
- 变形属性 transform
transform功能可以实现文字或图像的旋转.绽放.倾斜.与移动: 注意点:1.其移动.旋转.倾斜.与绽放这4种效果的使用先后顺序不同,页面会显示不同的结果: 2.属性值有一个参数与有多个参数的别: ...
- 【卷二】网络二—TCP服务器与客户端
经过上回简单地介绍,大家对服务器多少应该清楚一些了吧!还记得TCP: (Transmission Control Protocol) 传输控制协议? 还记得IP: (Internet Protocol ...