【问题标题】:i18n (internationalization) in symfonysymfony 中的 i18n(国际化)
【发布时间】:2011-01-09 14:16:25
【问题描述】:

我在 symfony 中使用 __('text') 结构,这样我就可以国际化了。但是我尝试在 setFlash 消息中使用它,如下所示

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

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

Fatal error: Call to undefined function __()

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

【问题讨论】:

    标签: php internationalization symfony-1.4


    【解决方案1】:

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

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

    你也可以使用:

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

    【讨论】:

      【解决方案2】:

      如果您要这样做,最好的选择是将此方法添加到您的 actions.class.php:

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

      【讨论】:

        【解决方案3】:

        对我来说效果很好!谢谢

        你也可以这样做 $this->loadHelpers(array('I18N'));在您的 ProjectConfiguration 类或 frontend|backendConfiguration 类中

        问候

        【讨论】:

        • 试过这个,它破坏了 symfony CLI。