使用消息包进行JSF本地化和多元化

时间:2012-08-16 12:25:33

标签: jsf localization messageformat

我正在使用消息包来本地化我的应用程序的输出。现在我想添加复数,我想知道是否有办法通过使用消息属性文件和消息参数来实现它?

类似的东西:

<h:outputFormat value="#{msg['label.bean']}">
    <f:param value="#{someBean.someProp.size()}" />
</h:outputFormat>

导致:

  

0个豆子,1个豆子,2个豆子,......

格式label.bean={0} bean当然适用于计数,但如何根据{0}的值获取复数“s”?

2 个答案:

答案 0 :(得分:2)

<h:outputFormat>使用了MessageFormat。根据其javadoc,您可以使用ChoiceFormat。进一步的用法在其javadoc中进行了详细解释。

在您的情况下,应使用以下消息格式模式:

label.bean = {0} bean{0,choice,0#s|1#|1<s}

答案 1 :(得分:1)

你可以做这样的事情

<ui:param name="plu" value="#{(someBean.someProp.size() eq 1)?'single_key':'multi_key'}"/>

<h:outputFormat value="#{msg[plu]}">
    <f:param value="#{someBean.someProp.size()}" />
</h:outputFormat>

标签看起来像这样

single_key= {0} bean

multi_key= {0} beans