【发布时间】:2018-02-10 22:26:22
【问题描述】:
简介
在我正在使用的个人项目中:
- XAMPP 与 PHP
v7.1.6 - Symfony
v3.3.8 - KnpMnenuBundle
dev-master / 2.2.x-dev(dev版本,因为它与当前的Symfony 3.3.x版本兼容,早期版本没有通过composer安装。)[link 1],[link 2],[link 3] 以便管理菜单. - 引导程序
v3.3.7 - Bootstrap 和 KnpMenuBundle 集成 [link 4]
设置
为了设置,我使用了 [2]、[3] 中的文档和代码示例 [4]。我的菜单正常工作,Bootstrap 和 KnpMenuBundle 之间的集成也可以工作。
问题
我在菜单的user profile 部分使用Logged in as myTestUserName。我想从翻译中排除这个项目,因为我正在手动获取完整的翻译字符串(代码示例 1)。
目前,即使 translation_domain 明确设置为 false,我也会在 profiler 的 Translation Messages 部分的缺失部分中得到所述菜单项。
图片
问题
如果使用KnpMenuBundle,确保特定翻译不包含在缺失部分中的正确方法是什么?
代码:示例 1
我的MenuBuilder的样本
$profile->setChildrenAttribute("class", "dropdown-menu")
->addChild('Logged in as', array('label' => $getTranslatedLoggedInAs))
->setExtra('divider_append', true)
->setExtra('translation_domain', false);
代码:示例 2
在MenuBuilder 中获取loggedInAs 翻译后的字符串
public function getTranslatedLoggedInAs()
{
$user = $this->tokenStorage->getToken()->getUser();
//dump($user);
$translated_logged_in_as = '';
$anonymous_user = 'anon.';
if ($user->getUsername() !== $anonymous_user)
{
$translated_logged_in_as = $this->translator->trans(
'layout.logged_in_as', ['%username%' => $user->getUsername()], 'FOSUserBundle'
);
}
elseif ($user->getUsername() === $anonymous_user)
{
$translated_logged_in_as = $this->translator->trans(
'layout.logged_in_as', ['%username%' => $anonymous_user], 'FOSUserBundle'
);
}
return $translated_logged_in_as;
}
结论
请指教。
感谢您的时间和知识。
【问题讨论】:
-
您是使用捆绑模板还是自定义模板来显示菜单?
-
我正在使用覆盖
KnpMenuBundle默认模板的自定义模板(如 [链接 4] 中所示),以便使用Bootstrap集成。
标签: php twitter-bootstrap symfony knpmenubundle knpmenu