ireport 5.6初级教程之国际化
1、国际化意味着报表可以根据不同的地区显示不同的语言文字。报表所要显示的不同的语言文字是存储在资源文件里。在本章中我们将介绍怎样使用内置函数msg()来处理国际化问题。
2、资源文件当我们想让一个报表实现国际化功能时,我们需要定位所资源文件里的名称字符串,就是label或者叫key,key与value是一对字符串,中间用“=”连接。如:Title_username=用户名Title_phone=电话号码保存这些key与value对的文件以“.properties”为后缀。在运行期间,报表引擎将会在classpath里查找以“.properties”结尾的资源文件。如果文件找到了,那么就从文件里读取相应的资源信息。资源文件的指定是通过报表属性窗口的“i18n”来实现的。
3、一般来说,一个资源文件名的组成包括三个部分:一个是资源文件名,一个是国家地区代码(与文件名之间以“_”连接),最后就是文件的扩展名“.properties”。对于默认的资源文件名来说是没有国家地区代码的。完整的资源文件的格式如下:<resource bundle base name>[_language code[_country code[_other code]]].properties比如:I18nReport_fr_CA_UNIX.propertiesI18nReport_zh_CN.propertiesI18nReport_en.propertiesI18nReport.properties前面格式里提到的“other code”(比如上面的“_UNIX”)一般不去指定它。
4、在iReport中,它有能力自己去管理资源文件,资源文件我们需要把它和报表文件(jrxml文件)放在同一目录,并且资源文件的名称也要与报表文件的名称保持一致。我们可以从主菜单的“EditàInternationalication”的“Localization files”打开资源文件管理窗口。如下图:
5、我们可以通过“Create New Locale”按钮创建一个新的资源文件。
6、创建时我们需要指定文件名及国家代码,创建完成之后我可以通过“Modify file”按钮来对资源文件的内容做相应的修改。
7、获取本地化字符串得到资源文件里的key所对应的vlaue我们可以通过下面的方法实现:一种是使用JasperReports内部的表达式str(“key name”),或者是使用表达式$R{key name}:$R{test.name}在JasperReport中的国际化我们可以使用函数msg,通过使用msg函数我们可以对取到的国际化的值做相应的格式化处理。比如我们的资源文件中一个key/value对为:title=my name is {0}此时我们需要为{0}指定具体的值,通过使用msg函数我们可以对这里的{0}进行填值处理:msg($R{title},"gaojie")这样在报表生成后最终的值就是:my name is gaojie我们有三种方式来使用msg函数:Public String msg(String pattern,Object arg0)Public String msg(String pattern,Object arg0, Object arg1)Public String msg(String pattern,Object arg0, Object arg1, Object arg2)在iReport中我们可以指定所在地区,这样我们就可以控制显示的语言。点击主菜单“Buildàset report local or BuildàSet time zone”,在弹出的窗口中我们可以对地区做相应的修改。
8、同为比较常用的java报表生成工具,FineReport对报表国际化的解决方案和实现方法与ireport有所不同,具体实现思路和步骤如下,供ireport使用者借鉴:
9、1.问题描述一个企业的生产经营活动不局限于一个国家,而是面向世界经济舞台,做的项目或产品也希望实现在中国的时候显示中文,在美国就显示为英文,这样的效果要如何实现呢?下面详细介绍FR报表如何实现国际化。
10、2.实现原理国际化报表制作首先FR设计器可以手动切换语言,其次判断浏览器语言,若英语则显示英语;这样不同地区的人查看同一报表就可以根据不同地区显示不同的语言了,若获取浏览器语言失败,则使用设计器设置的语言。注:必须要保持设计器,系统语言和浏览器语言一致,比如说,设计器语言环境为中文,系统为中文,但是浏览器语言为英文,报表在web预览的时候就会出问题,一部分会显示为英文,故需要将浏览器语言也设置为中文。
11、3.国际化设置3.1切换设计器语言针对英文操作系统,安装我们报表设计器,可能会遇到,字体全部显示为方框的效果,这时就需要切换设计器语言,把设计器安装默认中文语言改为英文,操作如下:在没有打开模板的情况下,点击工具栏左边第一个按钮文件,在下拉选项里面有如下图一系列选项,从下往上选择第三个选项。
12、在弹出对话框中设置语言选择这项,如下图位置,把设计器语言:简体中文,切换成英语:
13、必须重新启动设计器后才能生效,如下图,重新打开设计器,就处于纯英文状态下的设计器了。在英文操作系统中,安装了中文版设计器,切换了设计器语言为英文,但是在开始目录中FR报表的一些信息仍然显示的是中文,所以可能会显示乱码,如果使用不方便的话可安装英文版的设计器。安装步骤可参考文档:安装英文版设计器。
14、3.2切换浏览器语言· 修改浏览器语言下面以ie浏览器为例,点击工具栏上面的工具>Internet 选项(0)在弹出对话框中选择语言,在弹出对话框中点击添加按钮,选择英语(美国)[en-US]点击确定,这时英语(美国)[en-US]就添加到ie浏览器里面了,需要把英语(美国)[en-US]放到最上面,点击上移,即浏览器默认语言就是英语(美国)[en-US]了。重新刷新报表就可以看到英文状态下面的报表了。使用其他浏览器则修改对应默认语言即可,不详细介绍。
15、· 报表工具栏的显示当浏览器的语言设置成英语(美国)[en-us]时,访问报表,页面中工具栏就是英文的界面,如下图:
16、· 弹出对话框当点击报表工具栏上面的打印、导出、发送邮件等功能,弹出对话框也是英文状态下的如以flash打印为例,弹出对话框如下图:
17、注:用英语使用报表,进行打印、导出、发送邮件等功能时,需要把使用到的软件也选择为英文版的,如安装英文版打印机,英文版pdf打印插件等。其他语言设置类似,把英语改为其他语言即可。