Привет, коллеги-разработчики! Сегодня мы окунемся в увлекательный мир форматирования сообщений PHP с использованием класса MessageFormatter
. Если вы хотите повысить уровень своей игры по локализации и обеспечить удобство работы пользователям по всему миру, вы попали по адресу. В этой статье мы рассмотрим несколько методов и примеры кода, которые помогут вам использовать возможности MessageFormatter
. Давайте начнем!
- Создание экземпляра MessageFormatter
Для начала создадим экземпляр MessageFormatter
:
$message = "Hello, {name}! You have {count, plural, one{# notification} other{# notifications}}.";
$formatter = new MessageFormatter('en_US', $message);
В этом примере мы используем английский язык (США) и шаблон сообщения, включающий заполнители для динамического контента.
- Форматирование сообщений
После создания экземпляра MessageFormatter
вы можете форматировать сообщения, передавая соответствующие значения заполнителям:
$name = "John";
$count = 3;
$formattedMessage = $formatter->format(['name' => $name, 'count' => $count]);
echo $formattedMessage;
Вывод будет таким: «Привет, Джон! У вас 3 уведомления». Обратите внимание, как значения заполнителей заменяются в форматированном сообщении.
- Множественное число
Множественное число — обычное требование при локализации. MessageFormatter
предоставляет мощный синтаксис для обработки форм множественного числа:
$message = "{count, plural, one{You have one notification.} other{You have # notifications.}}";
$formatter = new MessageFormatter('en_US', $message);
$count = 1;
echo $formatter->format(['count' => $count]); // Output: "You have one notification."
$count = 5;
echo $formatter->format(['count' => $count]); // Output: "You have 5 notifications."
- Выбор параметров
Иногда вам нужно выбрать конкретный вариант на основе значения. MessageFormatter
позволяет легко это сделать:
$message = "{gender, select, male{He is a programmer.} female{She is a programmer.} other{They are programmers.}}";
$formatter = new MessageFormatter('en_US', $message);
$gender = 'male';
echo $formatter->format(['gender' => $gender]); // Output: "He is a programmer."
$gender = 'female';
echo $formatter->format(['gender' => $gender]); // Output: "She is a programmer."
- Форматирование валюты
Если вы имеете дело с форматированием денежных единиц, MessageFormatter
поможет вам:
$message = "The total amount is {amount, number, currency}";
$formatter = new MessageFormatter('en_US', $message);
$amount = 42.99;
echo $formatter->format(['amount' => $amount]); // Output: "The total amount is $42.99."
- Форматирование даты и времени
Форматирование даты и времени в разных регионах упрощается с помощью MessageFormatter
:
$message = "Today is {date, date, short} and the time is {time, time, medium}";
$formatter = new MessageFormatter('en_US', $message);
$date = new DateTime();
$time = new DateTime();
echo $formatter->format(['date' => $date, 'time' => $time]);
В результате будет выведено что-то вроде: «Сегодня 14.03.24, время 14:30:45».
Поздравляем! Теперь вы узнали о нескольких полезных методах работы с MessageFormatter
в PHP. С помощью этих методов вы можете создавать динамические и локализованные сообщения, которые обеспечат удобство работы для пользователей по всему миру. Так что давайте, попробуйте и поднимите свою игру по локализации на новый уровень!