2

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

像这样的东西:

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

以导致:

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

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

4

2 回答 2

2

幕后的<h:outputFormat>用途MessageFormat。根据它的javadoc,你可以使用ChoiceFormat它。进一步的用法在其 javadoc 中有详细说明。

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

label.bean = {0} bean{0,choice,0#s|1#|1<s}
于 2012-08-16T14:14:14.630 回答
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
于 2012-08-16T12:33:52.203 回答