jeecg国际化
最近在做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国际化。
3、Java代码中使用国际化
MutiLangUtil.getLang(langKey);
4、时间控件国际化
jeecg时间控件使用了My97DatePicker插件,在My97DatePicker.js中可以看到 lang:"auto"。auto的意思就是随着浏览器的语言来使用不同的语言控件。
好了^_^,大概就这么多了,以后有新的情况也会继续添加。随时欢迎交流~~~~~
上一篇: Dorado国际化
下一篇: 比较两个二叉树是否相同