首页 > 解决方案 > symfony & translation : 如何翻译标准表达和形式?

问题描述

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

谢谢您的帮助

标签: symfonytranslators

解决方案


表单标签的默认设置是使用“人性化”版本。然后可以在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 #}

如果您想对字段使用关键字翻译,您可以label_format在表单本身(在configure方法中,作为一个选项)或其所有元素上手动设置(使用描述的占位符)。

我个人更喜欢这种label_format方法,因为我很少“手动”呈现表单。

您还可以设置translation_domain参数以将使用的翻译域 ( messages) 更改为其他内容。


推荐阅读