birt 汉化与修改

来源:互联网 发布:java构造函数 编辑:程序博客网 时间:2024/06/03 17:39

一.为什么选用该开源平台

       BIRT (Business Intelligence and Reporting Tools), 是为 Web 应用程序开发的基于 Eclipse 的开源报表系统,特别之处在于它是以 Java 和 J2EE 为基础。BIRT 有两个主要组件:基于 Eclipse 的报表设计器,以及部署到应用服务器上的运行时组件。BIRT 也提供了图标引擎让你能为应用增加图标。

 BIRT 当前发行的版本是 2.5.1。可通过

http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo下载使用。

  有了 BIRT,你可以为应用程序构建丰富的报表。

  列表 - 列表是最简单的报表。当列表变长时,你可以把相关数据增加到同一分组(基于客户的订单分组,基于供应商的产品分组)。如果数据是数字类型的,你可以轻松的添加到“总数”、“平均”、或其他汇总中。

  图表 - 当需要图表表现时,数字型数据比较好理解。BIRT 也提供饼状、线状以及柱状图标等。

  交叉表 - 交叉表(也叫做十字表格或矩阵)用两种维度展示数据:sales per quarter or hits per web page。(交叉表在1.0.1 中没有提供,但计划在将来提供。)

  信函和文档 - 通知、信件、以及其他文本文档都很容易通过 BIRT 方便建立。文档包括正文、格式、列表、图表等。

混合报表 - 很多报表需要联合以上所有的报表构成单一文档。例如,一份客户声明会列出客户所需要的信息,为当前促进(promotions)提供文本,以及提供并行的出帐和入帐列表。一份财政报表将包括声明、图表、表格,所有这些都将进行全方位的格式化,来匹配共有的配色方案。

二.如何汉化

       I.eclipse 的汉化

       (webapps/birt/WEB-INF/lib/commons-logging.jar   是BIRT.WAR包解压没有但是是必须的)

       1.下载eclipse-birt 集成的开发工具eclipse-reporting-galileo-win32.zip

       解压至本地

       2. http://download.eclipse.org/birt/downloads/lang.php?build=R-R1-2_2_2-200802271210

下载eclipse-birt的汉化包NLpack1-birt-report-designer-all-in-one-2_1_1.zip

  将汉化包里面的文件按照相应的解压至eclipse-reporting-galileo-win32.zip解压出来的文件中

II.在tomcat里面的汉化

1.找到对应的birt/WEB-INF/lib/viewservlets.jar

找到viewservlets.jar/org/eclipse/birt/report/resource/Messages.properties

内容替换为:

