symfony&translation:如何翻译标准表达形式?

时间:2019-10-16 15:02:08

标签: symfony translators

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:是否存在包含所有标准使用的消息/标签的现有翻译文件?

谢谢您的帮助

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)更改为其他内容。