2010-12-14 73 views
5

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

我已经创建了2个资源包,一个用英文,一个用中文,但我不确定如何使用它们。

回答

0

由于文档生成器可能是您的应用程序的一部分,您应该在某处有一个语言选择器菜单项,复选框或组合框,它已经预先选定。

那么,为什么不只是在报表生成之前添加一个读取语言环境或所需语言的if语句,并相应地将相应的报表加载到语言环境。

这样您将需要为每种语言保留一个jrxml文件。只需手动翻译标题和标签就相当容易。

您的数据应该已经在您的数据库中进行了翻译,无论如何您都必须保留相关属性值多种语言。

您需要修改相应语言的SQL查询,但由于Query是您的jrxml的一部分,因此它将自动执行。

4

这里是the sample如何实现国际化支持JasperReports

主要想法是使用特殊表达$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()法)::

<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 {}语法)将样品

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>