欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

jeecg国际化

程序员文章站 2022-05-16 10:37:38
...

最近在做jeecg国际化,从刚开始的满头雾水到现在的“小有成就“已经过去大半个月。就总结下这一块的知识,送给和当初的我一样迷茫的小哥哥小姐姐。有什么不对的地方还请多多指教^_^。

首先大部分内容的国际化都可以参考官网附送的教程解决:http://jeecg3.mydoc.io/

总结起来可以归为:

1、jsp中使用国际化

1.1、这个比较简单,利用jeecg提供的国际化标签即可解决。

1.2、jeecg标签中的title可直接使用key值即可。例如:<t:dgCol title="common.id" field="id" hidden="true" queryMode="group" width="120"></t:dgCol>

1.3、jeecg标签属性国际化:例如<t:dgConfOpt url="kyAlarmController.do?isAck&id={id}" title="告警确认" message="是否确认" urlclass="ace_button" urlfont="fa-trash-o"/>其中的message属性,这个暂时还没想到好的办法,直接使用英文替换。也可以改变其使用的方法,这个比较麻烦,下面会讲到。

注意:输出语句国际化需用""引起来,不然控制台会报错。例如:layer.msg("<t:mutiLang langKey="common.edit.param" langArg="common.operation"/>");

2、js中使用国际化(这里讲的是js文件,而不是jsp中的js代码块)

2.1、一些jsp页面中引入js文件,可以是js插件也可以是js代码都没关系。

如果js代码比较少可以直接将js代码放到jsp中使用上面的方法解决。还可以在jsp引入该js文件前面添加js方法并返回需要国际化的内容,然后在js文件中调用该方法。例如:

<script>
 function getMemory() {
    var memory=<t:mutiLang langKey="memory"/>;
    return memory;
 }
</script>

还可以使用i18n插件来做国际化,当然jsp中也可以使用这个插件,前提是jeecg3.8版本以上。

使用方法:

1:在js或者jsp中加入以下代码

//i18n前段国际化
initI18nConfig();
/**
 * i18n国际化配置
 */
function initI18nConfig() {
	var i18n_browser_Lang = getCookie("i18n_browser_Lang");
	if(i18n_browser_Lang == 'zh-cn'){
		i18n_browser_Lang = 'zh';
	}
//	console.log(i18n_browser_Lang);
    $.i18n.properties({
        name:'jeecgs',    		//属性文件名     命名格式: 文件名_国家代号.properties
        path:'plug-in/i18n/',   //注意这里路径是你属性文件的所在文件夹
        mode:'map',
        language:i18n_browser_Lang,//这就是国家代号 name+language刚好组成属性文件名:strings+zh -> strings_zh.properties
        callback:function(){
       	
        }
    });
}

2:在i18n文件下找到jeecgs_en.properties和jeecgs_ch.properties文件填入要用到的key,然后在有中文的地方使用$.i18n.prop('edit.selectItem')替换即可,其中edit.selectItem为资源文件中的key。

2.2、jeecg自带窗体国际化,jeecg默认窗体是在curdtools.js里面的可以通过i18n修改该文件中汉字即可。

注意:这里面有点小坑,jeecg使用的窗体控件不止一种,目前我发现的窗体控件有jQuery的dialog控件以及layer的控件使用的控件不一样处理的方式也不一样,这里讲一下我遇到的情况吧!

$.dialog({
			content: 'url:'+addurl,
			zIndex: getzIndex(),
			lock : true,
			width:width,
			height: height,
			title:title,
			opacity : 0.3,
			cache:false, 
			okVal: $.i18n.prop('dialog.submit'),
		    cancelVal: $.i18n.prop('dialog.close'),
		    cancel: true /*为true等价于function(){}*/
		});

其中的okVal和cancelVal是弹出框两个按钮,title为标题。

$.dialog.confirm(content, function(){
			doSubmit(url,name);
			rowid = '';
		}, function(){
		});

$.dialog.confirm为jQuery插件dialog的扩展,本身就不支持两个按钮和title的修改,因此,我们遇到这种情况完全可以使用$.dialog来替换掉confirm方法。

$.dialog  API:http://www.lhgdialog.com/api/

layer.open({
				title:'提示信息',
				offset:'rb',
				content:msg,
				time:3000,
				btn:false,
				shade:false,
				icon:icon,
				shift:2
			});

如没有设置按钮和标题,则使用磨人的中文内容。因此需要添加按钮和title然后使用i18n国际化。

layer  API:https://www.layui.com/doc/modules/layer.html

3、Java代码中使用国际化

MutiLangUtil.getLang(langKey);

4、时间控件国际化

jeecg时间控件使用了My97DatePicker插件,在My97DatePicker.js中可以看到 lang:"auto"。auto的意思就是随着浏览器的语言来使用不同的语言控件。

 

好了^_^,大概就这么多了,以后有新的情况也会继续添加。随时欢迎交流~~~~~

 

相关标签: jeecg国际化