Php 如何使用KnpMenuBundle和Symfony3排除某些字符串在缺少的翻译中出现 介绍

Php 如何使用KnpMenuBundle和Symfony3排除某些字符串在缺少的翻译中出现 介绍,php,twitter-bootstrap,symfony,knpmenubundle,knpmenu,Php,Twitter Bootstrap,Symfony,Knpmenubundle,Knpmenu,在我的个人项目中,我使用: 带有PHP的XAMPPv7.1.6 Symfonyv3.3.8 KnpMnenuBundledev master/2.2.x-dev(dev版本,因为它与当前的Symfony 3.3.x版本兼容,早期版本没有通过composer安装),以便管理菜单 引导v3.3.7 Bootstrap和KnpMenuBundle集成 设置 为了进行设置,我使用了[2]、[3]和代码示例[4]中的文档。我的菜单正在运行,集成Bootstrap和KnpMenuBundle也可以运行

在我的个人项目中,我使用:

  • 带有PHP的XAMPP
    v7.1.6
  • Symfony
    v3.3.8
  • KnpMnenuBundle
    dev master/2.2.x-dev
    dev
    版本,因为它与当前的
    Symfony 3.3.x
    版本兼容,早期版本没有通过
    composer
    安装),以便管理菜单
  • 引导
    v3.3.7
  • Bootstrap和KnpMenuBundle集成
设置 为了进行设置,我使用了[2]、[3]和代码示例[4]中的文档。我的菜单正在运行,集成
Bootstrap
KnpMenuBundle
也可以运行

问题 我正在使用菜单的
用户配置文件
部分中的
以myTestUserName
身份登录。我想从翻译中排除此项,因为我将手动获取完整的翻译字符串(代码示例1)

目前,即使将
translation\u domain
显式设置为
false
,我在
档案器
中的
翻译消息
部分的缺失部分也会看到所述菜单项

图像

问题 使用
KnpMenuBundle
时,确保特定翻译不包含在缺失部分的正确方法是什么

代码:示例1 my
MenuBuilder的示例

$profile->setChildrenAttribute("class", "dropdown-menu")
    ->addChild('Logged in as', array('label' => $getTranslatedLoggedInAs))
    ->setExtra('divider_append', true)
    ->setExtra('translation_domain', false);
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;
}
代码:示例2 在
MenuBuilder

$profile->setChildrenAttribute("class", "dropdown-menu")
    ->addChild('Logged in as', array('label' => $getTranslatedLoggedInAs))
    ->setExtra('divider_append', true)
    ->setExtra('translation_domain', false);
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;
}
结论 请告知


感谢您的时间和知识。

我想您在block
标签中的[link 4]有错误<代码>翻译\u域
未检查
false
,标签以任何方式翻译

{% block label %}{{ item.label|trans(
    item.getExtra('translation_params', {}),
    item.getExtra('translation_domain')
) }}{% endblock %}
KnpMenuBundle


您是使用捆绑模板还是自定义模板来显示菜单?我使用的自定义模板(如[link 4]所示)覆盖
KnpMenuBundle
默认模板,以便使用
Bootstrap
集成。谢谢@Max P。您的回答是100%正确的。我将原始的
标签块
复制到覆盖模板,现在没有丢失的翻译。