我正在使用 Symfony 2.3 和 KnpMenuBundle 。
是否可以将翻译域用于菜单项?
像这样:
$menu['management']->addChild(
'msg.user.list',
array(
'route' => 'user_list',
'translation_domain' => 'navigation'
)
);
答案 0 :(得分:4)
根据Symfony documentation和KnpMenuBundle documentation,您可以在我的代码段中设置翻译域(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