################################################################################ Copyright (c) 2004 Actuate Corporation.# All rights reserved. This program and the accompanying materials# are made available under the terms of the Eclipse Public License v1.0# which accompanies this distribution, and is available at# http://www.eclipse.org/legal/epl-v10.html## Contributors:#  Actuate Corporation  - initial API and implementation###############################################################################birt.viewer.title=BIRT Report Viewerbirt.viewer.title.navigation=\u5bfc\u822a\u3000birt.viewer.title.error=\u9519\u8befbirt.viewer.title.complete=\u5b8c\u6210birt.viewer.title.message=\u6d88\u606fbirt.viewer.parameter=\u53c2\u6570birt.viewer.runreport=\u8fd0\u884c\u62a5\u8868birt.viewer.required=\u9700\u8981\u5e26\u6709 <FONT COLOR="red">*</FONT> \u6807\u8bb0\u7684\u53c2\u6570\u3002birt.viewer.viewinpdf=\u4ee5 PDF \u67e5\u770bbirt.viewer.maximize=\u9690\u85cf\u62a5\u8868\u53c2\u6570birt.viewer.restore=\u663e\u793a\u62a5\u8868\u53c2\u6570birt.viewer.error=\u9519\u8bef\u6d88\u606fbirt.viewer.error.noparameter=\u6b64\u62a5\u8868\u65e0\u53c2\u6570\u3002birt.viewer.error.parameter.invalid=\u53c2\u6570\u201c{0}\u201d\u65e0\u6548\u3002birt.viewer.error.noprinter=\u65e0\u6cd5\u627e\u5230\u652f\u6301 PostScript \u683c\u5f0f\u7684\u4efb\u4f55\u53ef\u7528\u6253\u5370\u673a\u3002birt.viewer.error.unknownerror=\u672a\u77e5\u9519\u8bef\u3002birt.viewer.error.generatereportfirst=\u5e94\u9996\u5148\u751f\u6210\u62a5\u8868\u6587\u6863\u3002birt.viewer.error.parameterrequired=\u53c2\u6570\u201c{0}\u201d\u662f\u5fc5\u9700\u7684\u3002birt.viewer.error.parameternotallowblank=\u53c2\u6570\u201c{0}\u201d\u4e0d\u80fd\u4e3a\u7a7a\u767d\u3002birt.viewer.error.parameternotselected=\u8bf7\u4e3a\u53c2\u6570\u201c{0}\u201d\u9009\u62e9\u503c\u3002birt.viewer.error.noviewingsession=\u67e5\u770b\u4f1a\u8bdd\u4e0d\u53ef\u7528\u6216\u5df2\u8fc7\u671f\u3002birt.viewer.error.viewingsessionexpired=\u67e5\u770b\u4f1a\u8bdd\u5df2\u8fc7\u671f\u3002birt.viewer.error.viewingsessionlocked=\u67e5\u770b\u4f1a\u8bdd\u88ab\u9501\u5b9a\uff0c\u4e0d\u80fd\u7ec8\u6b62\u3002birt.viewer.error.viewingsessionmaxreached=\u5df2\u8fbe\u5230\u67e5\u770b\u4f1a\u8bdd\u6700\u5927\u6570\u91cf\u3002birt.viewer.message.taskcanceled=\u5f53\u524d\u64cd\u4f5c\u5df2\u53d6\u6d88\u3002################################################################################ Toolbar###############################################################################birt.viewer.toolbar.print=\u6253\u5370\u62a5\u8868birt.viewer.toolbar.printserver=\u5728\u670d\u52a1\u5668\u4e0a\u6253\u5370\u62a5\u8868birt.viewer.toolbar.toc=\u663e\u793a\u76ee\u5f55birt.viewer.toolbar.parameter=\u8fd0\u884c\u62a5\u8868birt.viewer.toolbar.export=\u5bfc\u51fa\u6570\u636ebirt.viewer.toolbar.font=\u66f4\u6539\u5b57\u4f53birt.viewer.toolbar.enableiv=\u8c03\u7528\u4ea4\u4e92\u5f0f\u67e5\u770b\u5668birt.viewer.toolbar.exportreport=\u5bfc\u51fa\u62a5\u8868################################################################################ navbar###############################################################################birt.viewer.navbar.first=\u7b2c\u4e00\u9875birt.viewer.navbar.previous=\u4e0a\u4e00\u9875birt.viewer.navbar.next=\u4e0b\u4e00\u9875birt.viewer.navbar.last=\u6700\u540e\u4e00\u9875birt.viewer.navbar.goto=\u8f6c\u5230birt.viewer.navbar.lable.goto=\u8f6c\u5230\u9875:birt.viewer.navbar.prompt.one=\u663e\u793a\u9875birt.viewer.navbar.prompt.two=/birt.viewer.navbar.error.blankpagenum=\u8bf7\u8f93\u5165\u6709\u6548\u9875\u7801\u3002################################################################################ progress bar###############################################################################birt.viewer.progressbar.prompt=\u6b63\u5728\u5904\u7406\uff0c\u8bf7\u7a0d\u5019 ...birt.viewer.progressbar.confirmcanceltask=\u60a8\u8981\u53d6\u6d88\u5f53\u524d\u64cd\u4f5c\u5417?################################################################################ Dialog ###############################################################################birt.viewer.dialog.ok=\u786e\u5b9abirt.viewer.dialog.cancel=\u53d6\u6d88birt.viewer.dialog.run=\u8fd0\u884c\u62a5\u8868birt.viewer.dialog.close=\u5173\u95edbirt.viewer.dialog.page.all=\u6240\u6709\u9875birt.viewer.dialog.page.current=\u5f53\u524d\u9875birt.viewer.dialog.page.range=\u9875:birt.viewer.dialog.page.range.description=(\u8f93\u5165\u9875\u7801\u548c/\u6216\u9875\u8303\u56f4\u3002\u4f8b\u5982: 1-6 \u6216 1,3,6)birt.viewer.dialog.page.error.invalidpagerange=\u65e0\u6548\u9875\u8303\u56f4################################################################################ Dialog title###############################################################################birt.viewer.dialog.exception.title=\u4f8b\u5916birt.viewer.dialog.exportReport.title=\u5bfc\u51fa\u62a5\u8868birt.viewer.dialog.parameter.title=\u53c2\u6570birt.viewer.dialog.simpleExportData.title=\u5bfc\u51fa\u6570\u636ebirt.viewer.dialog.printReport.title=\u6253\u5370\u62a5\u8868birt.viewer.dialog.printReportServer.title=\u5728\u670d\u52a1\u5668\u4e0a\u6253\u5370\u62a5\u8868################################################################################ Export report dialog ###############################################################################birt.viewer.dialog.export.format=\u5bfc\u51fa\u683c\u5f0f:birt.viewer.dialog.export.format.pdf=PDFbirt.viewer.dialog.export.format.excel=EXCELbirt.viewer.dialog.export.all=\u5bfc\u51fa\u8be6\u7ec6\u62a5\u8868birt.viewer.dialog.export.all.detail=\u5c06\u5bfc\u51fa\u6240\u6709\u53ef\u7528\u62a5\u8868\u6570\u636e\uff0c\u4e0d\u8003\u8651<br>\u5f53\u524d\u89c6\u56fe\u7684\u4fee\u6539\u3002birt.viewer.dialog.export.modified=\u5bfc\u51fa\u5177\u6709\u5f53\u524d\u4fee\u6539\u7684\u62a5\u8868birt.viewer.dialog.export.modified.detail=\u5c06\u53ea\u5bfc\u51fa\u53ef\u89c1\u6570\u636e\u3002\u5c06\u4e0d\u5bfc\u51fa<BR>\u5df2\u88ab\u7b5b\u9009\u6389\u6216\u9690\u85cf\u7684\u6570\u636e\u3002birt.viewer.dialog.export.pdf.fittoauto=\u81ea\u52a8birt.viewer.dialog.export.pdf.fittoactual=\u5b9e\u9645\u5927\u5c0fbirt.viewer.dialog.export.pdf.fittowidth=\u9002\u5408\u9875\u9762\u5bbd\u5ea6birt.viewer.dialog.export.pdf.fittowhole=\u9002\u5408\u6574\u9875################################################################################ Print Report dialog ###############################################################################birt.viewer.dialog.print.format=\u6253\u5370\u683c\u5f0fbirt.viewer.dialog.print.format.html=HTMLbirt.viewer.dialog.print.format.pdf=PDFbirt.viewer.dialog.print.printpreviewalreadyopen=\u6253\u5370\u9884\u89c8\u7a97\u53e3\u5df2\u6253\u5f00\u3002################################################################################ Print report on the server dialog ###############################################################################birt.viewer.dialog.printserver.onserver=\u5728\u670d\u52a1\u5668\u4e0a\u6253\u5370\u8f93\u51fa\u6587\u6863\u6587\u4ef6birt.viewer.dialog.printserver.printer=\u6253\u5370\u673a:birt.viewer.dialog.printserver.status=\u72b6\u6001:birt.viewer.dialog.printserver.model=\u578b\u53f7:birt.viewer.dialog.printserver.description=\u63cf\u8ff0:birt.viewer.dialog.printserver.status.acceptingjobs=\u6b63\u5728\u63a5\u53d7\u4f5c\u4e1abirt.viewer.dialog.printserver.status.notacceptingjobs=Not accepting Jobsbirt.viewer.dialog.printserver.settings=\u8bf7\u6307\u5b9a\u6253\u5370\u8bbe\u7f6ebirt.viewer.dialog.printserver.settings.copies=\u4efd\u6570:birt.viewer.dialog.printserver.settings.collate=\u9010\u4efd\u6253\u5370:birt.viewer.dialog.printserver.settings.mode=\u6a21\u5f0f:birt.viewer.dialog.printserver.settings.mode.bw=\u9ed1\u767dbirt.viewer.dialog.printserver.settings.mode.color=\u5f69\u8272birt.viewer.dialog.printserver.settings.duplex=\u53cc\u5de5:birt.viewer.dialog.printserver.settings.duplex.simplex=\u5355\u5de5birt.viewer.dialog.printserver.settings.duplex.horizontal=\u6c34\u5e73birt.viewer.dialog.printserver.settings.duplex.vertical=\u5782\u76f4birt.viewer.dialog.printserver.settings.pagesize=\u9875\u9762\u5927\u5c0f:birt.viewer.dialog.printserver.settings.print=\u6253\u5370:birt.viewer.dialog.printserver.complete=\u5df2\u5c06\u6587\u6863\u6587\u4ef6\u53d1\u9001\u5230\u670d\u52a1\u5668\u4e0a\u9009\u62e9\u7684\u6253\u5370\u673a\u3002birt.viewer.dialog.printserver.error.noprinter=\u65e0\u6253\u5370\u673a################################################################################ Confirmation dialog ###############################################################################birt.viewer.dialog.confirmation.title=\u786e\u8ba4################################################################################ Export data dialog ###############################################################################birt.viewer.dialog.exportdata.tab.field=\u6570\u636e\u5b57\u6bb5birt.viewer.dialog.exportdata.tab.filter=\u7b5b\u9009\u6807\u51c6birt.viewer.dialog.exportdata.resultsets=\u53ef\u7528\u7ed3\u679c\u96c6birt.viewer.dialog.exportdata.availablecolumn=\u53ef\u7528\u5217birt.viewer.dialog.exportdata.selectedcolumn=\u9009\u62e9\u7684\u5217birt.viewer.dialog.exportdata.extension=\u5bfc\u51fa\u683c\u5f0f:birt.viewer.dialog.exportdata.encoding=\u8f93\u51fa\u7f16\u7801:birt.viewer.dialog.exportdata.encoding.other=\u5176\u5b83birt.viewer.dialog.exportdata.encoding.comment=(\u5982\u679c\u4e3a\u7a7a\u767d\uff0c\u4f7f\u7528\u672c\u5730\u7f16\u7801)birt.viewer.dialog.exportdata.addall=\u5168\u90e8\u6dfb\u52a0birt.viewer.dialog.exportdata.add=\u6dfb\u52a0birt.viewer.dialog.exportdata.removeall=\u5168\u90e8\u5220\u9664birt.viewer.dialog.exportdata.remove=\u5220\u9664birt.viewer.dialog.exportdata.up=\u4e0a\u79fbbirt.viewer.dialog.exportdata.down=\u4e0b\u79fbbirt.viewer.dialog.exportdata.separator=\u5206\u9694\u7b26:birt.viewer.dialog.exportdata.datatype=\u5bfc\u51fa\u5217\u7684\u6570\u636e\u7c7b\u578bbirt.viewer.dialog.exportdata.localeneutral=\u4e0d\u5206\u533a\u57df\u8bbe\u7f6e\u5bfc\u51fa\u5217birt.viewer.sep.0=\u9017\u53f7 ( , )birt.viewer.sep.1=\u5206\u53f7 ( ; )birt.viewer.sep.2=\u5192\u53f7 ( : )birt.viewer.sep.3=\u5782\u76f4\u7ebf ( | )birt.viewer.sep.4=\u5236\u8868\u7b26 ( \\t )################################################################################ General exception###############################################################################birt.viewer.generalException.DOCUMENT_FILE_ERROR=\u6587\u6863\u6587\u4ef6: {0} \u4e0d\u5b58\u5728\u6216\u5305\u542b\u9519\u8bef\u3002birt.viewer.generalException.DOCUMENT_ACCESS_ERROR=\u65e0\u6cd5\u8bbf\u95ee\u6587\u6863\u6587\u4ef6: {0}\u3002birt.viewer.generalException.REPORT_FILE_ERROR=\u62a5\u8868\u6587\u4ef6: {0} \u4e0d\u5b58\u5728\u6216\u5305\u542b\u9519\u8bef\u3002birt.viewer.generalException.REPORT_ACCESS_ERROR=\u65e0\u6cd5\u8bbf\u95ee\u62a5\u8868\u6587\u4ef6: {0}\u3002birt.viewer.generalException.DOCUMENT_FILE_PROCESSING=\u6b63\u5728\u5904\u7406\u6587\u6863\u6587\u4ef6\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002birt.viewer.generalException.NO_REPORT_DESIGN=\u6ca1\u6709\u53ef\u7528\u7684\u62a5\u8868\u8bbe\u8ba1\u5bf9\u8c61\u3002birt.viewer.generalException.MULTIPLE_EXCEPTIONS=\u51fa\u73b0\u591a\u4e2a\u5f02\u5e38\u3002################################################################################ Report service exception###############################################################################birt.viewer.reportServiceException.EXTRACT_DATA_NO_DOCUMENT=\u6ca1\u6709\u53ef\u4f9b\u63d0\u53d6\u6570\u636e\u7684\u6587\u6863\u6587\u4ef6\u3002birt.viewer.reportServiceException.EXTRACT_DATA_NO_RESULT_SET=\u6ca1\u6709\u53ef\u4f9b\u63d0\u53d6\u6570\u636e\u7684\u7ed3\u679c\u96c6\u3002birt.viewer.reportServiceException.INVALID_TOC=\u65e0\u6548 TOC \u67e5\u8be2\u3002birt.viewer.reportServiceException.INVALID_PARAMETER=\u65e0\u6548\u53c2\u6570: {0}\uff0c\u56e0\u6b64\u5b83\u672a\u5b9a\u4e49\u3002birt.viewer.reportServiceException.STARTUP_REPORTENGINE_ERROR=\u5c1d\u8bd5\u542f\u52a8\u62a5\u8868\u5f15\u64ce\u65f6\u51fa\u73b0\u81f4\u547d\u9519\u8bef\u3002birt.viewer.reportServiceException.INVALID_EXTRACTFORMAT=\u6570\u636e\u63d0\u53d6\u683c\u5f0f\u65e0\u6548\u6216\u672a\u6307\u5b9a\u3002birt.viewer.reportServiceException.INVALID_EXTRACTEXTENSION=\u65e0\u6548\u7684\u6570\u636e\u63d0\u53d6\u6269\u5c55 ID\u3002################################################################################ Birt action handler exception###############################################################################birt.viewer.actionException.NO_REPORT_DOCUMENT=\u62a5\u8868\u6587\u6863\u5b9e\u4f8b\u4e3a\u7a7a\u3002birt.viewer.actionException.INVALID_BOOKMARK=\u4e66\u7b7e: {0} \u65e0\u6548\u3002\u8bf7\u68c0\u67e5\u5e76\u91cd\u7f6e\u94fe\u63a5\u3002birt.viewer.actionException.INVALID_PAGE_NUMBER=\u65e0\u6548\u9875\u7801\u7b2c {0} \u9875\uff0c\u5171 {1} \u9875\u3002 birt.viewer.actionException.INVALID_ID_FORMAT=\u65e0\u6548 id \u683c\u5f0f\u3002Id={0}\u3002birt.viewer.actionException.DOCUMENT_FILE_NO_EXIST=\u4f1a\u8bdd\u8d85\u65f6\u6216\u6ca1\u6709\u53ef\u7528\u7684\u6587\u6863\u6587\u4ef6\u3002################################################################################ Birt soap bingding impl exception###############################################################################birt.viewer.soapBindingException.NO_HANDLER_FOR_TARGET=\u65e0\u6cd5\u4e3a\u6b64\u76ee\u6807\u627e\u5230\u5904\u7406\u7a0b\u5e8f\u3002\u76ee\u6807: {0}\u3002################################################################################ Component processor exception###############################################################################birt.viewer.componentProcessorException.MISSING_OPERATOR=\u9519\u8bef: \u7f3a\u5c11\u8fd0\u7b97\u7b26!!!################################################################################ Exception dialog###############################################################################birt.viewer.exceptionDialog.stackTrace=\u5806\u6808\u8ddf\u8e2a:birt.viewer.exceptionDialog.showStackTrace=\u663e\u793a\u4f8b\u5916\u5806\u6808\u8ddf\u8e2abirt.viewer.exceptionDialog.hideStackTrace=\u9690\u85cf\u4f8b\u5916\u5806\u6808\u8ddf\u8e2a################################################################################ Birt Viewer JSP Taglib###############################################################################birt.viewer.taglib.NO_ATTR_ID=\u5fc5\u987b\u6307\u5b9a\u5c5e\u6027 ID\u3002birt.viewer.taglib.INVALID_ATTR_ID=\u5c5e\u6027 ID \u5305\u542b\u65e0\u6548\u5b57\u7b26\u3002birt.viewer.taglib.ATTR_ID_DUPLICATE=\u5c5e\u6027 ID \u5fc5\u987b\u552f\u4e00\u3002birt.viewer.taglib.PARAM_NAME_DUPLICATE=\u65e0\u6cd5\u590d\u5236\u53c2\u6570\u540d\u79f0\u3002birt.viewer.taglib.NO_REPORT_SOURCE=\u5e94\u6307\u5b9a\u62a5\u8868\u8bbe\u8ba1\u6216\u6587\u6863\u6587\u4ef6\u3002birt.viewer.taglib.NO_REPORT_DOCUMENT=reportlet \u9700\u8981\u62a5\u8868\u6587\u6863\u6587\u4ef6\u3002birt.viewer.taglib.NO_REQUESTER_NAME=\u53c2\u6570\u9875\u6807\u8bb0\u7684 "name" \u5c5e\u6027\u662f\u5fc5\u9700\u7684\u3002################################################################################ Birt Viewer Message###############################################################################birt.viewer.message.document.successful=\u62a5\u8868\u6587\u6863\u6587\u4ef6\u5df2\u6210\u529f\u751f\u6210\u3002################################################################################ Birt Viewer General Exceptions###############################################################################birt.viewer.exception.maybe_disabled_cookies=\u8fd9\u53ef\u80fd\u662f\u7531\u5ba2\u6237\u7aef\u4e0a\u7981\u7528\u7684 Cookie \u5f15\u8d77\u7684\u3002


