Symfony2 + Twig:将标签转换为新的树枝扩展

发布于 2024-12-23 15:52:46 字数 812 浏览 1 评论 0原文

我已经实现了一个新的树枝扩展,并且我有一些必须翻译的文本。

不幸的是,当我使用代码标签时,它显示为示例文本。

我的意思是,当 twig 渲染以下扩展时,它会显示: 5entity.years 而不是 5 年 例如:

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 被定义到我的翻译文件夹中。

I have implemented a new twig extension and I have some text which had to be translated.

Unfortunately when I use a code label it appears as a sample text.

I mean when twig render this following extension, it displays: 5 entity.years instead of 5 years for example:

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;
}
}

Where entity.years, entity.months, entity.days is defined into my translations folder.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟雨凡馨 2024-12-30 15:52:46

注入 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');
    }
}

Inject the translator service into your extension and use it. For example:

class MyExtension extends \Twig_Extension
{
    private $translator;

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

    // ...

    public function myMethod()
    {
        return $this->translator->trans('my_string');
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文