KNP菜单包翻译域

时间:2015-01-07 11:38:04

标签: symfony knpmenubundle

我正在使用 Symfony 2.3 KnpMenuBundle

是否可以将翻译域用于菜单项?

像这样:

$menu['management']->addChild(
    'msg.user.list',
    array(
        'route' => 'user_list',
        'translation_domain' => 'navigation'
    )
);

1 个答案:

答案 0 :(得分:4)

  1. 根据Symfony documentationKnpMenuBundle documentation,您可以在我的代码段中设置翻译域(menu),同时在MenuBuilder课程中添加菜单项:

    $menu->addChild('Home', array('route' => 'homepage'))
         ->setExtra('translation_domain', 'menu');
    
  2. 您最好将翻译域添加到整个菜单中:

    $menu = $this->factory->createItem('root')
                 ->setExtra('translation_domain', 'menu');
    
  3. 然后在:

    中创建名为knp_menu.html.twig的文件
    app/Resources/views/menu/
    
  4. 并将其放入其中:

    {% extends 'knp_menu.html.twig' %}
    
    {% block label %}
        {% if options.allow_safe_labels and item.getExtra('safe_label', false) %}
            {{ item.label | raw | trans(item.getExtra('translation_params', {}), item.getExtra('translation_domain', 'menu'))}}
        {% else %}
            {{ item.label | trans(item.getExtra('translation_params', {}), item.getExtra('translation_domain', 'menu')) }}
        {% endif %}
    {% endblock %}
    

    (如果该文件已存在,只需替换{% block label %}{% endblock %}部分)

  5. 小心拥有翻译文件(.xliff或其他)命名策略,如:

    {translation_domain}.{locale}.{extenstion}
    

    例如:

    menu.fa.xliff
    

    在这条道路上:

    app/Resources/translations/
    
  6. 最后一部分是:

    # app/config/config.yml
    knp_menu:
        twig:
            template: knp_menu.html.twig
    
  7. Up-Vote这个很好的教程。
  8. 玩得开心!