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 {
/* Методы */
public __construct ( string $locale , string $pattern )
public static create ( string $locale , string $pattern ) : MessageFormatter
public static formatMessage ( string $locale , string $pattern , array $args ) : string
public format ( array $args ) : string
public getErrorCode ( ) : int
public getErrorMessage ( ) : string
public getLocale ( ) : string
public getPattern ( ) : string
public static parseMessage ( string $locale , string $pattern , string $source ) : array
public parse ( string $value ) : array
public setPattern ( string $pattern ) : bool
}

Содержание