2015-01-07 4 views
0

Я использую Symfony 2.3 и KnpMenuBundle.KNP Menu Bundle Translation Domain

Можно ли использовать перевод домена для пунктов меню?

Как это:

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

ответ

1

Вы должны редактировать свои шаблоны меню. Есть некоторые хорошие documentation о том, как это сделать.

+0

Большое спасибо это решить мою проблему – smartcoderx

+1

URL-адрес не доступен больше, но вы можете получить его здесь: http://symfony.com/doc/master/bundles/KnpMenuBundle/i18n.html –

2
  1. Согласно Symfony documentation и KnpMenuBundle documentation, вы можете установить домен перевода (menu в моих фрагментах), в то время как добавление пунктов меню в вашем MenuBuilder классе:

    $menu->addChild('Home', array('route' => 'homepage')) 
        ->setExtra('translation_domain', 'menu'); 
    
  2. Вы можете лучше хотите добавить вместо этого переведите домен во все меню:

    $menu = $this->factory->createItem('root') 
          ->setExtra('translation_domain', 'menu'); 
    
  3. Затем создайте файл n AMED 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-Голосуйте это хороший учебник.
  8. Удачи!