重启tomcat

2.用jdk 自带的转编码工具native2ascii.exe将其转为utf-8格式

Native2ascii.exe -encoding GBK  Messages.properties(修改前) Messages.properties(修改后)

 

 

三.如何修改添加了日期控件

1.       FramesetFragment.jsp

<script src="birt/ajax/core/BirtSoapResponse.js" type="text/javascript"></script>

<script src="birt/customizeFormat/date/WdatePicker.js" type="text/javascript" defer="defer" ></script>

defer="defer"  代表当javascript不改变文档的时候绕过执行

注:最终的解决方式是将<script src="birt/customizeFormat/date/WdatePicker.js" type="text/javascript" ></script> 置整个页面的底部

2.       TextBoxParameterFragment.jsp

<INPUT CLASS="BirtViewer_parameter_dialog_Input"

               TYPE="<%= parameterBean.isValueConcealed( )? "PASSWORD" : "TEXT" %>"

               NAME="<%= encodedParameterName %>"

               ID="<%= encodedParameterName %>"

               TITLE="<%= parameterBean.getToolTip( ) %>"

               VALUE="<%= ParameterAccessor.htmlEncode( ( parameterBean.getDisplayText( ) == null )? "" : parameterBean.getDisplayText( ) ) %>"

               <%= ( !parameterBean.isRequired( ) && parameterBean.getValue( ) == null )? "DISABLED='true'" : "" %>

               <%=((encodedParameterName.toUpperCase()).indexOf("DATE")>=0)? "readonly" : "" %>

            >

      <%if ((encodedParameterName.toUpperCase()).indexOf("DATE") >=0) {%>

           <img id="teqiimg" src="birt/images/btn_off_cal.gif" onclick="WdatePicker({el:$dp.$('<%= encodedParameterName %>'),dateFmt:'yyyy-MM-dd'})"/>

               <%} %>

3.       将customizeFormat文件夹考到birt/webcontent/birt/里,这个是时间控件

4.       报表参数的定义:

a)         参数的名称必须是*+“Date”,不如:startDate

显示类型是“文本框”