Я хотел бы использовать именованные аргументы в строке, переданной в MessageFormater, например
$fmt = new MessageFormatter("en_US", "My name id {my_name}");
$fmt->format(array('my_name' => 'John'));
Когда я запускаю этот код, я получаю сообщение об ошибке:
$fmt->getErrorMessage() returns
Ошибка форматирования числа: U_ILLEGAL_ARGUMENT_ERROR.
В то время как
$fmt = new MessageFormatter("en_US", "My name id {0}");
$fmt->format(array(0 => 'John'));
работает хорошо.
Веб-сайт icu-project сообщает, что именованные аргументы поддерживаются, начиная с ICU 3.8 (см. здесь), и я использую 4.2.1
Где единорог? PHP не поддерживает именованные аргументы для MessageFormatter? Может есть альтернатива?