symfony中的i18n(国际化)

时间:2011-01-09 14:16:26

标签: php internationalization symfony-1.4

我在symfony中使用__('text')构造,因此我可以进行国际化。但是我试图在setFlash消息中使用它,如下所示

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

在actions / actions.class.php中,但它给了我一个错误

Fatal error: Call to undefined function __()

我是否可以假设我不能在动作级别使用__()而只能使用模板级别?

3 个答案:

答案 0 :(得分:13)

在动作中你必须使用上下文使用__():

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

您也可以使用:

sfProjectConfiguration::getActive()->loadHelpers(array('I18N'));
$this->getUser()->setFlash('error', __('message'));

答案 1 :(得分:3)

如果要执行此操作,最好的选择是将此方法添加到actions.class.php:

public function preExecute()
  {
   sfProjectConfiguration::getActive()->loadHelpers(array('I18N'));
   parent::preExecute();
  }

答案 2 :(得分:1)

它对我很有用!谢谢

您也可以执行$ this-> loadHelpers(array('I18N'));在ProjectConfiguration类或前端| backendConfiguration类

此致