翻译语言环境 symfony 4 twig 模板

Translate locale symfony 4 twig template

我对 twig 模板的翻译有疑问。

这是一种实际的翻译方式。

{% trans into 'en_EN' %}Hello{% endtrans %}!,

我可以像这样直接从数据库中加载 '' 值吗? (这 returns 一个错误)。

{% trans into {{ app.user.lang }} %}Hello{% endtrans %}!,

还是我应该使用控制器来完成?

我现在使用以下功能进行翻译:

{% with %}
{% set lang = app.user.lang %}
<button class="btn btn-outline-primary" type="button" data-toggle="dropdown">{% trans into lang %}Hello{% endtrans %}!, {{ app.user.username }}<i class="material-icons">arrow_drop_down</i></button>
{% endwith %}

但我不确定这是否是一个好的做法。

我觉得你的问题也不是很清楚。通常,您可以在配置文件中定义一种默认语言,然后使用语言选择器或其他方式更改它们。

那你就不需要那个 into

Symfony 4 How to change language Step by Step

这里有一个很好的示例如何构建语言切换和一些教程。您应该阅读解释了大部分内容的翻译文档。

https://symfony.com/doc/current/translation.html

当您真的想将翻译存储到数据库时,您必须使用翻译加载程序并扩展它们,因此您必须注册新服务并从数据库加载翻译。

Symfony2 Database Translation Loader isn't executed

但我不知道这是否正是您的问题。

你不需要使用 into,如果你想根据用户的喜好进行翻译,你可以通过监听器添加它或者在 URL 中包含语言环境,那么你在你的树枝模板中所要做的就是 {{ 'Hello' | trans }}

参见:https://symfony.com/doc/current/translation/locale.html