BIRT Frameset 汉化

题记:

    最近要快速搭建一套报表展现方案,因为之前对BIRT有过一些了解,所以就重拾BIRT作为报表展现工具。近些天的部署过程中,发现BIRT为我们做了很多工作,现成servlet--frameset几乎提供了所有报表展现需要的东西。可能是其默认是英文的缘故,一直被我给冷落了(深深地表示下歉意),发现之前的许多工作又多余了(又重复造轮子了)。其实只要稍微调教、汉化下就能快速地为我所用。谨以此文,期待与大家的交流分享。

 

正文:

    1:frameset 是什么?(提供了什么,有什么特点,为什么我要用它?)

    2:怎样为我所用(如何汉化,重新打包viewservlet.jar部署)

   (一)frameset 是什么?(WFW: What, Feature and Why?)

        相信接触过BIRT的人对frameset都有了解,第一次接触肯定会对其工具栏,分页显示及进度条效果印象深刻。可是其默认显示是英文的,对于中文的应用来说,似乎有种“可远观而不可亵玩”的味道。我之前的工作中,也一直对BIRT默认提供的东西敬而远之。之前的工作中,一直是采用自己写的页面去调用报表,仅仅是用BIRT的runtime包生成定制文件(html、excel)而已。最近刚用BIRT 3.7搭建了一套报表展现方案,回首过去的做法,感觉自己做了很多无用功(重复造轮子)。经历了5年多的发展,birt累计了不少优秀的东西。其提供的几个servlet(preview、run、frameset)一直很强大,阔别一些时日后,这种感觉更加深刻。今天就本人对frameset汉化的事情,做个总结,希望和大家一起分享,进步。       

        1.1 什么是frameset?

        Birt的runtime 3.7包中提供了多个servelet(preview、frameset、run等),下面主要对frameset说一下(至于其他的servlet详细解释,可以参考:BIRT servlet详细解释
        frameset: 

                 采用Ajax框架,可以显示工具条,导航条和TOC面板,实现复杂的操作,

                 如分页处理,导出数据,导出报表,打印等。

                 该模式下会自动生成report document文件(预览report design文件)到特定的目录

                 (用户可以用参数指定,也可以定义在web.xml里)。采用Ajax,速度较慢。

        1.2 frameset特点
        在此就不多说frameset的特点了,截个图你自己体会吧。
            1.2.1:提供报表展示用工具条(导出、打印、分页等)

         BIRT Frameset 汉化_第1张图片

                                    1.2.2:frameset展示页面开源,后期拓展、自定义修改容易
           也许有人会说:其默认的frameset功能不错,但是其界面样式、风格等与公司产品风格不协调,希望对其自定义改造。
          
           对于这个问题,开源又一次展现了其魅力。我们完全可以直接去修改webcontent中的内容,按照自己的想法,去修改CSS等。
           如下以工具栏按钮为例(ToolbarFragment.jsp),看里头的页面还是写得很清晰的。

          

                              JSP代码片段:

     <TD WIDTH="15px">
        <INPUT TYPE="image" NAME='toc' SRC="birt/images/Toc.gif"
          TITLE="<%= BirtResources.getHtmlMessage( "birt.viewer.toolbar.toc" )%>"
          ALT="<%= BirtResources.getHtmlMessage( "birt.viewer.toolbar.toc" )%>" CLASS="birtviewer_clickable">
     </TD>             

         1.3 为什么要使用frameset?
             在此我也不过多地废话了,根据你自己的情况看着办吧。我的理由很简单,既然别人帮我们做了,而且还不赖,干嘛不拿来用呢,呵呵。

    (二)frameset汉化
         相信你已经对frameset有了一定好感,可能已经开始动手去改造frameset了。 “请先等下,不要重复造轮子!”,BIRT在设计的时候已经考虑了国际化的问题,eclipse官网上得汉化包能很快速地帮助我们解决BIRT汉化的问题。下文将详细说明frameset的汉化。
         汉化的过程也很方便,大体来说:先到官网下载相应的汉化包,替换viewServlet.jar 包中得messages.properties文件;重新打包viewServlet.jar包即可。

         2.1 下载汉化包

         汉化的过程很简单,先到官网下载相应的汉化包,http://download.eclipse.org/birt/downloads/lang.php?build=R-R1-2_2_2-200802271210

                           我实际操作过程中发现3.7下对应的语言包下载完后没有messages_zh.properties文件,在2.5版本的链接中是有的,所以推荐到2.5中去下。
         2.2 替换viewservlets.jar 部署
             2.2.1 找到刚才安装的汉化插件包,进入plugins目录找到一个名为“org.eclipse.birt.report.viewer.nl_zh_*.jar(*代表版本号)的jar包,然后解压,在/org/eclipse/birt/report/resource目录下面会得到一个Messages_zh.properties文件,这个文件就是能够实现汉化的文件啦。

             2.2.2 找到birt运行库目录,即默认的birt-runtime-*目录,然后去/WebViewerExample/WEB-INF/lib下找到名为“viewservlets.jar”的jar包,使用压缩工具打开(不用解压),进入/org/eclipse/birt/report/resource目录,这里会发现一个Messages.properties文件,这个就是birt本身带的语言包配置文件啦。

             2.2.3 将在第一步里得到的“Messages_zh.properties”重命名为“Messages.properties”,然后使用压缩工具的“添加”按钮将此文件添加到“viewservlets.jar”文件中(需要点击“覆盖”),这一步的目的就是将英文的配置文件替换为中文的配置。

             2.2.4 将修改后的viewservlets.jar文件添加到工程,或者覆盖原来的viewservlets.jar文件,即可实现birt在客户端的汉化。

结语:

     在替换完viewservlet.jar 之后,直接替换原有lib包里的同名jar,就可以正常显示中文版的frameset了。

     在最后把自己替换后的viewservlet.jar 也放到CSDN上了,需要的自己去下吧。

参考资料:

     1:BIRT 报表汉化问题 --http://blog.csdn.net/yunfeng861/article/details/6101170  by yunfeng861 CSDN.

     2:BIRT Viewer参数详细配置 --http://blog.csdn.net/xiaohai0504/article/details/4584579  by xiaohai0504 CSDN.

     3:viewservlet.jar 汉化替换jar包 --http://download.csdn.net/detail/hob007/3988676  by hob007 CSDN.

你可能感兴趣的:(servlet,report,jar,工具,报表,ajax框架)