Хотелось бы почаще видеть в интерфейсах надписи на нормальном человеческом языке, а не на корявом техническом. Тем более, что сделать это не так уж и сложно ;-)
Проблема
Пример технического языка:
Найдено товаров: 1.
Найдено товаров: 2.
Найдено товаров: 5.
Придраться не к чему, но смотрится сухо.
Пример корявого языка:
Найдено 1 товаров.
Найдено 2 товаров.
Найдено 5 товаров.
Налицо проблемы с окончаниями.
Решение
Окончание слов, связанных с числительными зависит от самих числительных. Если они оканчиваются на 1 — одно окончание, на 2, 3 и 4 — второе, на 5, 6, 7, 8, 9 и 0 — третье.
Пример на нормальном человеческом языке:
Найден 1 товар.
Найдено 2, 3, 4 товара.
Найдено 5, 6, 7, 8, 9, 0 товаров.
Правда, есть одно исключение. Числительные, оканчивающиеся на 11, 12, 13 и 14 имеют окончания третьего типа.
Найдено 11, 12, 13, 14 товаров.
Пример PHP-кода:
function postfix($number, $one, $two, $five)
{
$last = substr($number, -1);
$penult = strlen($number) > 1? substr($number, -2, 1): 0;
if($penult != 1 && $last == 1)
$postfix = $one;
elseif($penult != 1 && $last > 1 && $last < 5)
$postfix = $two;
else
$postfix = $five;
return($postfix);
}
То же самое на JavaScript:
function postfix(number, one, two, five)
{
number = number.toString();
var last = number.substr(-1);
var penult = number.length() > 1? number.substr(-2, 1): 0;
var postfix;
if(penult != 1 && last == 1)
postfix = one;
else if(penult != 1 && last > 1 && last < 5)
postfix = two;
else
postfix = five;
return(postfix);
}
Пользуйтесь на здоровье! ;-)
Комментарии

Здравствуйте!
У вас есть вопрос или вам нужна помощь?
Спасибо, ваш вопрос принят.
Ответ на него появится на сайте в ближайшее время.