2011-01-09 118 views
3

我在symfony中使用__('text')構造,因此我可以實現國際化。不過,我曾嘗試在setFlash消息使用它如下symfony中的i18n(國際化)

$this->getUser()->setFlash('error', __('message')); 
在行動/的actions.class.php

,但它給我一個錯誤

Fatal error: Call to undefined function __() 

所以我是假設我不能在動作級別使用__(),但只使用模板級別?

回答

13

在動作必須使用__()使用上下文:

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

您還可以使用:

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

這對我來說真是棒極了!謝謝

你也可以做$ this-> loadHelpers(array('I18N'));在ProjectConfiguration類或前端| backendConfiguration類

問候

+0

嘗試這樣做,它打破了symfony CLI。 – flocki 2012-06-26 07:40:15

3

最好的選擇,如果你是做,這是此方法添加到您的actions.class.php:

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