Множественные формы слов (PHP Класс)

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

Все наверное замечали как на многих сайтах встречаются нелепые предложения в которых указывается число неких вещей. А нелепые потому что в них обычно не согласуется форма слова с их количеством. Пример:

  • В вашей корзине 2 заказов. На сумму 121 рублей.
  • Запись имеет 3 комментариев
  • На сайте 32 человек

Вообщем «Кто стучится в дверь моя, видишь дома нет никто, приходи ко мне вчера, будем съели пирожки». Что же делать и как это исправить?

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

Теория

Нашел не так давно в интернете вот такую интересную ссылку:
http://translate.sourceforge.net/wiki/l10n/pluralforms
Интересна она тем, что там собранны алгоритмы определения формы множественного числа для почти 120 языков мира. Причем эти алгоритмы представленны в виде формул. К примеру для русского языка:

Количетсво форм слова:
nplurals=3;

Форма слова для некоего числа n:

То есть для русского языка три множественные формы:

  • Когда предмет один (одно окно, один стол)
  • Когда предметов больше двух но меньше пяти (три окна, четыре стола)
  • Когда предметов больше либо равно пяти (пять окон, шесть столов)

Ну и сответсвенно теже формы используются когда преметов к примеру двадцать один, сто тридцать два и тд.

Реализация

Вообщем вчера реализовал класс основанный на таблице указанной по ссылке, т.е. поддерживает все 120 языков. Данный класс имеет несколько методов:

Ну и собственно как использовать данный класс:

Вообщем ничего сложного по сути нету. Осталось только добавить это в свои приложения.

Скачать

StringPlural.php

  1. Василий

    Вообще на эту тему изобретенно очень много велосипедов. Да впринципе на мой взгляд любой мало-мальский программист пишет сам такую функцию)

    Но ваш велосипед уникален поддержкой такого огромного количества различных языков! =)

  2. Артем

    «Кто стучится в дверь моя, видишь дома нет никто, приходи ко мне вчера, будем съели пирожки»
    Убило :D

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

Прочли запись? Понравилась? Не стесняйтесь, оставьте, пожалуйста, свой комментарий. Мне очень интересно, что вы думаете об этом. Кстати в комментарии вы можете задать мне любой вопрос. Я обязательно отвечу.

Вы можете оставить коментарий анонимно, для этого можно не указывать Имя и email. Все комментарии проходят модерацию, поэтому ваш комментарий появится не сразу.