«Моя территория мысли»

Склонение слов на PHP

  • Разработка

  • 6 Март 2017

  • 124

  • 0

Склонение слов на PHP

Продолжая тему прошлой статьи, хотелось бы раскрыть еще одну сторону PHP, тем самым избавить вас от весьма глупого занятия, а имено склонять слова, используя не пойми что и не пойми как. Да вы не ослышались, PHP действительно имеет средства, по средствам которых можно склонять слова, и работает это изумительно. В этой статье мы и познакомимся с таким инструментом ближе.

PHP имеет мощнейший инструмент отвечающий за интернационализацию вашего приложения, а сей процесс был всегда не прост, сколько костылей было написано, и сколько костылей еще родится остается только гадать. И так перед нами стоит задача, допустим у нас есть корзина с товарами, где нужно человеческим языком показать пользователю, сколько у него товаров в той самой корзине. Конечно можно пойти простым путем, и написать, что-то вроде такого:

Товаров в корзине: 21

Тут я даже не буду спорить, это очень хороший вариант, и наверное я бы его использовал сам, но если маркетолог говорит нужно, значит нужно, как в том фильме «Надо Федя, надо!», ну раз надо, будем решать. Что приходит первое на ум? Ну собственно я боюсь даже представить, а ведь все решается буквально одной строкой:

echo msgfmt_format_message('ru_RU', 'В корзине {n, plural, one{# товар} few{# товара} many{# товаров} other{# товара}}', ['n' => 21]);

Представьте себе, больше ни чего, ни каких костылей, ни какого сомнительно кода скопированного не пойми от куда, все действительно настолько просто. Функция принимает три параметра, в первом мы указываем язык, во втором мы строим шаблон, в третьем мы указываем массив в который обязательно передаем значение с ключом [n].

Как правило многие современные фреймворки просто используют это расширение, и пишут по верх него обертку, возможно вы думали что это заслуги фреймворков, но нет. Да и заслуга ли самого PHP? Конечно огромное спасибо за то, что внедрили это в язык, но вообще это C/C++ библиотека, с которой можно познакомится тут, особенно важно изучить синтаксис, тогда это действительно будет ваш level up.

Настоятельно рекомендую изучить это расширение из официальной документации.

Функции которые были использованы в этом уроке:
msgfmt_format_message

Спасибо за внимание!

Комментарии