Jasper 报告的本地化自定义
目标
您想要提供 Jasper 报告的本地化版本。
背景
Windchill 报告中,数据源对象和报告对象均包含可本地化的文本。通过本地化这些对象中的文本,可使文本以您配置的区域设置进行显示。
范围/适用性/假设
本文档提供有关本地化 Jasper 报告的信息。对此作如下假设:
您有权在 <WindchillHome> 中的 <MyPackage> 关联源目录下创建文件。
您已在 <WindchillHome> 中的关联子目录 <MyTaskPackage> 下创建了 Info*Engine 任务 <MyTask>。
您已在 <WindchillHome> 的站点上下文中创建了 ReportTemplate <MyReportTemplate>
您已在站点上下文中创建了 Windchill 报告对象 <MyReport>
您已在 <WindchillHome>/codebase/JasperReports/<ReportFolder> 下创建了 Jasper 报告 <MyJasperReport>.jasper
您已在 <WindchillHome>/codebase/JasperReports/<ReportFolder> 下创建了相关的区域设置特性文件。
在进行 WBR 集成时,您还必须具有更新报告元模型的权限。本文档介绍了使用标准 Java 资源束外部化 WBR 系统中所使用的文本的步骤。要支持本地化文本,必须创建一种特定于语言的资源束,并将文本翻译为相应的语言。假定您需要多种语言的支持,并且能够将文本翻译为所支持的语言。本文档中引用的文本元素由报告的名称、参数和列构成。WBR 报告中显示的实际数据从数据源返回。此文档中不包含本地化此类数据。
预期结果
此解决方案的预期结果是以基于客户端区域设置的多种语言使用 WBR 报告。
解决方案
生成针对可翻译 Java 资源束的外部本地化文本,以支持特定的客户端区域设置。
必备知识
要实现此目标,您需要熟悉以下内容:
Info*Engine User's Guide (《Info*Engine 用户指南》)
JConsole 用户界面
报告管理用户界面
解决方案元素
元素
类型
说明
<MyTask>
Info*Engine 任务
用于检索和处理 Windchill 数据的 Info*Engine 任务。
<MyTaskResource>
资源束信息特性文件
用于本地化 Info*Engine 任务文本项的资源束信息文件。
<MyReportTemplate>WindchillReportTemplate
Windchill 对象
用于指定供检索 Windchill 数据之用的查询的 Windchill 对象。
<MyReportTemplateResource>
资源束信息特性文件
用于本地化 ReportTemplate 文本项的资源束信息文件。
<MyReport>WindchillReport
Windchill 对象
Windchill 用户界面中向用户显示的 Windchill 对象。
<MyReportResource>
资源束信息特性文件
用于本地化报告文本项的资源束信息文件。
过程 - 本地化 Info*Engine 任务数据源
1. 创建文件 <WindchillHome>\src\<MyPackage>\<MyTaskResource>.rbInfo。为任务方法名称、参数名称和列名称添加条目。创建特定于语言的 <MyTaskResource>.rbInfo 版本,并生成关联的 Java 源和编译的类文件。
2. 编辑任务 XML 文件 <WindchillHome>\tasks\<MyTaskPackage>\<MyTask>.xml 来指定资源束。应将以下行添加到任务注释中。
{resouceBundle: <MyPackage>.<MyTaskResource> }
过程 - 本地化 ReportTemplate 数据源
1. 创建文件 <WindchillHome>\src\<MyPackage>\<MyReportTemplateResource>.rbInfo。根据需要为任务方法名称、参数名称和列名称添加条目。创建特定于语言的 <MyReportTemplateResource>.rbInfo 版本,并生成关联的 Java 源和编译的类文件。
2. 更新 <MyReportTemplate> 以指定资源束。导航至 Windchill“站点” > “实用程序”
3. 选择 <MyReportTemplate>,然后单击“更新”启动“查询构建器”
4. 选择“报告” > “特性”,然后在“资源束”字段中输入 <MyPackage>.<MyReportTemplateResource>
5. 单击“确定”保存更改。
过程 - 本地化 Windchill 报告对象的名称
1. <WindchillHome>/src/<MyPackage>/<MyReport>.rbInfo 路径下创建文件。
2. 为报告对象的名称添加一个条目。
3. 创建特定于语言的 <MyReportResource>.rbInfo 版本,并生成关联的 Java 源和编译的类文件。
5. 更新 <MyReport> 以指定资源束。导航至 Windchill“站点” > “报告”页面,
针对 <MyReport> 选择“编辑”
6. “资源束”字段中输入 <MyPackage>.<MyReportResource>,然后单击“确定”
7. 基于客户端区域设置,验证报告属性 LocalizedName 即翻译文本。
本地化 Jasper 报告
有关本地化 Jasper 报告的信息,请参阅 Jaspersoft 文档。
假定已在 <WindchillHome>/codebase/JasperReports/<ReportFolder> 下创建了相关的区域设置文件。
参考资料:
示例代码
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport xmlns = "http://jasperreports.sourceforge.net/jasperreports"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://jasperreports.sourceforge.net/jasperreports
http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
name = "jasper_report_template" language = "groovy" pageWidth = "595"
pageHeight = "842" columnWidth = "555" leftMargin = "20" rightMargin = "20"
topMargin = "20" bottomMargin = "20" resourceBundle = "localizationdemo">
<title>
<band height = "552">
<textField>
<reportElement positionType = "Float" x = "150" y = "20"
width = "400" height = "50"/>
<textElement>
<font size = "24"/>
</textElement>
<textFieldExpression class = "java.lang.String">
<![CDATA[$P{REPORT_LOCALE}.getDisplayName ($P{REPORT_LOCALE})]]>
</textFieldExpression>
</textField>
<textField isStretchWithOverflow = "true" isBlankWhenNull = "true">
<reportElement positionType = "Float" x = "20" y = "125"
width = "530" height = "20"/>
<textElement textAlignment = "Justified">
<font size = "14"/>
</textElement>
<textFieldExpression class = "java.lang.String">
<![CDATA[$R{localization.text1}]]>
</textFieldExpression>
</textField>
</band>
</title>
</jasperReport>
Windchill 代码中的使用示例
针对 Windchill 支持的所有区域设置,对所有预设报告进行了本地化。
相关的包/类 Javadoc
Foundation 模块
wt.query.template
Reporting 模块
com.ptc.windchill
其他相关 Windchill 文档
Info*Engine User's Guide (《Info*Engine 用户指南》)
报告管理联机帮助
这对您有帮助吗?