Перейти к содержанию
  • Языковые строки во множественном числе (Плюрализация)

       (0 отзывов)

    Вадим

     

    В Invision Community существуют языковые строки, имеющие такой вид:

    {# [1:comment][?:comments]}

    Данная конструкция подразумевает собой изменение формы числа существительного в зависимости от количественного значения. Эта фраза будет отображать в единственно числе (если будет передан параметр - 1): 1 comment, если любой другой параметр (количество комментариев): 2 comments, 3 commnets и так далее. Так как в английском языке множественное число существительных образуется в большинстве случаем с помощью добавления к существительному окончания "-s", то такая конструкция слова (указана выше) для английского языка будет исчерпывающей.

    Для чего тогда это сделано?

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

    Такая языковая фраза на русском языке примет вид:

    {# [1:отзыв][2:отзыва][3:отзыва][4:отзыва][21:отзыв][22:отзыва][23:отзыва][24:отзыва][31:отзыв][32:отзыва][33:отзыва][34:отзыва][41:отзыв][42:отзыва][43:отзыва][44:отзыва][51:отзыв][52:отзыва][53:отзыва][54:отзыва][61:отзыв][62:отзыва][63:отзыва][64:отзыва][71:отзыв][72:отзыва][73:отзыва][74:отзыва][81:отзыв][82:отзыва][83:отзыва][84:отзыва][91:отзыв][92:отзыва][93:отзыва][94:отзыва][?:отзывов]}

    То есть, для русского языка придётся перечислить в фразе практически все числа (в строке выше получится - 24532 отзывов), что нереально, а значит, придётся воспользоваться шаблонами (см ниже.)

    Формат фразы

    Формат фразы выглядит так:

    {#[x:значение]}

    1. Фигурные скобки обозначают границы слов. Знак решётки '#' обозначает расположение цифры, указывающей количество.

    2. Каждое значение в квадратных скобках представляет собой возможное значение. Оно содержит в себе цифру, а через двоеточие указано слово, которое будет применено с указанной цифрой. Вместо цифры может быть знак вопроса '?', предназначенный для всех неуказанных цифр.

    Скрытие и перемещение цифр

    Если вы не хотите отображать цифру в фразе, вы можете добавить восклицательный знак '!' перед решёткой '#', например:

    %s {!#[1:likes][?:like]} this

    В данном случает будет отображено '%s likes this', если передаваемое значение будет 1, и '%s like this' для любых других значений.

    Кроме того, вы можете расположить цифру где угодно, указав '#' в любое другое место, например:

    {!#[1:week][?:# weeks]}

    В данном случае, если передаваемый параметр будет 1, то будет отображено слово 'week', соответственно, при любом другом параметре будет отображено 'x weeks' (x - цифра).

    Дополнительный контент

    В такие языковые строки вы можете включать дополнительный контент, но по правилам синтаксиса, например

    {# anonymous [1:member][?:members]}

    Будет отображено '1 anonymous member' при параметре 1 и 'X anonymous members' при любых других параметрах. Для русского языка такая конструкция будет такой:

    {# [1:анонимный пользователь][?:анонимных пользователей]}

    Шаблоны

    Вместо указания определённых значений или '?' для всех остальных значений, вы можете использовать шаблоны. Так знак звёздочки '*' будет соответствовать всем значениям, которые заканчиваются цифрой, указанной после этого знака. Знак '%' будет соответствовать всем значения, которые начинаются цифрой, указанной после него. Например:

    {# [*1:отзыв][*2:отзыва][*3:отзыва][*4:отзыва][11:отзывов][12:отзывов][13:отзывов][14:отзывов][?:отзывов]}

    Таким образом, воспользовавшись шаблонами, вы подкорректировали наш пример, указанный в начале статьи. В этом случае все значения, оканчивающиеся на цифру 1 будут указываться со словом 'отзыв', кроме цифры '11', так как для неё мы указали отдельно значение. (1,21,31,41,61,18751 отзыв) или (2,22,52,82,164872 отзыва).

    Несколько цифр

    Вы можете создавать строки с указанием нескольких цифр, например:

    {0# [1:post][*2:posts]} and {1# [1:view][*2:views]}

    Этак конструкция отобразит два значения, например, если будет передано два параметра 1 и 2, получится '1 post and 2 views'

     



    Обратная связь

    Присоединяйтесь к обсуждению

    Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
    Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

    Гость

    • Не будет показан другим пользователям
    • Добавить отзыв...

      ×   Вставлено с форматированием.   Вставить как обычный текст

        Разрешено использовать не более 75 эмодзи.

      ×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

      ×   Ваш предыдущий контент был восстановлен.   Очистить редактор

      ×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

      Загрузка...

×
×
  • Создать...

Важная информация

Используя наш сайт вы соглашаетесь с нашей Политикой конфиденциальности