Twig翻译渲染视图的全文

时间:2016-12-12 15:05:13

标签: php symfony twig

使用Twig我渲染一个特定的视图。我需要将这个视图翻译成我选择的语言。我使用以下方式显示视图:

return $this->setup->twig->display($view, $params);

其中$view*.html.twig模板的名称,而$params是一个包含我需要传递的参数的数组。

但是,如果我想在显示之前翻译模板,我该怎么做呢?

目前我已经为不同语言添加了.yml文件,并且我还使用yml文件中相应的相应值替换了视图中的文本。

除了其他一切,我还将Twig翻译器加载到与项目其余部分分开的文件中。它具有以下代码:

require dirname(__DIR__) . '/vendor/autoload.php';

use Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\Loader\ArrayLoader;

class Translation
{
    public $translator;

    public function translator()
    {
        $this->translator = new Translator('fr_FR');
        $this->translator->addLoader('array', new ArrayLoader());
        $this->translator->addResource('array', array(
            'Symfony is great!' => 'J\'aime Symfony!',
        ), 'fr_FR');

        var_dump($this->translator->trans('Symfony is great!'));
    }
}

$show = new Translation;
$show->translator();

它确实显示了翻译。

不过,我不知道如何将所有东西连在一起......

1 个答案:

答案 0 :(得分:1)

您是否尝试在渲染树枝视图之前设置区域设置?

public function exampleAction(Request $request) {
    $locale = 'de'; // Set the language
    $request->setLocale($locale);

    $content = $this->renderView($view, $params);

    // Maybe return to default locale....
}