如何在Symfony中翻译整页?

时间:2019-06-05 19:22:02

标签: symfony

通常,当我使用翻译器服务时,我有一个eventsubscriber以便从用户首选项转换语言环境,并以_locale的形式存储在请求中。这适用于单词或短语,通过yaml文件作为消息或验证器。但是,假设您有隐私政策。

使用symfony 4中的翻译器服务翻译整页的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

对于整个页面来说,我经常会有一个单独的模板,或者至少会有一部分页面包含在整个页面中。

您可以从$ request获取_locale,然后基于它选择一个不同的模板。简单来说,$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作为变量传递到渲染中,并将其用作包含部分模板的参数。