The MessageFormatter class
(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)
Введение
MessageFormatter - это класс позволяющий создавать склеиваемые, не зависимые от языка сообщения. Методы этого класса используются для создания всех сообщений показываемых пользователю.
Класс MessageFormatter собирает сообщение из разных фрагментов (таких как текст, числа и даты) поставляемых программой. Данный класс позволяет программе не задумываться о порядке, в каком эти фрагменты надо склеивать. Класс использует спецификации форматирования для сборки этих фрагментов в сообщение, хранящееся в виде одной строки в хранилище ресурсов. К примеру, MessageFormatter позволит напечатать фразу "Finished printing x out of y files..." таким образом, чтобы обеспечить гибкость перевода.
Ранее сообщение для конечного пользователя создавалось как законченая фраза и обрабатывалась как строка. Такая процедура приводила к проблемам локализации, поскольку структура фразы, порядок слов, формат чисел и прочее сильно отличались в разных языках. Нейтральная к языку процедура создания сообщений держит каждую часть сообщения отдельно и предоставляет ключи к данным. Используя эти ключи, класс MessageFormatter может склеивать части сообщения, преобразовывать их в соответствии с локалью и отображать в виде грамотного сообщения конечному пользователю.
MessageFormatter берет набор объектов, форматирует их и вставляет в шаблон в нужных местах. Совместно с MessageFormatter полезно использовать средства форматирования выбора (choice formatter) для обработки множественного/единственного числа, сравнения чисел и выбора из массива элементов. Обычно формат сообщения берется из ресурсов, а аргументы передаются во время выполнения.
Обзор классов
Содержание
- MessageFormatter::create — Constructs a new Message Formatter
- MessageFormatter::formatMessage — Quick format message
- MessageFormatter::format — Format the message
- MessageFormatter::getErrorCode — Get the error code from last operation
- MessageFormatter::getErrorMessage — Get the error text from the last operation
- MessageFormatter::getLocale — Get the locale for which the formatter was created
- MessageFormatter::getPattern — Get the pattern used by the formatter
- MessageFormatter::parseMessage — Quick parse input string
- MessageFormatter::parse — Parse input string according to pattern
- MessageFormatter::setPattern — Set the pattern used by the formatter