【发布时间】:2016-11-07 09:48:18
【问题描述】:
我一直在翻译我的应用程序,我从数据库中提取翻译并将它们添加到目录中。在 Symfony 中一切正常,例如,如果我使用 $translator->trans('TEST_TRANSLATION') 回显翻译,它会回显正确的值,所以我假设我的翻译是正确的。
现在我使用 Twig 作为我的模板引擎,它支持带有 {% trans %} 标签的翻译。遗憾的是,translator 变量的翻译在 Twig 中不起作用,在谷歌搜索了很长一段时间后,我似乎找不到有效的解决方案。
我读过关于使用$twig->addExtension() 添加扩展的内容,但我无法让它工作。
如果有人能指出我正确的方向,或者更清楚地解释如何使用带有 {% trans %} 标签的翻译器,我将不胜感激。
提前致谢。
编辑:这是我用来创建翻译器的控制器的代码:
$this->translator = new Translator('en');
$this->translator->addLoader('array', new ArrayLoader());
$this->translator->addResource('array', $translations, 'en');
echo $this->translator->trans('TEST_TRANSLATION');
$translations 变量包含一个带有翻译的数组,当使用 echo 时,它会正确显示给定的翻译。使用<p>{% trans %}TEST_TRANSLATION{% endtrans %}</p> 时如何让这个翻译器在 Twig 中工作?
编辑 2:在过去的 1.5 小时内,我一直在尝试各种东西,但没有任何效果。然而,我发现将翻译器提供给 Twig 模板的渲染函数的数组使我能够访问它的变量,我这样做如下:
return $this->render('test/transTest.html.twig', array('translator'=>$this->translator));
如果我使用上述方法,我可以通过以下方式访问 Twig 中的翻译变量:
<p>{{ translator.trans('TEST_TRANSLATION') }}</p>
使用<p>{{ translator.locale }}</p> 还可以为我提供正确的语言环境信息。
我现在很确定翻译没有问题,但我正在开发的网站使用 {% trans %} 在 Twig 中进行翻译,我仍然不知道如何让我的翻译器翻译与这些翻译一起工作。任何帮助将不胜感激。
【问题讨论】:
-
它不工作怎么办?确保您设置了正确的区域设置
{{ app.request.locale }} -
带有反式过滤器? {{'TEST_TRANSLATION'|trans}}
-
我试过 {% trans %} 标签和 {{'TEST_TRANSLATION'|trans}},语言环境也正确。似乎 Twig 无法访问我在 Controller 中创建的翻译器类。我正在寻找一种方法来使用我在 Twig 的控制器中创建的翻译器。