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

使用消息包的JSF本地化和多元化,jsf,localization,messageformat,Jsf,Localization,Messageformat,我正在使用一个消息包来本地化应用程序的输出。现在我想添加多重化,我想知道是否有一种方法可以通过使用消息属性文件和消息参数来实现这一点 诸如此类: <h:outputFormat value="#{msg['label.bean']}"> <f:param value="#{someBean.someProp.size()}" /> </h:outputFormat> 导致: 0个bean,1个bean,2个bean 格式label.bean={0

我正在使用一个消息包来本地化应用程序的输出。现在我想添加多重化,我想知道是否有一种方法可以通过使用消息属性文件和消息参数来实现这一点

诸如此类:

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

导致:

0个bean,1个bean,2个bean


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

您可以这样做

<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>
封面下的用途。根据它的javadoc,你可以使用它。其javadoc详细解释了进一步的用法

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


label.bean={0}bean{0,choice,0#s|1#124; 1是的,这就是我目前正在做的。我只是想知道,是否没有更好的方法来实现这一点。比如调用#msg[key,param]和定义key=(param==1)?单数:复数
single_key= {0} bean

multi_key= {0} beans