js 前端实现国际化配置
2017-09-06 09:31
176 查看
最近项目中需求配置国际化,再网上找了相关资料,最后选择了i18n来处理国际化,可是在使用过程中碰到了兼容性的问题,后来想想就自己用js实现了一个简单的国际化配置,具体实现步骤如下:
1,参考i18n的实施过程,其实就是配置一个静态文件,然后再动态的去读取其中的值,最后在根据读取到的值更新相应的字段即可。
2,
我将静态配置文件放在lib/i18n下,其中en里面配置的是静态的英文配置,zh是相应的中文字段,
如果有其他语言可以在添加相应的文件夹,而静态文件就是一个返回js对象的js文件,里面写好相应的
字段来配置值,
而所有需要变换语言的地方我都配置了相应的class及一个自定义属性
其中data-title所指向配置文件中的对象的属性名
再需要转换语言时,就可以
object[$(".i18n").attr("data-title")]来获取相应的值并赋值
由于一般国际化需要将当期视图的所有静态字段转换,我将每个页面都单独配置了一个文件
具体转换步骤我单独写在了myi18n.js里面,以下就是代码
以上就是我做国际化文件的一个心得,如果大家有什么好的建议请多多指教
1,参考i18n的实施过程,其实就是配置一个静态文件,然后再动态的去读取其中的值,最后在根据读取到的值更新相应的字段即可。
2,
我将静态配置文件放在lib/i18n下,其中en里面配置的是静态的英文配置,zh是相应的中文字段,
如果有其他语言可以在添加相应的文件夹,而静态文件就是一个返回js对象的js文件,里面写好相应的
字段来配置值,
而所有需要变换语言的地方我都配置了相应的class及一个自定义属性
<thead> <tr> <th class="i18n" data-title="HeadImage" style="width: 80px">头像</th> <th class="i18n" data-title="userName">姓名</th> <th class="i18n" data-title="ContactWay">联系方式</th> <th class="i18n" data-title="time">申请时间</th> <th class="i18n" data-title="status">状态</th> <th class="i18n" data-title="action">操作</th> </tr>
其中data-title所指向配置文件中的对象的属性名
再需要转换语言时,就可以
object[$(".i18n").attr("data-title")]来获取相应的值并赋值
由于一般国际化需要将当期视图的所有静态字段转换,我将每个页面都单独配置了一个文件
具体转换步骤我单独写在了myi18n.js里面,以下就是代码
changeLan:function (options) { var name = options.name||"index";//本项目默认文件为index.properties var lan = options.lan; var callbacks = options.callback; var path = "lib/i18n/"+lan+"/"+name; requirejs([path], function (lanObject) { callbacks(lanObject); }) },
common:function (options) { var callback = function (object) { var insertEle = $(".i18n"),errArr=[]; for(var i=0,l=insertEle.length;i<l;i++){ var item = $(insertEle[i]); var text = object[item.attr('data-title')]; if(!text){ errArr.push((item.attr('data-title')+" not found")); }else{ item.html(text); } }
// insertEle.each(function() { // var item = $(this); // // 根据i18n元素的 name 获取内容写入 // item.html($.i18n.prop(item.attr('data-title'))); // }); var insertInputEle = $(".i18n-input"); for(var i=0,l=insertInputEle.length;i<l;i++){ var item = $(insertInputEle[i]); var selectAttr = item.attr('selectattr'); var attrName = selectAttr.split("_")[1]; if (!attrName) { attrName = "value"; }; var text = object[item.attr('selectattr')]; if(!text){ errArr.push((item.attr('selectattr')+" not found")) }else{ item.attr(attrName, object[item.attr('selectattr')]); } } if(errArr.length !== 0){ console.log(errArr); } // insertInputEle.each(function() { // var item = $(this); // var selectAttr = item.attr('selectattr'); // var attrName = selectAttr.split("_")[1]; // if (!attrName) { // attrName = "value"; // }; // item.attr(attrName, $.i18n.prop(item.attr('selectattr'))); // }); } options.callback = callback; this.changeLan(options); }
以上就是我做国际化文件的一个心得,如果大家有什么好的建议请多多指教
相关文章推荐
- nginx做反向代理,实现负载均衡基本配置。无法加载css,js或图片
- C#利用js脚本实现配置的文本表达式计算
- JS之 前端图片预览的实现,浏览器的兼容性真恶心
- Node.js Redis Expess 开发环境配置及Session实现服务器间共享实例
- spring + jstl 实现java国际化的配置步骤
- web前端实验一:利用Js捕获鼠标事件实现图片切换
- JS 国际化实现
- 使用 jQuery.i18n.properties 实现 Web 前端的国际化
- 基于浏览器首选语言的springmvc和freemarker国际化配置的实现
- 3种方式实现JSF国际化配置
- 利用HTML5,前端js实现图片压缩
- 自定义JSP标签实现语言国际化(类似struts text标签),并同时支持图片、JS文件国际化
- 前端js实现弹出对话框实现进度条-10
- [置顶] spring + jstl 实现java国际化的配置步骤
- JS实现仿新浪微博大厅和腾讯微博首页滚动效果_前端开发
- 使用Eclipse,实现应用程序国际化或多样的配置
- js通过googleAIP翻译PHP系统的语言配置的实现代码
- 利用jQuery.i18n实现web前端的国际化
- spring + jstl 实现java国际化的配置步骤
- 【web前端】js页面文字选中后分享到新浪微博实现