【JEECG技术博文】JEECG国际化介绍

1、为什么要做国际化

没有国际化的框架是一个不完整的框架,特别在全球信息化的今天,国际化不再是鸡肋,而是在选择开发平台时必须首要的考试因素,特别在有些公司平台是否国际化具有一票否决要素,所以我们要搞国际化,而不是仅仅是简单的高大尚。

2、国际化的实现原理

国际化听起来简单,但要框架中要做到与框架的无缝衔接,松耦合还是有一定难度的。有些系统有时不需要做国际化,在做国际化如果快速发现哪些没有被国际化的字段等,这些问题都开发者在开发过程中实际需要解决的问题,而这一切我们都已经帮你想到了。

用户在登录页面选择语言后点击登录后在LoginControler.java中checkuser方法中可以看到下面代码,当前语言会被放到session中。

if (req.getParameter("langCode")!=null) {
	req.getSession().setAttribute("lang", req.getParameter("langCode"));
}

MutiLangServiceImpl.java中有三个方法,分别介绍下作用:

1)initAllMutiLang()——TOMCAT启动时会被自动加载,把国际化的表内容加载到内存中,方便以后快速调用,即加载表t_s_muti_lang中所有记录并放在Cache中。

2)getLang(String lang_key)——传入需要国际化的Lang Key自动根据用户当前语言来得到国际化后的值,如在某处调用如: String value = getLang(“common.status”),如果当前语言为中文则value为状态,英文为Status

3)refleshMutiLangCach()——刷新Cache,在对语言进行维护的时候,比如添加一个语言可以自动把新加的自动加入到Cache里,保证实时生效。

3、国际化应用的各种场合举例

我们以国际化维护页面国际化为例

  List及Tag国际化

langKey 可以接受输入多个参数,举例如:

lang. congratulation.edit.success 对应中文是:恭喜你,{0}修改{1}。

则在页面上我们可以传入的langArg的参数样式为:

langArg=” lang.function.name, common.success”

lang.function.name会替代{0}, common.success会替代{1}

  

  客户端label的国际化

 

  Java后台国际化

  

 后台树的国际化

如果你需要对树做国际化,只要在表里把树的名称换成lang_key的值并且在树返回的最后一步加代码:MutiLangUtil.setMutiTree(treeGrids, mutiLangService);就可以实现,具体可以参考菜单管理:



 Js国际化

由于Js文件中无法用国际化标签,所以只能在src\main\webapp\plug-in\mutiLang目录中添加us.js及zh-cn.js,这个文件已经在BaseTag中第一个默认引入了。

4、语言的维护

系统管理菜单中语言管理就可以对语言进行维护管理,注意不要添加已经存在的语言内容。若是有重复的内容,系统在添加的时候会自动提示。

5、lang_key的命名规范

1)系统已经有的国际化的就不用重复添加了,如: common.status,对应 状态,如果有状态直接使用即要,不要再添加相同名称不同lang_key的进去。

2)如果碰到国际化表中没有的,则需要自己添加。

lang_key在t_s_mutilang表中命名的格式一定是 xxx.xxx(或者有更多的点)

3)如果是不常用的,如某个模块中有个标签叫“学生”,则命名时可以叫:lang.student

4)如果是一些公共的,则命名时用common开头,如“操作”可能在系统各处都有可能用到,则命名可以叫:common.operation

5)不用要一个单词来命名作为lang_key,如student.

6)如果是一个句子lang_key就写下这个句子,单词间用点来分开,如:common.please.select.one.record.to.edit 对应Please select one record to edit

7)如果是一个句子lang_context首字母需要大写,其他小写,按正常英文句子的来拼写,如:

Please select one record to edit, 而不是 Please Select One Record To Edit.

8)如果不是句子,如表头上显示,则lang_context可以全部首字母大写,如: User Name, Role Name

9)前后命名要一致,比如部门有的人喜欢用简写如:depart,哪后面注意就全部用简写,不要一会出现depart,一会出现department很不协调。也不要一会出现desc,一会出现description.

10)单词不要出现拼写错误。

11) 翻译要准确,不要出现无关内容。比如有某个网页上的标题上中文是:学生添加,你可以用lang.student.add,有的人发现这是个标题就可能会写成     lang.title.student.add,title这是这个出现的位置,请不要加这样的位置信息。

12)所有List页面(特例除外)的添加,修改都是用以下风格,对应模块修改langArg的值

<t:dgToolBar title="common.add.param" langArg="common.language"

<t:dgToolBar title="common.edit.param" langArg="common.language"

翻译过来就是 模块名+录入(编辑),比如:语言录入,用户录入等,不要只放“录入”以保证所有页面的页格一致。

6、我只是在国内做项目,不想看到lang_key可以么?

当然可以,你还是可以按原来一样写代码,比如:

<t:datagrid name="departList" title="common.department.list" 改成

<t:datagrid name="departList" title="部门列表"

再把common.notfind.langkey 对应的 lang_context 会值由 ?改成空就可以了。

7、为什么我用了国际化后前面多了个问号?

