Обычно, когда я использую услуги переводчика, у меня есть eventsubscriber для перевода локали из пользовательских настроек, хранящихся в запросе как _locale. Это работает для слов или фраз, через файлы yaml в качестве сообщений или валидаторов. Но представьте, что у вас есть политика конфиденциальности.
Как лучше всего перевести всю страницу, используя услуги переводчика в Symfony 4?




Для чего-то, что представляет собой целую страницу, у меня часто был бы отдельный шаблон или, по крайней мере, часть страницы, которая была бы включена в страницу целиком.
Вы можете получить _locale из $request, а затем выбрать другой шаблон на его основе. В самом простом случае, $this->twig->renderResponse("privacy.{$locale}.html.twig");, или передайте его и переключите включенный шаблон в контент на уровне страницы.
Для имен динамических шаблонов я делал что-то подобное раньше — это упрощенная версия (у меня было две переменные, а не только $place).
$tplName = "policies/privacy_{$place}.html.twig";
if (!$this->twig->exists($tplName)) {
$tplName = "policies/privacy_uk.html.twig";
$place = 'uk';
}
return $this->twig->renderResponse($tplName, ['place' => $place]);
Точно так же вы можете передать $tplName в рендеринг как переменную и использовать ее в качестве параметра для включения частичного шаблона.
Это мой код:/** * @Route("{_locale}/privacy-policy", name = "privacy_policy") * @Route() */ public function index(Request $request) { $locale = $request- >получить локаль(); return $this->render("privacy_policy/privacy_{$locale}.html.twig"); } Спасибо