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

How to exclude certain string from showing up in missing translations using KnpMenuBundle and Symfony3

简介

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

正在设置

为了设置,我使用了 [2]、[3] 中的文档和代码示例 [4]。我的菜单有效,BootstrapKnpMenuBundle 之间的集成也有效。

问题

我在菜单的 user profile 部分使用 Logged in as myTestUserName。我想从翻译中排除此项,因为我正在手动获取完整的翻译字符串(代码示例 1)。

目前,即使 translation_domain 明确设置为 false,我也会在 profilerTranslation 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;
}

结论

请指教

感谢您的时间和知识。

我想你在块 label 中的 [link 4] 中有错误。 translation_domain 未检查 false 并且标签以任何方式翻译。

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

看看它在 KnpMenuBundle https://github.com/KnpLabs/KnpMenuBundle/blob/master/Resources/views/menu.html.twig

中的工作原理
{% block label %}
    {%- set translation_domain = item.extra('translation_domain', 'messages') -%}
    {%- set label = item.label -%}
    {%- if translation_domain is not same as(false) -%}
        {%- set label = label|trans(item.extra('translation_params', {}), translation_domain) -%}
    {%- endif -%}
    {%- if options.allow_safe_labels and item.extra('safe_label', false) %}{{ label|raw }}{% else %}{{ label }}{% endif -%}
{% endblock %}