Jasper-reports-jasper-internationalization
JasperReports-国際化
時には、異なる言語のレポートが必要になります。 異なる言語ごとに同じレポートを作成することは、多くの冗長な作業を意味します。 言語ごとに異なるテキストのみを個別に記述し、ロケール設定に応じて実行時にテキスト要素にロードする必要があります。 これがレポートの国際化の目的です。 作成された国際化レポートはどこでも実行できます。
次の手順では、さまざまな言語でレポートを生成する方法と、レポートの国際化の他の機能をリストしました。
- リソースバンドル_java.util.ResourceBundle_をレポートテンプレートに関連付けます。 java.util.ResourceBundleオブジェクトをに関連付けるには2つの方法があります レポートテンプレート。
- 設計時には、レポートテンプレートオブジェクトの_resourceBundle_属性をターゲットリソースバンドルのベース名に設定します。
- レポート入力時にREPORT_RESOURCE_BUNDLEパラメーターの値として_java.util.ResourceBundle_オブジェクトを指定することにより、動的/実行時の関連付けを作成できます。
- 現在のロケールとは異なるロケールでレポートを生成する必要がある場合、組み込みのREPORT_LOCALEパラメーターを使用して、レポートの入力時にランタイムロケールを指定できます。
- レポートの国際化を促進するために、レポートに関連付けられた_java.util.ResourceBundle_オブジェクト内に配置された_java.lang.String_リソースを参照する特別な構文 $ R \ {} がレポート式内で使用可能です。 $ R \ {} 文字構文は、かっこで囲む必要があるキーに基づいて、リソースバンドルからロケール固有のリソースを抽出します。
+上記のテキストフィールドには、runtimesuppliedロケールと_report.title_キーに基づいて、レポートテンプレートに関連付けられたリソースバンドルから文字列値を抽出することにより、レポートのタイトルが表示されます。 * レポートロケールに基づいてメッセージをさまざまな言語でフォーマットし、レポートの_net.sf.jasperreports.engine.fill.JRCalculator_内に組み込みメソッドがあります。 このメソッドは、_java.text.MessageFormat_クラスに類似した機能を提供します。 このメソッドmsg()には、メッセージ内で最大3つのメッセージパラメーターを使用できる3つの便利なシグネチャがあります。 * 組み込みの_str()_メソッド(レポート式内の$ R \ {}構文に相当)。これにより、レポートロケールに基づいてリソースバンドルのコンテンツにアクセスできます。 * 日付と時刻の書式設定では、組み込みのREPORT_TIME_ZONEパラメーターを使用して、適切な時刻変換を保証できます。 * 生成された出力では、ライブラリはテキストの実行方向に関する情報を保持するため、右から左に書く言語(アラビア語やヘブライ語など)で生成されたドキュメントを適切にレンダリングできます。 * アプリケーションが組み込みのSwingビューアーに依存して生成されたレポートを表示する場合、ボタンのツールヒントまたは表示されるその他のテキストを調整して、国際化する必要があります。 ビューアはロケール固有の情報を抽出するために事前定義されたリソースバンドルに依存しているため、これは非常に簡単です。 このリソースバンドルのベース名は_net.sf.jasperreports.view.viewer_です
例
国際化を実証するために、新しいレポートテンプレート(jasper_report_template.jrxml)を作成しましょう。 JRXMLの内容は次のとおりです。 C:\ tools \ jasperreports-5.0.1 \ testディレクトリに保存します。
上記のファイルで、<jasperReport>要素の_resourceBundle_属性は、レポートに使用するローカライズされた文字列を取得する場所をJasperReportsに指示します。 レポートの入力時に、属性の値に一致するルート名がCLASSPATHのどこかに存在する必要があるプロパティファイルを記述する必要があります。 この例では、プロパティファイル localizationdemo.properties がディレクトリ C:\ tools \ jasperreports-5.0.1 \ test に保存されます。 このファイルの内容は以下のとおりです
別のロケールを使用するには、ファイルの名前をlocalizeddemo_ [locale] .propertiesにする必要があります。 ここでは、スペイン語ロケールのファイルを作成します。 このファイルを* C:\ tools \ jasperreports-5.0.1 \ test \ localizationdemo_es.properties。*として保存します。 このファイルの内容は次のとおりです。
resourceBundleプロパティの値を取得する構文は、$ R \ {key}です。
使用したいロケールをJasperReportsに知らせるには、組み込みパラメーターに値を割り当てる必要があります。 このパラメーターの名前はREPORT_LOCALEという定数として定義され、この定数は_net.sf.jasperreports.engine.JRParameter_クラスで定義されます。 定数の値は、_java.util.Locale_のインスタンスでなければなりません。 このロジックは、レポートを埋めて生成するためにJavaコードに組み込まれています。 このファイル JasperReportFillI18.java をC:\ tools \ jasperreports-5.0.1 \ test \ src \ com \ finddevguidesディレクトリに保存しましょう。 ファイルの内容は次のとおりです。
レポート作成
通常のANTビルドプロセスを使用して、上記のファイルをコンパイルおよび実行します。 ファイルbuild.xmlの内容(ディレクトリC:\ tools \ jasperreports-5.0.1 \ testに保存)は以下のとおりです。
'_インポートファイル-baseBuild.xmlは、チャプターリンク:/jasper_reports/jasper_environment_setup [Environment Setup]から選択され、build.xmlと同じディレクトリに配置する必要があります。_
次に、コマンドラインウィンドウを開き、build.xmlが配置されているディレクトリに移動します。 最後に、次のコマンド ant -Dmain-class = com.finddevguides.JasperReportFillI18 (viewFullReportがデフォルトのターゲットです)を実行します。
上記のコンパイルの結果、次の画面のようにJasperViewerウィンドウが開きます。