Локализация JSF и плюрализация с использованием пакетов сообщений

Я использую пакет сообщений, чтобы локализовать вывод моего приложения. Теперь я хочу добавить множественное число, и мне интересно, есть ли способ добиться этого, используя файлы свойств сообщения вместе с параметрами сообщения?

Что-то вроде того:

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

в результате:

0 бобов, 1 боб, 2 бобы, ...

Формат label.bean={0} bean работает для подсчета, конечно, но как я могу получить множественное число "s" в зависимости от значения {0}?

2 ответа

<h:outputFormat> использования MessageFormat под одеялом. Согласно его Javadoc, вы можете использовать ChoiceFormat за это. Дальнейшее использование подробно объясняется в его Javadoc.

В вашем случае, следующий шаблон формата сообщения должен сделать это:

label.bean = {0} bean{0,choice,0#s|1#|1<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>

где этикетки выглядят так

single_key= {0} bean

multi_key= {0} beans
Другие вопросы по тегам