gpt4 book ai didi

php - 如何在我的 Twig 模板中使用 Symfony 翻译器?

转载 作者:行者123 更新时间:2023-12-05 06:41:29 25 4
gpt4 key购买 nike

我一直在努力翻译我的应用程序,我从我的数据库中提取翻译并将它们添加到目录中。如果我用 $translator->trans('TEST_TRANSLATION') 回显翻译,一切都在 Symfony 中工作例如它回显了正确的值,所以我假设我的翻译是正确的。

现在我使用 Twig 作为我的模板引擎,它支持带有 {% trans %} 标签的翻译。遗憾的是,translator 变量的翻译在 Twig 中不起作用,在谷歌搜索了很长一段时间后,我似乎找不到可行的解决方案。
我读过关于使用 $twig->addExtension() 添加扩展的内容,但我无法让它工作。

如果有人能给我指明正确的方向,或者甚至就如何使用带有 {% trans %} 标签的翻译器提供更清晰的解释,我将不胜感激。

提前致谢。

编辑:这是我用来创建翻译器的 Controller 中的代码:

$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 中进行翻译,我仍然不知道如何让我的 Translator 翻译与这些翻译一起工作。任何帮助将不胜感激。

最佳答案

翻译在带有标签 {% trans %} 或过滤器 |trans 的 twig 中不起作用,因为您没有使用 Symfony 的默认翻译服务,而是一个你只需实例化。

您可以在带有标签 translation.loader 的容器中声明的自定义加载程序服务中从数据库加载翻译这样翻译服务就会知道它们。

查看此 SO post和(相当古老的)建议tutorial

关于php - 如何在我的 Twig 模板中使用 Symfony 翻译器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40462121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com