我正在使用Symfony 2.3和KnpMenuBundle。
是否可以为菜单项使用翻译域?
像这样:
$menu['management']->addChild(
'msg.user.list',
array(
'route' => 'user_list',
'translation_domain' => 'navigation'
)
);
我正在使用Symfony 2.3和KnpMenuBundle。
是否可以为菜单项使用翻译域?
像这样:
$menu['management']->addChild(
'msg.user.list',
array(
'route' => 'user_list',
'translation_domain' => 'navigation'
)
);
根据Symfony 文档和KnpMenuBundle 文档,您可以设置翻译域(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