Решение для склонения существительных после числительных?
Какое самое оптимальное решение для склонения существительных после числительных?
Я подразумеваю способ, возможно и не самый оптимальный, зато верный. Суть его проста: Посылаем в функцию слово в единственном числе и число, означающее количество. В этой функции запускаем swtich на последнюю букву, а в этом switch будет 33 case(но если буквы имеют одинаковое склонение, то меньше), в которых в свою очередь будет еще 3 case: на число 1, число 2, и число 5.
Это не так просто, одной функции не достаточно, так как в русском языке много слов, которые не попадают под общие правила.
Нужна специальная база слов для русского языка.
Поэтому обычно используют функции, которым передают слова сразу во всех формах, а она выбирает нужную согласно числу. habrahabr.ru/post/105428 www.unicode.org/cldr/charts/latest/supplemental/la...
Sergey Lerg: Я имею ввиду не функцию, а множество таких включений в форматировании строк:
"Наш портал посещает " + gerCorrectEnding(23,"Вася","Васи","Вась") + ". Они очень дружелюбные))"
Urukhayy: нормально, но если планируется перевод на другие языки, то к этому ещё замешивается полноценная локализация. В идеале необходимо использовать какой-нибудь шаблонизатор вроде smarty, определить для него эту функцию, которая бы брала в параметрах только слово в единственном числе. А функция смотрела бы по вашей мини базе (массиву/json) какие есть формы слова во множественном числе.
И пополнять эту базу/файл вручную каждый раз когда добавляется новое слово на сайт, которое требует такого перечисления.