Як зробити корректний постфікс при пагінації сторінок

Baco

Гуру форума
Регистрация
10 Мар 2013
Сообщения
134
Реакции
51
доброго часу, коллеги, на проектах частенько люблять прискурпульозитись до таких ньюансів, як корректне значення множини у іменниках, наприклад у опенкарті, на сторінках з товарами є пагінація сторінок і постфіксний припис по типу string :
"(Всього 1 сторінок з 123)"
1687969821133.png
якщо пропустити через плюралізатор, то вийде ось яка варіація, якщо у файлі helpers/general.php додати ось такі рядочки та підключити у потрібному контроллері, попередньо отримавши массив під кожну мову множин:
PHP:
/*
/   autor: vaso aKa Baco; for nulled.cc; use ex.:
/  $pagination_postfix = reNumerator(101, array('сторінка', 'сторінки', 'сторінок'));
*/

function reNumerator(int $number, array $target): string {
  $cases = [2, 0, 1, 1, 1, 2];
  return $number . ' ' . ($target ? $target[($number % 100 > 4 && $number % 100 < 20) ? 2 : $cases[min($number % 10, 5)]] : false);
}

для 101 сторінки писатиме: (всього 101 сторінка)
для 523 сторінки писатиме: (всього 523 сторінки)
для 300 сторінки писатиме: (всього 300 сторінок)

enjoy with nulled.cc
 
Последнее редактирование:
Назад
Сверху