我正在使用消息包来本地化我的应用程序的输出。现在我想添加复数,我想知道是否有办法通过使用消息属性文件和消息参数来实现它?
类似的东西:
<h:outputFormat value="#{msg['label.bean']}">
<f:param value="#{someBean.someProp.size()}" />
</h:outputFormat>
导致:
0个豆子,1个豆子,2个豆子,......
格式label.bean={0} bean
当然适用于计数,但如何根据{0}
的值获取复数“s”?
答案 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