【问题标题】:KNP Menu Bundle Translation DomainKNP 菜单捆绑翻译域
【发布时间】:2015-03-05 07:11:02
【问题描述】:
我正在使用 Symfony 2.3 和 KnpMenuBundle。
是否可以为菜单项使用翻译域?
像这样:
$menu['management']->addChild(
'msg.user.list',
array(
'route' => 'user_list',
'translation_domain' => 'navigation'
)
);
【问题讨论】:
标签:
symfony
knpmenubundle
【解决方案1】:
-
根据Symfony documentation和KnpMenuBundle documentation,您可以设置翻译域(我的sn-ps中的menu),同时在MenuBuilder类中添加菜单项:
$menu->addChild('Home', array('route' => 'homepage'))
->setExtra('translation_domain', 'menu');
-
您最好将翻译域添加到整个菜单中:
$menu = $this->factory->createItem('root')
->setExtra('translation_domain', 'menu');
-
然后在:中创建一个名为knp_menu.html.twig的文件:
app/Resources/views/menu/
-
把它放进去:
{% 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 %}部分)
-
小心翻译文件(.xliff 或其他)命名策略,例如:
{translation_domain}.{locale}.{extenstion}
例如:
menu.fa.xliff
在这个路径中:
app/Resources/translations/
-
最后一部分是:
# app/config/config.yml
knp_menu:
twig:
template: knp_menu.html.twig
- 为这个精彩的教程投票。
- 玩得开心!