Числительные окончания в Cotonti

В Cotonti для правильных числительных окончаний написана функция sed_declension.

Сейчас с этой функцией могут работать следующие языки: en, de, nl, se, fr, uk, ru, ua,
а также все языки у которых нет числительных окончаний.

При желании данную функцию лекго можно расширить под любой язык.
Вам всего лишь надо добавить правило для вашего языка.
Правила можно посмотреть тут.

И так как же пользоваться данной функцией ?

Объясняю на пальцах на примере плагина search:
для русского языка

ищем в ланг файле строку:

$L['plu_match'] = "совпадений";

и меняем ее на:

$L['plu_match'] = array('совпадение','совпадения','совпадений');

т.е. создаем массив array для трех склонений, первое это для значения 1, второе для значения 2 и третье для значения 0 или 5(что одно и тоже).

Все, на этом переделка русского ланг файла закончена.

для английского языка

ищем в ланг файле строку:

$L['plu_match'] = "match(es)";

и меняем ее на:

$L['plu_match'] = array('matches','match');

т.е. создаем массив array для двух склонений, первое это для значений 0, 2 и т.д., второе для значения 1 .

Все, на этом переделка английского ланг файла закончена.

Примечание: Для языков не нуждающихся в склонении пишем(оставляем) как раньше,
т.е. без array.
$L['plu_match'] = "match";


Теперь переходим к самому плагину:
Ищем где в нем вызывается эта фраза, в данном случае в search.php ищем:
".$items." ".$L['plu_match']."

она там находится в 4 местах.
Меняем ее на :
".sed_declension($items,$L['plu_match'])."

Все.

Дополнение:
Функцции sed_declension не важно какое число на входе, отрицательное или положительное, и те и другие обработаются правильно.
Также входное число может быть заключено в какие либо тэги, к примеру в тэг Bold.
Это тоже обработается правильно.

Для функции sed_declension есть еще один параметр - это $onlyword.
Он может быть либо $onlyword=true, либо $onlyword=false.
По умолчанию $onlyword = false.

Т.е. этим параметром мы задаем что будет возвращать эта функция.
Если задать $onlyword=true, то вернется только слово, без числа.

Если задать $onlyword = false или опустить данный параметр, как в приведенном выше примере на плагине search, вернется и число и слово.

Ну вот вроде бы и все.

P.S. Надеюсь теперь все доступно объяснил ?

P.P.S Просьба для тех, кто пишет плагины, используйте эту функцию,
а то как то даже стыдно видеть такое match(es) :-)


1. medar  2009-02-14 21:01
т.е. создаем массив array для трех склонений, первое это для значения 1, второе для значения 2 и третье для значения 0 или 5(что одно и тоже).
Наверное имелось в виду
array[0] - для значения 1
array[1] - для значений больше или равно 2 но меньше 5
array[2] - для значений больше или равно 5 а также для 0

Подсознательно всё ясно, но уточнение не помешает.
2. Ratibor  2009-02-15 05:58
medar
Да, так.
3. Ratibor  2009-02-15 05:59
Вернее так:
array[0] - для значения 1
array[1] - для значения 2
array[2] - для значения 5, а также для 0
4. givi  2009-03-02 16:07
Я чего то не понял а где в приведенном коде мы задаем, что первое это для значения 1, второе для значения 2 и третье для значения 0 или 5?
Only registered users can post new comments