【2022.9.2 hm39 宏定义泰语开关 修改版本号】

项目场景:

登录界面增加泰语,主界面增加语言切换开关,通过宏定义控制泰语隐藏于显示,修改版本号。


修改步骤

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(&macro_resp, "language", info.language);
#if defined CONFIG_USER_THAI
	blobmsg_add_string(&macro_resp, "Thai", "1");
#else
	blobmsg_add_string(&macro_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>
        &nbsp <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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值