一、软件环境
- 操作系统: Windows10 64位
- PRD版本:prd-ce-6.1.0.1-196
二、PRD国际化原理简介
查看pentaho bi的源码,你会发现文件夹中存在大量的.properties文件;有心的童鞋上网查查资料就会发现该软件通过 jQuery.i18n.properties实现国际化 ,CDE、SaiKu、PRD等都是通过这种方法实现国际化,具体的内容小编不在这里做详细的介绍,关于这方面的资料请自行Google或百度吧!
三、提出问题?
上面的报表是用PRD做得,我们习惯性的将每张报表的表头写死在面板上;我们能否将这个表头的信息写在一个文件里(譬如i18n的资源文件)喃?幸运的是,Pentaho公司给我们提供了一整套的解决方案,废话不多说,小编这就操作一遍!
四、PRD国际化的解决方案
- 准备资源文件
文件里的具体内容见下:
#messages.properties 默认的语言
my.message.title=hello11111111
#messages_zh.properties 中文简体
my.message.title=zh
#messages_en.properties 标准英文
my.message.title=hello-en
并将这些资源文件放置在报表的 [PRD Install]/resources 目录下:
- 选中一个 resource -label,将其拖拽到面板上
- 设置resource -label的 Attributes 面板
- 初步预览效果
- 在PRD中模拟根据浏览器语言进行切换
您的报表将根据您的设置进行本地化切换,你可以同报表内置的environment.designtime.locale变量来进行切换, File ----> Configuration ---> environment.designtime.locale
如果将此报表发布到pentaho bi上,再将原先的资源文件上传到 pentaho/WEB-INF/classes 目录下,该表就可以根据浏览器的语言自动进行相关字段的切换,是不是很神奇呀!
五、资源文件乱码解决方案
如果按照小编的上面步骤去操作,很不幸你会出现资源文件乱码的问题。由于上面内容是小编昨晚连夜写的,而且只是个简单的例子,今天早上小编到公司按照上面的套路去做就出现乱码问题;不过在小编的努力下,最终还是得以解决!
- 利用JDK自带的转码工具操作
jdk官方自带了了一个转发工具,很方面就能将我们的汉字转成计算机能识别的编码:
用cmd进入到资源文件所在的目录,也就是报表的目录:[PRD Install]/resources
D:\prd-ce-6.1.0.1-196\report-designer\resources>native2ascii -encoding utf8 MessagesReport_zh.properties MessagesReport_zh-CN.properties
进入资源文件目录,机会发现增加了MessagesReport_zh-CN.properties这个资源文件
- 字符编码格式设置的注意项
如果按照先前操作,可能还会出现乱码。原因在于还需要设置文本的格式。
打开notepad++软件 ,设置选项为:格式------->以UTF-8无BOM格式编码
- 成果展示,本次小编在浏览端进行调试;