Класс MessageFormatter

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Введение

MessageFormatter - это класс, позволяющий создавать склеиваемые, независимые от языка сообщения. Методы этого класса используются для создания всех сообщений, показываемых пользователю.

Класс MessageFormatter собирает сообщение из разных фрагментов (таких как текст, числа и даты), поставляемых программой. Данный класс позволяет программе не задумываться о том, в каком порядке эти фрагменты надо склеивать. Класс использует спецификации форматирования для сборки этих фрагментов в сообщение, хранящееся в виде одной строки в хранилище ресурсов. К примеру, MessageFormatter позволит напечатать фразу "Finished printing x out of y files..." таким образом, чтобы обеспечить гибкость перевода.

Ранее сообщение для конечного пользователя создавалось как законченная фраза и обрабатывалась как строка. Такая процедура приводила к проблемам локализации, поскольку структура фразы, порядок слов, формат чисел и прочее сильно отличались в разных языках. Нейтральная к языку процедура создания сообщений держит каждую часть сообщения отдельно и предоставляет ключи к данным. Используя эти ключи, класс MessageFormatter может склеивать части сообщения, преобразовывать их в соответствии с локалью и отображать в виде грамотного сообщения конечному пользователю.

MessageFormatter берет набор объектов, форматирует их и вставляет в шаблон в нужных местах. Совместно с MessageFormatter полезно использовать средства форматирования выбора (choice formatter) для обработки множественного/единственного числа, сравнения чисел и выбора из массива элементов. Обычно формат сообщения берётся из ресурсов, а аргументы передаются во время выполнения.

Обзор классов

classMessageFormatter {
public__construct(string$locale, string$pattern)
publicstaticcreate(string$locale, string$pattern): ?MessageFormatter
publicstaticformatMessage(string$locale, string$pattern, array$values): string|false
publicformat(array$values): string|false
publicgetErrorCode(): int
publicgetLocale(): string
publicstaticparseMessage(string$locale, string$pattern, string$message): array|false
publicparse(string$string): array|false
publicsetPattern(string$pattern): bool
}

Содержание

To Top