我有来自许多国家/地区的客户,每个我需要生成一个包含数据的页面。
在我的报告中,我有类似的查询: SELECT Name,Address,CodLanguage ... FROM Customers
对于此查询的每条记录,我想在Jasper Reports中生成一个页面,其中包含各自语言的客户数据(我通过此标志CodLanguage了解其语言)。 我想为每个客户页面(每条记录)更改报告语言。我可以使用报表参数区域设置吗?或者为每条记录更改一些变量?有谁有类似的情况?知道可以做些什么吗?
示例
我需要根据客户的国家/地区语言翻译10种不同语言的标签:姓名,地址,城市,电话号码和国家/地区。
这个例子只是一个简化。我将为每个客户生成3到6个报告页面,以及许多其他数据。
谢谢!
答案 0 :(得分:1)
据我所知,使用任何标准资源引用都无法做到这一点:
$R{resource.bundle.property}
msg()
功能str()
功能对于每条记录,提供相应的区域设置(或根据其他数据确定,如国家和城市 - 魁北克,加拿大可能是法国[fr_CA
],而多伦多,加拿大将是英语[ en_CA
])。
如果有地理位置到地点的地图,请使用ResourceBundle(或MessageFormat?)来翻译特定标签的密钥。
创建一些resource bundle files,其中包含各种标签的翻译。文件名必须具有与预定区域设置相对应的后缀(例如,Bundle_fr_CA.properties
)。
将标签从静态文本更改为表达式。该表达式实例化一个新的资源包以查找其转换值的密钥(例如"city.name"
),例如:
ResourceBundle.getBundle("Bundle", new Locale("en", $F{country})).getString("city.name")
除非您可以更改数据库以获取用户的语言首选项,否则"en"
如何确定将是一件苦差事。这意味着您还必须为每种语言/国家组合创建资源包,这可以自动化。