Склонение имен существительных в темах дизайна

1

Было бы неплохо добавить плагин для smarty или модификатор для склонения имен существительных (заказ, заказа, заказов) в темах дизайна, или же сделать реализацию в theme.xml (если это возможно). Пока пользуюсь функцией (алгоритм из php варианта от wa):

{function name="pluralform" n=1 f1='' f2='' f3=''}
    {$n = abs($n)}
    {$n1 = $n % 10}
    {$n2 = $n % 100}
    {$n}
    {if $n1 == 1 && $n2 != 11}{$f1}
    {elseif $n1 >= 2 && $n1 <= 4 && ($n2 < 10 || $n2 >= 20)}{$f2}
    {else}{$f3}{/if}
{/function}

{pluralform n=5 f1='отзыв' f2='отзыва' f3='отзывов'}


7 комментариев

  • +1
    Syrnik.com Syrnik.com 3 февраля 2016 06:00 #

    это работает только для русского языка.

    в theme.xml разве нельзя задавать свои строки дял локализации? Или там нельзя настройки для plurals сделать?

    • +1

      Судя по документации (Локализация тем дизайн), там можно делать локализацию такого вида:

      <locale>
          <msgid>Brands</msgid>
          <msgstr locale="ru_RU">Бренды</msgstr>
      </locale>


      Функция, которую я описал выше, работает. Но для её использования приходится проверять локализацию:

      {if $wa->locale() == 'ru_RU'}
          {pluralform n=count($o.items) f1='товар' f2='товара' f3='товаров'}
      {else}
          {count($o.items)} [`products`]
      {/if}
      • +1
        Syrnik.com Syrnik.com 3 февраля 2016 12:21 #

        Вот это грустно

        Судя по документации (Локализация тем дизайн), там можно делать локализацию такого вида:

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

        Скорее уж в theme.xml надо придумать как множественные числа для локали указывать. Типа

        <msgstr locale="ru_RU">
        <plurals n=1>Бренд</plurals><plurals n=2>Бренда</plurals><plurals n=3>Брендов</plurals>
        </msgstr>

        Только тогда от авторов тем придется ожидать познаний в том, сколько в каждом языке, согласно gettext, должно быть множественных форм.

        Либо убрать из theme.xml локализацию нафиг и прикладывать к теме отдельный .po файл.

        • +1
          Eugen Nichikov Eugen Nichikov 3 февраля 2016 12:36 #

          Кстати, на днях пытался сделать локализацию темы при помощи php wa-system/locale/locale.php

          Скрипт создал подпапку locale. Мне кажется, WA что-то подозревают :)

        • +1

          Как раз для этого я и поднял тему, чтобы была универсальная реализация.

        • +1
          Vladislav Vladislav 15 ноября 2018 22:52 #

          Возможно такое прикрутить?

          https://infostart.ru/public/69...

        • -1
          shop shop 13 мая 2020 06:13 #

          Мы сделали простенький плагин Форматор.

          С его помощью можно склонять любые существительные, после числительных.

          https://www.webasyst.ru/store/plugin/shop/yartexformator/

          Добавить комментарий

          Чтобы добавить комментарий, зарегистрируйтесь или войдите