И так, для того чтобы, например, писать: 1 минута, 2 минуты, 5 минут на прочтение статьи, вместо 1 мин., 2. мин. и 5 мин. на прочтение, нужно написать свою функцию для склонения существительных после числительных.
Для русского языка есть уже выведенное правил, которое поможет в написании такой функции и выглядит оно так:
one => n mod 10 is 1 and n mod 100 is not 11; few => n mod 10 in 2...4 and n mod 100 not in 12...14; many => n mod 10 is 0 or n mod 10 in 5...9 or n mod 100 in 11...14; other => everything else
Реализуем его в виде функции на PHP:
function myPluralsFunc($count, $plurals = []) {
$mod10 = $count % 10;
$mod100 = $count % 100;
if (is_int($count) && $mod10 == 1 && $mod100 != 11) { //one
return $plurals[0];
} else if (($mod10 > 1 && $mod10 < 5) && ($mod100 < 12 || $mod100 > 14)) { //few
return $plurals[1];
} else if ($mod10 == 0 || ($mod10 > 4 && $mod10 < 10) || ($mod100 > 10 && $mod100 < 15)) { //many
return $plurals[2];
} else { //other
return $plurals[3];
}
}
Пример вызова:
$min = 10;
echo 'На прочтение статьи ' . $min . ' ' . myPluralsFunc($min, ['минута', 'минуты', 'минут', 'минуты']);
for ($i = 1; $i < 150; $i++) {
echo $i . ' ' . myPluralsFunc($i, ['комментарий', 'комментария', 'комментариев', 'коментария']) . '<br />';
}
for ($i = 1; $i < 500; $i++) {
echo $i . ' ' . myPluralsFunc($i, ['огурец', 'огурца', 'огурцов', 'огурца']) . '<br />';
}
Для украинского языка правило сохраняется:
$min = 7; echo 'На прочитання статті ' . $min . ' ' . myPluralsFunc($min, ['хвилина', 'хвилини', 'хвилин', 'хвилини']);
devreadwrite.com



Подборка адаптивных шаблонов для вашей CMS
Статьи по
Как получить и установить HTTPS сертификат на сайта

Комментарии
Комментарии отсутствуют, Вы можете быть первым