2016-12-12 97 views
0

使用小枝我渲染一个特定的视图。我需要将这种观点转化为我选择的语言。我显示使用视图:小枝翻译渲染视图的整个文本

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

,看一下http://symfony.com/doc/current/translation.html –

+0

的Symfony已经有了,你需要,只是用它,在链接上面看为“在翻译模板”一节。 – yceruto

回答

1

你尝试渲染你的树枝视图之前设置语言环境?

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

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

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

谢谢,这个代码背后的想法解决了我的许多问题。我现在唯一面临的问题是,当我更改语言环境语言后,我尝试呈现视图,但未翻译。然而,如果我用一个字符串使用trans()函数,例如var_dump($ this-> translator-> trans('Symfony is great!'));然后,它被翻译成 – Dimentica

+0

你能告诉我你的模板吗?您是否在模板中使用反式或透明来获取您的消息翻译?例如:{{'dummy.text'| trans}} –

+0

我制作了一个测试模板,其中我只有{%trans%}很棒{%endtrans%},并且在我的messages.it.yml文件中我很棒:\t “Supremo” – Dimentica