Здравствуйте. Строка из кода <?php printf(_n('1 комментарий', '%1$s комментариев', $comment_count, 'tuto'), number_format_i18n($comment_count)); ?> Если комментарий один пишет "комментарий" Если больше одного пишет "комментариев" Но с цифрами 2, 3, 4 нужно выводить "комментария" Подскажите пожалуйста как это реализовать?
Направление, думаю, примерно такое нужно: PHP: switch ($comment_count) { case 2: case 3: case 4:{ $text = "комменария"; break; } default: { $text = "комменариев"; break; } } Локализация на другие языки планируется? --- Добавлено --- P.S. проверять, кстати, нужно не само число, а последнюю цифру в нем. Ну там.. 72 комментария, 19821 комментарий..
в пхп есть какой-то встроенный функционал для вот этого вот дела. Но я в нем не разобрался. Вынес для себя такой вектор: не используй формы, требующие плюральности. Использую сокращения
PHP: function declension($number, $titles = ["{DECLENSION}","{DECLENSION}","{DECLENSION}"]){ $cases = array (2, 0, 1, 1, 1, 2); if(empty($titles)) $titles = array_fill(0,3,"{DECLENSION}"); if(count($titles) < 3){ $titles += array_fill(3-count($titles), 3-count($titles), $titles[0]); } if(!$number) return $titles[2]; return $titles[ ($number%100 > 4 && $number %100 < 20) ? 2 : $cases[min($number%10, 5)] ]; }
https://php.ru/forum/threads/vyvod-pravilnyx-okonchanij-slov.56743/#post-456316 @Fell-x27, для русского вполне. Но зависит от установленной в системе версии ICU, в Yii2 над этим делом целую оболочку выстроили, которая проверяет версию icu и меняет шаблон под разные.