项目场景:
登录界面增加泰语,主界面增加语言切换开关,通过宏定义控制泰语隐藏于显示,修改版本号。
修改步骤
1.修改版本号 增加config配置
/
build\products\HM39\include.sh
/
CONFIG_SOFTWARE_VER="CPE4_HM39_00_v1.1.7.bin" //修改版本号
CONFIG_ATEL_PCB="HM39"
CONFIG_USER_THAI=y //增加泰语config控制开关(打开) 使用#进行隐藏
2.创建用户进程控制开关
与config相结合控制进程的打开与关闭
build\select_atel\select.sh
creat_user_process()
{
//创建用户进程
#set_config CONFIG_ASR1803
if [ "$CONFIG_USER_THAI" == "y" ]; then
set_config CONFIG_USER_THAI
else
unset_config CONFIG_USER_THAI
fi
}
-------------------------------------
/
.config 编译后自动被修改
/
# CONFIG_USER_SPANISH is not set
CONFIG_USER_THAI=y
--------------------------------------
//
user_conf.h 编译后自动被修改
//
#undef CONFIG_USER_SPANISH
#define CONFIG_USER_THAI 1
3.在c文件中添加宏定义
登陆界面增加泰语宏定义
///
marvell\services\router\applets\router_management.c -------> PostXml("router","router_get_login")
///
int router_get_login(struct ubus_context *ctx, struct ubus_object *obj,struct ubus_request_data *req, const char *method, struct blob_attr *msg)
{
#if defined CONFIG_USER_THAI
blobmsg_add_string(&router_buf, "Thai", "1");
#else
blobmsg_add_string(&router_buf, "Thai", "0");
#endif
}
主界面增加语言宏定义
///
marvell\services\router\applets\router_main.c ----> PostXml("router","get_macro")
///
struct language_info {
char language[8];
};
static int get_macro(struct ubus_context *ctx, struct ubus_object *obj,
struct ubus_request_data *req, const char *method, struct blob_attr *msg)
{
struct language_info info;
struct uci_element *e = NULL;
struct uci_package *p = NULL;
struct uci_context *local_ctx = NULL;
p = uci_to_package(e);
local_ctx = uci_applet_ctx_get();
if (!local_ctx) {
assert(0);
}
uci_foreach_element(&local_ctx->root, e) {
if (strcmp(e->name, "language") != 0)
continue;
p = uci_to_package(e); //have found
}
if (!p) {
uci_load(local_ctx, "language", &p);
}
if (p) {
parse_language_package_info(local_ctx, p, &info);
}
blobmsg_add_string(¯o_resp, "language", info.language);
#if defined CONFIG_USER_THAI
blobmsg_add_string(¯o_resp, "Thai", "1");
#else
blobmsg_add_string(¯o_resp, "Thai", "0");
#endif
}
4.泰语功能的显示与隐藏
登录界面泰语隐藏与显示
marvell\webui\www\index.html
function initIndex() {
var retXml = PostXml("router","router_get_login");
$("#index_language").val($(retXml).find("language").text());
var g_Thai = $(retXml).find("Thai").text();
if(g_Thai == "0"){
$("#Language_Thai").hide();
}
}
主界面语言切换功能隐藏与获取当前设置的语言
marvell\webui\www\js\base\layout_manager.js
function createMenuFromXML() {
if(g_get_macro_flag != "1"){
var retXml = PostXml("router","get_macro");//get_macro()在router_main.c中
g_Thai=$(retXml).find("Thai").text();
if(g_Thai=="1")
{
$("#index_lan").val($(retXml).find("language").text());//获得当前设置的语言并显示
}
else{
document.getElementById('index_lan').style.display = 'none';//隐藏语言切换
}
}
}
5.HTML界面
登录界面增加泰语html
//
marvell\webui\www\index.html
//
<div class="box2"">
<select style="display:block align:right" id="index_language" onchange="setLanguage()">
<option id="Language_English" value="en">English</option>
<option id="Language_Thai" value="th">Thai</option>
</select>
</div>
主界面增加语言切换html
//
/marvell/webui/www/html/adminApp.html
//
<div class="loginArea">
<select id="index_lan" onchange="setLanguages()">
<option id="Lan_English" value="en">English</option>
<option id="Lan_Thai" value="th">Thai</option>
</select>
  <a href="#." id="lt_MainLogOut" onclick="logOut()">Logout</a>
</div>
6.js控制语言切换
登录界面js控制语言切换
//
marvell\webui\www\index.html
//
function setLanguage()
{
if(document.getElementById("index_language").value == "th"){
setLocale('th');
}else{
setLocale('en');
}
document.getElementById("Language_Spanish").innerHTML = jQuery.i18n.prop("Language_Spanish");
var configMap = new Map();
$("#sulogsettings_enable").val()
configMap.put("RGW/router/language",$("#index_language").val());
var retXml = PostXml("router","router_set_language",configMap);
}
主界面js控制语言切换
//
marvell\webui\www\js\base\utils.js
//
function setLanguages()
{
if(document.getElementById("index_lan").value == "th"){
SetCookie("locale","th",365);
setLocalization("th");
}else if(document.getElementById("index_lan").value == "en"){
SetCookie("locale","en",365);
setLocalization("en");
}
var configMap = new Map();
configMap.put("RGW/router/language",$("#index_lan").val());
var retXml = PostXml("router","router_set_language",configMap);
location.reload();
}
设置本地语言
//
marvell\webui\www\js\base\ajax_calls.js
//
function setLocalization(locale) {
if(locale != "ru" && locale != "es" && locale != "en")
locale = "th";
else
locale = "en";
}
设置cookie(不用动)
//
marvell\webui\www\js\base\utils.js
//
function SetCookie(c_name,value,expiredays) {
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}
7.设置该版本默认语言
//
build\products\HM39\file\package_config\language 增加默认语言文件
//
config language
option language th