2

介绍

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

  • XAMPP 与 PHPv7.1.6
  • Symfonyv3.3.8
  • KnpMnenuBundle dev-master / 2.2.x-devdev版本因为它与当前Symfony 3.3.x版本兼容,早期版本没有通过安装composer。)[链接1][链接2][链接3]为了管理菜单。
  • 引导程序v3.3.7
  • Bootstrap 和 KnpMenuBundle 集成[链接 4]

配置

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

问题

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

目前,即使translation_domain明确设置为,false我也会Translation Messagesprofiler.

图片

问题

在使用的情况下,确保特定翻译不包含在缺失部分中的正确方法是什么KnpMenuBundle

代码:样品 1

我的样本MenuBuilder

$profile->setChildrenAttribute("class", "dropdown-menu")
    ->addChild('Logged in as', array('label' => $getTranslatedLoggedInAs))
    ->setExtra('divider_append', true)
    ->setExtra('translation_domain', false);

代码:样本 2

获取loggedInAs翻译的字符串MenuBuilder

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;
}

结论

请指教。

感谢您的时间和知识。

4

1 回答 1

2

我想您在 block 的 [link 4] 中有错误labeltranslation_domain不检查false标签并以任何方式翻译。

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

在https://github.com/KnpLabs/KnpMenuBundle/blob/master/Resources/views/menu.html.twig中查看它是如何工作的KnpMenuBundle

{% 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 %}
于 2017-09-02T13:26:16.607 回答