2017-02-07 6 views
0

私はJasperを使用してPDFレポートを生成しています。 jrxmlファイルでは、単一のプロパティファイルをリソースバンドルとして読み込むことができますが、ここではBiLingual(2言語のラベル、英語は英語、その他はローカル言語)レポートとしてレポートを生成するために2つのプロパティファイルを読み込む必要があります。 JasperReportで複数のプロパティファイルを使用することが可能です。あるいはこれを行うために他の方法がありますか?単一のjrxmlレポートに複数のリソースバンドルを使用することはできますか?

+1

いいえ1つのファイルを使用する必要があります。 –

答えて

0

単一のリソースバンドルを持つ主な理由は、1つの言語のすべてのテキストをカプセル化することです。レポートを実行すると、レポートのロケール(国と言語)が表示されます。これにより、レポートは特定の言語のリソースバンドルを選択します。レポートテンプレートはその値ではなくバンドルキーを参照するため、生成されたレポートは特定の言語で出力されます。

レポートがバイリンガル(単一言語を生成するためにロケールオブジェクトをレポートに渡すことは珍しいため、使用可能なページの不動産を増加させるための珍しい要件です)の場合は、通常通りリソースバンドルを作成します両方の言語を含むようにラベルを更新します。

header.label.greeting = Hello/Bonjour 
footer.label.page = Page/Page 
body.label.name = Name/Nom 

英語のラベルが常に最初の場合は、デフォルトで英語のロケールを使用し、それに応じてリソースバンドルファイルに名前を付けるだけです。

header.label.greeting = Hello 
footer.label.page = Page 
body.label.name = Name 

header.label.greeting = Bonjour 
footer.label.page = Page 
body.label.name = Nom 

あなたの場合:それは、このような独立した英語やフランス語のラベルなどのバイリンガルよりも多くのリソースバンドルのための可能性を開くため

これは、要件が将来的に変更する必要があり、柔軟です特に熱心だったので、2つのリソースバンドルを異なる言語からマージするコードを少し書くことができます。つまり、すぐ上に示した2つのキーセットがある場合、スラッシュを使用して各ラベルを結合する単一のリソースバンドルを作成できます。

このアプローチを使用するには、マージコードでバイリンガルラベルと非バイリンガルラベルを区別できるようにする必要があります。

+0

ありがとうDave。私はデフォルトのリソースバンドルとして英語を設定し、ローカルリソースバンドルをパラメータとしてjrxmlファイルに渡すことで問題を解決しました。 タグで、 '$ P {localized} .getString(" xyz ")'を使って、R {xyz}とローカルラベルを使って英語のラベルを取得しています。この利点は、私が望むところであれば、私は任意の区切りを使うことができるということです。 – Appasaheb

+0

可能であれば、 '$ R {...}'や '$ P {...} 'ではなく、' $ R {...}'を排他的に使ってラベルを取り出す方法を混同しないでください。すべてのレポートラベルは、同じリソースバンドルから提供される必要があります。 –

関連する問題