Symfony的新手我创建了一个登录表单(make:auth)并安装了翻译器。 我在表单模板中添加了login.html.twig
{% block body %}
<h1>{% trans %}Hello{% endtrans %}</h1>
<form method="post">
...
,并在翻译目录中定义一个messages.fr.yml,其中包含Hello:Bonjour。
那行得通,当我显示表单时,您好可以很好地翻译成Bonjour
但是,所有其他标签(用户名,密码等)都不会翻译
这似乎是合乎逻辑的,因为条目没有{% trans %} {% endtrans %}
命令
<h1 class="h3 mb-3 font-weight-normal">Please sign in</h1>
<label for="inputUsername" class="sr-only">Username</label>
问题1:有没有一种方法可以自动翻译所有这些标签?
问题2:是否存在包含所有标准使用的消息/标签的现有翻译文件?
谢谢您的帮助
答案 0 :(得分:0)
要管理树枝中的翻译,有相应的trans函数(示例):
<label for="inputUsername" class="sr-only">{{'username' | trans}}</label>
,然后在您的messages.fr.yml中添加:
用户名:“ Nom d'utilisateur”
答案 1 :(得分:0)
表单标签的默认设置是使用"humanized"版本。然后可以在messages
翻译域中翻译该内容。
您可以通过在构建器中直接在表单(元素)上设置label
来更改此设置
->add('fieldName', TextType::class, [
'label' => 'fieldName_translation_key',
])
或在模板中:
{{ form_row(form.fieldname, {label: 'fieldname_translation_key'}) }}
{# this also works with form_widget/form_label, depending on the form element #}
如果您想对字段使用关键字翻译,则可以在表单本身上(通过configure
方法(可选))或在其所有元素上手动设置label_format
(使用{ {3}})。
我个人更喜欢label_format
方法,因为我很少“手动”呈现表单。
您还可以设置translation_domain
参数,将使用的翻译域(messages
)更改为其他内容。