【问题标题】:KNP Menu Bundle Translation DomainKNP 菜单捆绑翻译域
【发布时间】:2015-03-05 07:11:02
【问题描述】:

我正在使用 Symfony 2.3KnpMenuBundle

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

像这样:

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

【问题讨论】:

    标签: symfony knpmenubundle


    【解决方案1】:
    1. 根据Symfony documentationKnpMenuBundle documentation,您可以设置翻译域(我的sn-ps中的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. 玩得开心!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      • 2015-06-02
      • 2018-06-17
      • 2019-03-19
      • 2020-11-24
      • 1970-01-01
      相关资源
      最近更新 更多