Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在我的小树枝模板中使用Symfony转换器?_Php_Symfony_Twig - Fatal编程技术网

Php 如何在我的小树枝模板中使用Symfony转换器?

Php 如何在我的小树枝模板中使用Symfony转换器?,php,symfony,twig,Php,Symfony,Twig,我一直在翻译我的应用程序,我从数据库中提取翻译并将其添加到目录中。在Symfony中,一切都可以工作,例如,如果我使用$translator->trans('TEST_translation')回显翻译,它会回显正确的值,因此我假设我的翻译是正确的 现在我使用Twig作为模板引擎,它支持带有{%trans%}标记的翻译。遗憾的是,translator变量的翻译在Twig中不起作用,在谷歌搜索了很长一段时间后,我似乎找不到有效的解决方案。 我读过关于使用$twig->addExtension()添

我一直在翻译我的应用程序,我从数据库中提取翻译并将其添加到目录中。在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时,它会正确显示给定的翻译。当使用
{%trans%}TEST\u TRANSLATION{%endtrans%}

时,如何使此转换器在Twig中工作

编辑2:在过去的1,5个小时里,我一直在尝试各种各样的东西,但都不管用。但是,我发现,将转换器提供给Twig模板的render函数的数组使我能够访问其变量,我的操作如下:

return $this->render('test/transTest.html.twig', array('translator'=>$this->translator));
如果我使用上述方法,我可以通过以下操作访问Twig中的转换变量:

<p>{{ translator.trans('TEST_TRANSLATION') }}</p>
{{translator.trans('TEST_TRANSLATION')}

使用
{{translator.locale}}

也可以为我提供正确的语言环境信息


我现在很确定翻译没有问题,但是我正在开发的网站使用{%trans%}在Twig中进行翻译,我仍然不知道如何让我的翻译与这些翻译一起工作。任何帮助都将不胜感激。

Translation没有在twig中使用标签
{%trans%}
或过滤器
|trans
,因为您使用的不是Symfony的默认translator服务,而是您刚刚实例化的服务

您可以将翻译从数据库加载到带有标记的容器中声明的自定义加载程序服务中,以便translator服务能够识别它们


看到这个和(相当旧的)建议了吗?它怎么不起作用?确保使用trans筛选器设置了正确的区域设置
{{app.request.locale}
?{{'TEST_TRANSLATION'| trans}}我已经尝试了{%trans%}标记和{{'TEST_TRANSLATION'| trans}},语言环境也是正确的。Twig似乎无法访问我在控制器中创建的translator类。我正在寻找一种方法来使用我在Twig中的控制器中创建的转换器。感谢您的回复!你链接的教程正是我用来创建我现在所拥有的内容的教程。我的代码与教程中的代码之间的唯一区别在于,我使用了类“AppBundle\Utils\DBLoader”,他使用了类“MyApp\CommonBundle\Services\DBLoader”。我试着清理我的缓存,但似乎没有帮助。我根本不需要在控制器中实例化或调用该服务?我对Symfony不是很有经验,所以我不知道如何调用load()函数。不过,我已经修复了它。我花了2个小时,但我终于意识到我的域名有不同的名称,不仅仅是“消息”,我创建了一些新的翻译文件,一切都正常。谢谢你的帮助!