Как исключить появление определенной строки в пропущенных переводах, используя KnpMenuBundle и Symfony3

Вступление

В моем личном проекте я использую:

  • XAMPP с PHP v7.1.6
  • Symfony v3.3.8
  • KnpMnenuBundle dev-master / 2.2.x-dev (dev версия, потому что она совместима с текущей Symfony 3.3.x версия, более ранние версии не устанавливались через composer.) [ссылка 1], [ссылка 2], [ссылка 3] для того, чтобы управлять меню.
  • начальная загрузка v3.3.7
  • Интеграция Bootstrap и KnpMenuBundle [ссылка 4]

Настройка

Для настройки я использовал документацию в [2], [3] и примеры кода [4]. Мое меню работает, интеграция между Bootstrap а также KnpMenuBundle тоже работает.

проблема

я использую Logged in as myTestUserName в user profile часть меню. И я хотел бы исключить этот элемент из перевода, поскольку я получаю полную переведенную строку вручную (пример кода 1).

На данный момент даже с translation_domain явно установлен на false я получил указанный пункт меню в отсутствующем разделе Translation Messages раздел в profiler,

Изображений

Вопрос

Как правильно убедиться, что конкретные переводы не включены в отсутствующий раздел в случае использования 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;
}

Заключение

Пожалуйста, порекомендуйте.

Спасибо за ваше время и знания.

1

Решение

Я полагаю, у вас есть ошибка в [ссылка 4] в блоке label, 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 %}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]