Как реализовать поддержку именованных аргументов ICU MessageFormatter из PHP 5.5 в PHP 5.3

В PHP ‹ 5.5 нет поддержки строки Intl MessageFormatter с именованными аргументами. Для некоторых языков и строк это приводит к очень трудным для понимания строкам перевода.

PHP 5.4 ( PHP ‹ 5.5 )

$Formater = new MessageFormatter($locale, "{0} inhabit {1}.");

print $Formater->format(array('Wookies', 'Kashyyyk'));

по сравнению с именованными аргументами PHP 5.5

$Formater = new MessageFormatter($locale, "{raceName} inhabit {planetName}.");

print $Formater->format(array('raceName'=>'Wookies', 'planetName=>'Kashyyyk'));

Наше программное обеспечение должно поддерживать версии PHP от 5.3 -> до последней, но я хотел бы упростить работу переводчиков.

Может ли кто-нибудь представить способ реализации именованных аргументов в MessageFormatter на PHP ‹ 5.5?


person MTJ    schedule 30.09.2013    source источник
comment
Я работаю над этим для фреймворка Yii2, но сейчас застрял с заменой строк: >github.com/yiisoft/yii2/pull/917/. Идея состоит в том, чтобы преобразовать именованные аргументы в позиционные.   -  person Sam Dark    schedule 10.10.2013


Ответы (1)


pecl install intl-beta у меня работало, но это было почти год назад. Не знаю, как сейчас. Может быть просто pecl install intl

person Zebooka    schedule 25.11.2013