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

       (0 reviews)

    Вадим

     

    В 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'

     



    User Feedback

    Join the conversation

    You can post now and register later. If you have an account, sign in now to post with your account.
    Note: Your post will require moderator approval before it will be visible.

    Guest

    • This will not be shown to other users.
    • Add a review...

      ×   Pasted as rich text.   Paste as plain text instead

        Only 75 emoji are allowed.

      ×   Your link has been automatically embedded.   Display as a link instead

      ×   Your previous content has been restored.   Clear editor

      ×   You cannot paste images directly. Upload or insert images from URL.

      Loading...

Messenger

    ×
    ×
    • Create New...

    Important Information

    By using our site you agree to our Privacy Policy