2012-01-03 143 views
0

我已經實施了新的樹枝延伸,並且有一些文字需要翻譯。Symfony2 +樹枝:將標籤轉換爲新的樹枝延伸

不幸的是,當我使用code label它顯示爲一個示例文本。

我的意思是,當樹枝使這個下面的擴展,它顯示:5 entity.years,而不是5 years例如:

class MyExtension extends \Twig_Extension { 
public function getFilters() 
{ 
    return array(
     'myextension' => new \Twig_Filter_Method($this, 'myextension'), 
    ); 
} 

public function myextension ($myId) 
{ 
     // .... 
     // Some operations concerning $myId... 
     // .... 
    if($myId!=0) { 
     $res = $myId. ' '.'entity.year'; 
    } else { 
     $res = ($months == 0 ? $days.'entity.days' : $months.'entity.months'); 
    } 

    return $res; 
} 
} 

entity.yearsentity.monthsentity.days被定義爲我的翻譯文件夾中。

回答

1

Injecttranslator服務進入您的擴展並使用它。例如:

class MyExtension extends \Twig_Extension 
{ 
    private $translator; 

    public function __construct(Translator $translator) 
    { 
     $this->translator = $translator; 
    } 

    // ... 

    public function myMethod() 
    { 
     return $this->translator->trans('my_string'); 
    } 
} 
+0

謝謝。但我有錯誤:參數1傳遞給MySpace \ MyBundle \ Extension \ MyExtension :: __構造()必須是一個實例翻譯,沒有給出,在'應用程序/緩存/ dev/appDevDebugProjectContainer.php' – Sam 2012-01-03 09:16:04

+0

似乎你忘了[依賴注入](http://symfony.com/doc/current/book/service_container.html#referencing-injecting-services)部分。 – 2012-01-03 09:20:53

+0

我可以加入我的服務: 參數: - 翻譯.loader 是什麼? – Sam 2012-01-03 09:23:59