Есть ли в Grails стандартный способ управления множественным числом в международных строках из файлов свойств? - PullRequest
14 голосов
/ 22 апреля 2011

Используя плагин для международного языка, существует ли "правильный" способ динамического множественного числа слов или выбора версии свойства во множественном числе?

Ответы [ 2 ]

21 голосов
/ 14 августа 2011

Вы можете использовать встроенный ChoiceFormat в сообщении i18n.Используя пример из java.text.MessageFormat Javadocs , вы можете определить что-то вроде:

numfiles.message = "There {0,choice,0#are no files|1#is one file|1<are {0,number,integer} files}."

Тогда в вашем GSP:

<g:message code="numfiles.message" args="[numfiles]"/>

Где numfiles - этоцелочисленное значение.

1 голос
/ 05 января 2015

Как заметил @overzealous в комментариях, не все языки имеют те же простые правила множественного числа, что и английский язык. В английском есть только две формы: one (количество равно 1, например, 1 машина, 1 час) и other (количество больше 1, например, 3 машины, 11 часов). В этом случае плюрализация может быть обработана в Grails довольно просто, используя ChoiseFormat. Однако некоторые языки имеют более двух форм, например, польский имеет 4 формы: one (например, 1 авто), few (например, 2 аута), many (например, 6 аут) и other. Вот ссылка на таблицу, описывающую правила множественного числа для всех языков.

Я также написал плагин для Grails , который добавляет богатые возможности плюрализации, используя таблицу выше. С его помощью вы можете просто написать messages.properties

msgcode={0} {0, plural, one{auto}few{auta}many{aut}other{aut}}

и затем используйте его:

<g:message code="msgcode" args="[3]"/>

напечатает 3 auta.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...