Jasper レポートのローカライズのカスタマイズ
目的
Jasper レポートのローカライズバージョンを提供します。
バックグラウンド
Windchill レポート内のデータソースオブジェクトとレポートオブジェクトの両方に、ローカライズ可能なテキストが含まれています。これらのオブジェクトのテキストをローカライズすることによって、設定したロケールでテキストを表示できます。
範囲/適用可能性/前提条件
このドキュメンテーションは Jasper レポートのローカライズに関する情報を提供します。前提条件は以下のとおりです。
• サイトコンテキストで、ReportTemplate <MyReportTemplate> を作成した。
• サイトコンテキストで、Windchill レポートオブジェクト <MyReport> を作成した。
• <カスタマイズのルートディレクトリ>/<モジュール>/main/resources/JasperReports/<ReportFolder> に、Jasper レポート <MyJasperReport>.jrxml を配置した。
• <カスタマイズのルートディレクトリ>/<モジュール>/main/resources/JasperReports/<ReportFolder> に、関連するロケールプロパティファイルを配置した。
WBR 統合では、レポートメタモデルを更新するためのアクセス権限も必要です。このマニュアルでは、WBR システムで使用されるテキストを外部化するために、標準の Java リソースバンドルを使用する手順について説明します。ローカライズされたテキストをサポートするには、言語固有のリソースバンドルを作成し、テキストを適切な言語に翻訳する必要があります。複数の言語のサポートが必要で、サポート対象の言語にテキストを翻訳できることを前提とします。このマニュアルで言及されているテキスト要素は、レポート名、パラメータ、および列で構成されています。WBR レポートに表示される実際のデータは、データソースから返されます。このデータのローカライズについては、このマニュアルでは説明しません。
予測される結果
このソリューションでは、最終的に、クライアントのロケールに基づいた複数の言語で WBR レポートを使用できるようになります。
ソリューション
特定のクライアントのロケールをサポートするために翻訳可能な、Java リソースバンドルに対する外部ローカライズテキストを生成。
前提となる知識
この目標を達成するには、以下の内容についてよく理解している必要があります。
• レポート管理のユーザーインタフェース
ソリューションエレメント
|
エレメント
|
タイプ
|
説明
|
|
<マイレポートテンプレート>WindchillReportTemplate
|
Windchill オブジェクト
|
Windchill データを読み込むための照会を指定する Windchill オブジェクト。
|
|
<マイレポートテンプレートリソース>
|
リソースバンドル情報プロパティファイル
|
ReportTemplate のテキストアイテムをローカライズするために使用されるリソースバンドル情報ファイル。
|
|
<マイレポート>WindchillReport
|
Windchill オブジェクト
|
Windchill ユーザーインタフェースでユーザーに表示される Windchill オブジェクト。
|
|
<マイレポートリソース>
|
リソースバンドル情報プロパティファイル
|
レポートのテキストアイテムをローカライズするために使用されるリソースバンドル情報ファイル。
|
手順 - ReportTemplate データソースのローカライズ
1. wt.util.resource.WTListResourceBundle を拡張することで Java リソースファイルを作成します。タスクメソッド名、パラメータ名、およびコラム名として、必要に応じてエントリを追加します。言語固有のバージョンの <マイレポートテンプレートリソース>.java を作成し、<カスタマイズのルートディレクトリ>/<モジュール>/main/src に配置します。CCD の ant compile、deploy コマンドを使用してこれらをコンパイルします。
2. <マイレポートテンプレート> を更新してリソースバンドルを指定するには、
「レポート管理」ユーティリティに移動します。詳細については、
レポートテンプレートの管理を参照してください。
3. <MyReportTemplate> を右クリックし、「レポートテンプレートを編集」を選択して、照会ビルダーを起動します。
4. 「レポートテンプレートを編集」ダイアログボックスの「その他のプロパティ」で、「リソースバンドル」ボックスに <MyPackage>.<MyReportTemplateResource> と入力します。
5. 「適用」をクリックしてから、「保存」をクリックします。
手順 - Windchill レポートオブジェクト名のローカライズ
1. wt.util.resource.WTListResourceBundle を拡張することで、パス <カスタマイズのルートディレクトリ>/<モジュール>/main/src に Java リソースファイルを作成します。
2. レポートオブジェクト名のエントリを追加します。
3. 言語固有のバージョンの <MyReportResource>.java を作成し、<カスタマイズのルートディレクトリ>/<モジュール>/main/src に配置します。
4. <MyReport> を更新して、リソースバンドルを指定します。Windchill の > ページに移動します。
<MyReport> の「編集」を選択します。
5. 「リソースバンドル」フィールドに「<MyPackage>.<MyReportResource>」と入力し、「OK」をクリックします。
6. レポート属性 LocalizedName がクライアントのロケールに基づいた翻訳済みテキストであることを確認します。
Jasper レポートのローカライズ
Jasper レポートをローカライズする方法については、JasperSoft のドキュメンテーションを参照してください。
関連するロケールファイルが <カスタマイズのルートディレクトリ>/<モジュール>/main/resources/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
• 基本モジュール
wt.query.template
• レポートモジュール
com.ptc.windchill
その他の関連 Windchill ドキュメント
• レポート管理のオンラインヘルプ