Symfony2 + Twig: переведите метку в новое расширение для веток - PullRequest
0 голосов
/ 03 января 2012

Я реализовал новое расширение ветки, и у меня есть текст, который нужно было перевести.

К сожалению, когда я использую 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.years, entity.months, entity.days определено в моей папке переводов.

1 Ответ

1 голос
/ 03 января 2012

Внедрите услугу translator в ваш добавочный номер и используйте его. Например:

class MyExtension extends \Twig_Extension
{
    private $translator;

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

    // ...

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