Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以为单个jrxml报告使用多个资源包?_Java_Jasper Reports - Fatal编程技术网

Java 是否可以为单个jrxml报告使用多个资源包?

Java 是否可以为单个jrxml报告使用多个资源包?,java,jasper-reports,Java,Jasper Reports,我正在使用Jasper生成PDF报告。在jrxml文件中,我可以将单个属性文件作为资源包读取,但这里我需要读取两个属性文件以生成双语(两种语言标签,一种是英语,另一种是本地语言)报告。在JasperReport中可以使用多个属性文件。或者有其他方法可以做到这一点吗?拥有单个资源包的主要原因是它封装了一种语言的所有文本。运行报告时,将提供报告的区域设置(国家和语言)。这会导致报表为特定语言选择资源包。由于报表模板引用的是捆绑键,而不是它们的值,因此生成的报表将以特定语言输出 如果报表是双语的(这是

我正在使用Jasper生成PDF报告。在jrxml文件中,我可以将单个属性文件作为资源包读取,但这里我需要读取两个属性文件以生成双语(两种语言标签,一种是英语,另一种是本地语言)报告。在JasperReport中可以使用多个属性文件。或者有其他方法可以做到这一点吗?

拥有单个资源包的主要原因是它封装了一种语言的所有文本。运行报告时,将提供报告的区域设置(国家和语言)。这会导致报表为特定语言选择资源包。由于报表模板引用的是捆绑键,而不是它们的值,因此生成的报表将以特定语言输出

如果报表是双语的(这是一个不寻常的要求,因为将区域设置对象传递到报表中以生成单一语言很简单,这会增加可用页面的不动产),则可以像往常一样创建资源包,但要更新标签以包含两种语言。这可能类似于:

header.label.greeting = Hello / Bonjour
footer.label.page = Page / Page
body.label.name = Name / Nom
如果总是首先使用英语标签,那么只需默认使用英语区域设置并相应地命名资源包文件

这是灵活的,因为如果将来需求发生变化,它可以提供多种双语资源包,例如单独的英语和法语标签:

header.label.greeting = Hello
footer.label.page = Page
body.label.name = Name

如果您特别感兴趣,可以编写一些代码来合并来自不同语言的两个资源包。也就是说,给定上面显示的两组键,您可以生成单个资源包,该资源包使用斜杠组合每个标签


要使此方法起作用,您必须有一个约定,允许合并代码区分双语标签和非双语标签(如果存在)。

否。您应该使用一个文件。谢谢Dave。我通过将英语语言设置为默认资源包并将本地资源包作为参数传递给jrxml文件来解决这个问题。在tag中,我使用R{xyz}获取英语标签,使用
$P{localized}.getString(“xyz”)
获取本地标签。这样做的好处是我可以在任何我想使用的地方使用任何分隔符。如果可能的话,避免混合使用
$R{…}
专门检索标签的方式,而不是
$R{…}
$P{…}
。所有报告标签都应来自同一个资源包。
header.label.greeting = Bonjour
footer.label.page = Page
body.label.name = Nom