如何创建多语言报告?

Abc*_*cde 5 jasper-reports

我想创建一个文档,它以多种语言打印,基于Locale.

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

Ale*_*x K 5

以下是如何为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>
Run Code Online (Sandbox Code Playgroud)

文本样本($ R {}语法):

<textField isBlankWhenNull="true"> 
 <reportElement x="20" y="100" width="530" height="20"/> 
 <textElement/> 
 <textFieldExpression class="java.lang.String"><![CDATA[$R{sampleString}]]></textFieldExpression> 
</textField> 
Run Code Online (Sandbox Code Playgroud)

或(msg()方法):

text.message=The program picked up {0} as a random number.
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)


Cos*_*lis 0

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

那么,为什么不在生成报告之前添加一个 if 语句来读取区域设置或所需的语言,并根据区域设置加载适当的报告。

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

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

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