intl
PHP Manual

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 MessageFormatter create ( string $locale , string $pattern )
public static string formatMessage ( string $locale , string $pattern , array $args )
public string format ( array $args )
public int getErrorCode ( void )
public string getErrorMessage ( void )
public string getLocale ( void )
public string getPattern ( void )
public static array parseMessage ( string $locale , string $pattern , string $source )
public array parse ( string $value )
public bool setPattern ( string $pattern )
}

Содержание


intl
PHP Manual