如何创建多语言报告?

时间:2010-12-14 10:38:36

标签: jasper-reports

我想创建一个基于Locale以多种语言打印的文档。

我创建了2个资源包,一个是英文的,一个是中文的,但我不知道如何使用它们。

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的一部分,因此它将自动执行。