В моем личном проекте я использую:
v7.1.6
v3.3.8
dev-master / 2.2.x-dev
(dev
версия, потому что она совместима с текущей Symfony 3.3.x
версия, более ранние версии не устанавливались через composer
.) [ссылка 1], [ссылка 2], [ссылка 3] для того, чтобы управлять меню.v3.3.7
Для настройки я использовал документацию в [2], [3] и примеры кода [4]. Мое меню работает, интеграция между Bootstrap
а также KnpMenuBundle
тоже работает.
я использую Logged in as myTestUserName
в user profile
часть меню. И я хотел бы исключить этот элемент из перевода, поскольку я получаю полную переведенную строку вручную (пример кода 1).
На данный момент даже с translation_domain
явно установлен на false
я получил указанный пункт меню в отсутствующем разделе Translation Messages
раздел в profiler
,
Как правильно убедиться, что конкретные переводы не включены в отсутствующий раздел в случае использования KnpMenuBundle
?
образец моего MenuBuilder
$profile->setChildrenAttribute("class", "dropdown-menu")
->addChild('Logged in as', array('label' => $getTranslatedLoggedInAs))
->setExtra('divider_append', true)
->setExtra('translation_domain', false);
получение 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] в блоке 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 %}
Других решений пока нет …