我想创建一个基于Locale
以多种语言打印的文档。
我创建了2个资源包,一个是英文的,一个是中文的,但我不知道如何使用它们。
答案 0 :(得分:5)
以下是the sample如何实现 JasperReports 的国际化支持。
主要思想是使用特殊表达式 $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>
答案 1 :(得分:0)
由于文档生成器可能是应用程序的一部分,因此您应该在某处具有已预先选择的语言选择器菜单项,复选框或组合框。
那么,为什么不在报告生成之前添加一个读取Locale或所需语言的if语句,并相应地将相应的报告加载到语言环境中。
这样您就需要为每种语言保留一个jrxml文件。手动翻译标题和标签相当容易。
您的数据应该已经在您的数据库中进行了翻译,无论如何您必须保持相关的属性值多语言。
您需要修改相应语言的SQL查询,但由于Query是jrxml的一部分,因此它将自动执行。