Клас 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) для обробки множини/однини, порівняння чисел і вибору з масиву елементів. Зазвичай формат повідомлення береться із ресурсів, а аргументи передаються під час виконання.
Огляд класів
class MessageFormatter
{
/* Методы */
public __construct(string $locale, string $pattern)
public static create(string $locale, string $pattern): ?MessageFormatter
public static formatMessage(string $locale, string $pattern, array $values): string|false
public format(array $values): string|false
public getErrorCode(): int
public getErrorMessage(): string
public getLocale(): string
public getPattern(): string|false
public static parseMessage(string $locale, string $pattern, string $message): array|false
public parse(string $string): array|false
public setPattern(string $pattern): bool
}
Дивіться також
- » ICU. Документація із форматування.
- » ICU. Опис форматування повідомлень.
- » ICU. Засоби форматування повідомлень
- » ICU. Засоби форматування вибору
Зміст
- MessageFormatter::create— Створює засіб форматування повідомлень
- MessageFormatter::formatMessage— Швидко форматує повідомлення
- MessageFormatter::format— Форматує повідомлення
- MessageFormatter::getErrorCode— Повертає код помилки останньої операції
- MessageFormatter::getErrorMessage— Повертає текст помилки останньої операції
- MessageFormatter::getLocale— Повертає локаль, для якої було створено засіб форматування
- MessageFormatter::getPattern— Повертає шаблон, який використовує засіб форматування
- MessageFormatter::parseMessage— Швидко розбирає вхідний рядок
- MessageFormatter::parse— Розбирає рядок згідно з шаблоном
- MessageFormatter::setPattern— Встановлює шаблон, який використовує засіб форматування