那是在提醒你该lang_key没有做国际化,你只要在语言维护中添加即可,问号的目的就是个提醒,可以让你一眼就看出哪些没有做国际化。如果你讨厌看到问号同样把common.notfind.langkey 对应的 lang_context 会值由 ?改成空

时间: 2024-07-30 20:32:24

【JEECG技术博文】JEECG国际化介绍的相关文章

【JEECG技术博文】简单实例讲解JEECG ONLINE表单权限控制(jeecg3 6)

简单实例讲解JEECG ONLINE表单权限控制(jeecg3.6) 原       文:http://blog.itpub.net/30066956/viewspace-1872409/ 相关博文:http://blog.itpub.net/30066956/viewspace-1868754/ 作       者: 许国杰 一.业务背景 某公司要实现一个日志系统,用来了解员工的工作量饱和情况. 二.需求 1.角色分为:员工.经理两种. 2.员工每天在日志系统中填报工作总结,然后经理进行点评.

【JEECG技术博文】JEECG简单实例讲解自定义表单功能

JEECG简单实例讲解自定义表单功能 作者:任杰 http://blog.csdn.net/renjie0520/article/details/50286503 一.自定义表单功能简介 自定义表单是JEECG智能开发平台开发的一套可视化的表单设计功能,基于ueditor实现,bootstrap样式风格. 总体来讲,自定义表单功能概括起来如下: 1)表单预览,动态报表展示(列表数据展示) 2)表单数据填报,支持多数据表同时填报,一对多数据表填报,单表多条数据批量填报等 自定义表单支持用户自定义模

【JEECG技术博文】Local storage &amp;amp; easyui extensions

1. Local storage背景 cookie弊端:同域内http请求都会带cookie,添加带宽和流量:有个数和限制大小(约4K). 在HTML5中,本地存储是一个window的属性.包含localStorage和sessionStorage.从名字应该能够非常清楚的辨认二者的差别.前者是一直存在本地的,后者仅仅是伴随着session,窗体一旦关闭就没了. 二者用法全然同样. 2. Jquery.storage.js插件 项目主页,api请參考http://ek.alphaschildre

【JEECG技术博文】Local storage &amp; easyui extensions

1. Local storage背景 cookie弊端:同域内http请求都会带cookie,增加带宽和流量:有个数和大小限制(约4K). 在HTML5中,本地存储是一个window的属性,包括localStorage和sessionStorage,从名字应该可以很清楚的辨认二者的区别,前者是一直存在本地的,后者只是伴随着session,窗口一旦关闭就没了.二者用法完全相同. 2. Jquery.storage.js插件 项目主页,api请参考http://ek.alphaschildren.o

【JEECG技术博文】JEECG表单配置-树形表单

表单配置支持树型表单了,具体效果如下图: 配置说明 1.是否树:选择是. 2.树形表单父Id:表的自关联外键. 3.树形表单列表:显示树形图标的列,如上图中为[组织机构名称]. 4.默认值:最外层数据的父Id值,具体看表的设计.上图中在数据库表中的默认值为null.

【JEECG技术博文】JEECG图表配置说明

一.图表配置可以做什么? 图表配置可以通过在线配置,无需编写代码生成图形报表页面.使用highcharts.js实现,可以运行 在任何现代浏览器,包括移动终端以及IE6.目前支持曲线图.柱状图等基础报表. 二.配置说明 ? 编码:  作为此图表的唯一标识. ? y轴文字:对应y轴文字. ? x轴数据:x轴上单位数据.数据可以: 1.一个字段名. 2.一个数组对象.如:['xdata1', 'xdata2', 'xdata']. ? 是否显示明细数据:"是"显示明细数据."否&

技术博文 汇总

本篇文章收集并整理各位在博客园中发表的精彩技术博文,希望为各位教职人员.学生和爱好者提供便利. 如果博文作者提出异议或意见,本人虚心接受并诚恳道歉. MS-UAP http://www.cnblogs.com/ms-uap/ 标题 链接 简介 “四核”驱动的“三维”导航 -- 淘宝新UI(需求分析篇) http://www.cnblogs.com/ms-uap/p/5306123.html UI, UWP, 需求分析 IT周见智 http://www.cnblogs.com/xiaozhi_56

JEECG技术文档摘录

1.快速开始 Hello World 前后端分离框如何快速进入开发,请参照下面hello world实现demo 一.后台请求实现 @RestController @RequestMapping("/test/jeecgDemo") @Slf4j public class JeecgDemoController { /** * hello world * * @param id * @return */ @GetMapping(value = "/hello") p

JEECG开源说明 JEECG 完全开源,不收任何费用,可以任用于商业

JEECG开源说明:JEECG 完全开源,不收任何费用,可以任用于商业! 前言: 随着WEB UI 框架(EasyUi /Jquery UI /Ext  /Dwz)等的逐渐成熟,系统界面逐渐实现统一化,代码生成器也可以生成统一规范的界面!代码生成+手工MERGE半智能开发将是新的趋势,生成的代码可节省50%工作量,快速提高开发效率!!!  [J2EE  Code Generation] 是一款基于代码生成器的智能开发框架. JAVA编程有很多重复机械代码, 生成器可以帮助解决50%的重复工作,让