Jump to content

Фразы в множественном числе (Плюрализация)

Многие фразы в Invision Community являются зависимыми от числа, то есть плюрализационными. Например: 21 ответ, 2 ответа, 12 ответов; У вас 1 новое уведомления, 2 новых уведомления и так далее.

В английском языке множественное число, как правило, имеет окончание 's'. В других языках, например в русском, правила сложнее и требуют определённый формат в зависимости от конкретного числа.

Чтобы учесть эти нюансы, Invision Community использует специальный синтаксис для фраз, которые используют плюрализацию. Языковая система передаёт значение, используемое в фразе, и специальный синтаксис может использовать это значение для определения слов для отображения.

Синтаксис

Синтаксис для фраз с плюрализацией выглядит так:

{# [1:ответ][?:ответов]}

Этот синтаксис открывает множество возможностей, но это основное его использование. Он состоит из определений, которые применяются в зависимости от переданного в фразу числа. Давайте разберёмся подробнее.

{...}

Плюрализация всегда должна быть заключена в фигурные скобки чтобы система распознала её. Обратите внимание, что плюрализация может существовать внутри другой фразы, если остальная часть фразы не зависит от числа. Например:

"У вас {# [1:новое уведомление][?:новых уведомлений]}"

#

Следующий символ это хэш/решётка. Когда он появляется в начале замены, он заменяется на актуальное переданное в замену число. С другой стороны, если указать !#, то число не будет отображено.

{# [1:ответ][?:ответов]}
{!# [1:ответ][?:ответов]}

будет выглядеть так:

10 ответов
ответов

[x:ответов]

Следующий блок является вариантом замены, которых может быть несколько. Они заключены в фигурные скобки и вы можете иметь их столько, сколько необходимо для вашего языка. Блок начинается с x:, где x - число, указывающее, что замена используется, когда переданное во фразу число равно x. Если ваш язык требует другую форму плюрализации для определённых чисел, вы можете повторить каждый необходимый блок.

Существует три специальных символа, которые вы можете использовать для 'x':

  • *1: Соответствует всем числам, заканчивающимся на единицу, например 1, 11, 21, 251.
  • %1: Соответствует всем числам, начинающимся с единицы, например 1, 10, 12, 163.
  • ?: Соответствует всем другим значениям, которые не соответствуют другим блокам.

После двоеточия : строковое значение, используемое при совпадении с боком.

Обратите внимание, что значения в этих блоках могут использовать специальный символ #, который, как было описано выше, заменяется на переданное значение в фразу. Это полезно, когда фраза в некоторых случаях не должна отображать цифру. Например:

"Каждый {!#[1:год][?:# лет]}"

Мы не говорим "каждый 1 год", правильно говорить "каждый год". В первой замене мы убрали число с помощью восклицательного знака.