Knp菜单翻译

时间:2016-04-08 08:52:35

标签: symfony internationalization knpmenubundle

根据knp,this应该是如何轻松地将翻译添加到菜单中的。它不适合我。 我的菜单类:

public function createMainMenuLeft(array $options)
    {
        $menuLeft = $this->factory->createItem('root', array('childrenAttributes' => array('class' => 'left')));

        $menuLeft->addChild('test', array('route' => 'test_route'))
            ->setExtra('translation_domain', 'AppBundle');

        return $menuLeft;
    }

在AppBundle / Resources / translations / messages.en.yml中我有

test: nothing

但是,我的菜单仍然有标签'test'而不是翻译文件中的值。我在这里错过了什么吗?

我的语言区设置在config.ymlen

2 个答案:

答案 0 :(得分:2)

经过一些研究后,我发现了在捆绑文档中的方法,而不是来自symfony的文档。模板必须被覆盖。 Source

答案 1 :(得分:0)

此解决方案的问题在于,您必须为每个菜单项设置translation_domain

我扩展了@KnpMenu/menu.html.twig模板,并删除了第4行和第6-8行以禁用翻译:

{% extends '@!KnpMenu/menu.html.twig' %}

{% block label %}
    {%- set label = item.label -%}
    {%- if options.allow_safe_labels and item.extra('safe_label', false) %}{{ label|raw }}{% else %}{{ label }}{% endif -%}
{% endblock %}