Locale
に基づいて、複数の言語で印刷するドキュメントを作成したいとします。多言語レポートを作成するにはどうすればよいですか?
英語のリソースバンドルと中国語のバンドルバンドルを2つ作成しましたが、使用方法がわかりません。
Locale
に基づいて、複数の言語で印刷するドキュメントを作成したいとします。多言語レポートを作成するにはどうすればよいですか?
英語のリソースバンドルと中国語のバンドルバンドルを2つ作成しましたが、使用方法がわかりません。
ドキュメントジェネレータはアプリケーションの一部である可能性があるため、あらかじめ選択されている言語セレクタメニュー項目、チェックボックスまたはコンボボックスが必要です。
したがって、ロケールを読み込むifステートメント、またはレポート生成前に必要な言語を追加し、それに応じてロケールに応じて適切なレポートをロードしないでください。
このように、すべての言語に1つのjrxmlファイルを保存する必要があります。ヘッダーとラベルを手動で翻訳するのはかなり簡単です。
あなたのデータはデータベース内ですでに翻訳されている必要があります。ここでは関連する属性値を多言語にしておく必要があります。
適切な言語のSQLクエリを変更する必要がありますが、クエリはjrxmlの一部であるため自動的に実行されます。
ここにJasperReportsの国際化対応を実装する方法のthe sampleです。
主な考え方は、テキストと画像のローカライズに特別な表現$R{}
を使用することです。
画像用サンプル:テキストの
<image scaleImage="Clip">
<reportElement positionType="Float" x="20" y="20" width="100" height="50"/>
<imageExpression class="java.lang.String"><![CDATA[$R{image.flag}]]></imageExpression>
</image>
サンプル($ R {}構文):
<textField isBlankWhenNull="true">
<reportElement x="20" y="100" width="530" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$R{sampleString}]]></textFieldExpression>
</textField>
又は(MSG()法):
text.message=The program picked up {0} as a random number.
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement x="20" y="210" width="530" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[msg($R{text.message}, $P{number})]]></textFieldExpression>
</textField>