0

我正在使用Symfony 2.3KnpMenuBundle

是否可以为菜单项使用翻译域?

像这样:

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

1 回答 1

5
  1. 根据Symfony 文档KnpMenuBundle 文档,您可以设置翻译域(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. 投票给这个不错的教程。
  8. 玩得开心!
于 2017-03-06T15:22:41.953 回答