Я хотел бы использовать именованные аргументы в строке, переданной 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?Может есть альтернатива?