i18n (интернационализация) в Symfony - PullRequest
3 голосов
/ 09 января 2011

Я использую конструкцию __('text') в Symfony, чтобы потом можно было интернационализировать. Однако я попытался использовать его в сообщении setFlash следующим образом

$this->getUser()->setFlash('error', __('message'));

в actions / actions.class.php, но выдает ошибку

Fatal error: Call to undefined function __()

Так я должен предположить, что я не могу использовать __() на уровне действий, а только на уровне шаблона?

Ответы [ 3 ]

13 голосов
/ 09 января 2011

В действии вы должны использовать __ (), используя контекст:

echo $this->getContext()->getI18N()->__('message');

Вы также можете использовать:

sfProjectConfiguration::getActive()->loadHelpers(array('I18N'));
$this->getUser()->setFlash('error', __('message'));
3 голосов
/ 23 февраля 2011

Лучший вариант для этого - добавить этот метод в ваши actions.class.php:

public function preExecute()
  {
   sfProjectConfiguration::getActive()->loadHelpers(array('I18N'));
   parent::preExecute();
  }
1 голос
/ 19 января 2011

Это прекрасно сработало для меня!Спасибо

Вы также можете сделать $ this-> loadHelpers (array ('I18N'));в вашем классе ProjectConfiguration или классах внешнего интерфейса | backendConfiguration

С уважением

...