以下是如何为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)
由于文档生成器可能是您的应用程序的一部分,因此您应该在某个地方有一个已经预先选择的语言选择器菜单项、复选框或组合框。
那么,为什么不在生成报告之前添加一个 if 语句来读取区域设置或所需的语言,并根据区域设置加载适当的报告。
这样您就需要为每种语言保留一个 jrxml 文件。手动翻译标题和标签将相当容易。
您的数据应该已经翻译在数据库中,无论如何您都必须在数据库中保留相关属性值的多语言版本。
您需要将 SQL 查询修改为适当的语言,但由于查询是 jrxml 的一部分,因此它将自动执行。
| 归档时间: |
|
| 查看次数: |
7638 次 |
| 最近记录: |