【问题标题】:JSF localization and pluralization using message-bundles使用消息包的 JSF 本地化和多元化
【发布时间】:2012-08-12 19:09:06
【问题描述】:

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

类似的东西:

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

导致:

0 豆,1 豆,2 豆,...

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

【问题讨论】:

    标签: jsf localization messageformat


    【解决方案1】:

    &lt;h:outputFormat&gt; 在幕后使用MessageFormat。根据其 javadoc,您可以为此使用ChoiceFormat。进一步的用法在其 javadoc 中有详细说明。

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

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

    【讨论】:

      【解决方案2】:

      你可以这样做

      <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
      

      【讨论】:

      • 是的,这就是我目前正在做的事情。只是想知道,如果没有更好的方法来实现这一点。类似于调用 #msg[key, param] 并定义 key=(param==1)?singular:plural
      猜你喜欢
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      • 1970-01-01
      • 2011-11-15
      • 1970-01-01
      相关资源
      最近更新 更多