翻译twig模板中的内容似乎简单明了:我运行bin/console translation:update
来填充翻译文件。问题是它似乎忽略了形式。
在创建实体,存储库和表单/类型之后,我在树枝模板中使用{{ form_row(form.field) }}
来绘制表单元素。
有关如何自定义和翻译表单标签,占位符和错误消息的完善做法吗?
我必须使用form_label
和form_widget
代替form_row
来自定义标签吗?
答案 0 :(得分:0)
你可以在这里创建一个名为forms.es.yml
的文件,你可以用西班牙语给你带来交易,你可以在表单中链接它:
//LoginType.php
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('email',
EmailType::class,
[
'translation_domain' => 'forms', //It's translate the label
'constraints' => [
new Email([
'message' => 'email'
])
]
]
)
->add('password',
RepeatedType::class,
[
'type' => PasswordType::class,
'invalid_message' => 'cliente.password_not_equal',
'first_options' => ['label' => 'cliente.password'],
'second_options' => ['label' => 'cliente.repeat_password'],
'translation_domain' => 'forms', //Here is again
'constraints' => [
new NotBlank([
'message' => 'not_blank'
])
]
]
)
->add('current_uri', HiddenType::class);
}
自symfony 2开始就有效。
另一种方法是在你的树枝上,只打印小部件并翻译标签:
//index.html.twig
<label>
{{'form.email'|trans({})}}
{{ form_widget('form.email') }} //It only prints the input tag
</label>
是一种简单的方法,但不太可重复使用。
答案 1 :(得分:0)
To translate form errors as explained on documentation https://symfony.com/doc/current/validation/translations.html
您需要带有键/值par的validators.lang_used.format文件。然后通过消息密钥将密钥传递给Assert验证。
实体
// src/Entity/Author.php
use Symfony\Component\Validator\Constraints as Assert;
class Author
{
/**
* @Assert\NotBlank(message="author.name.not_blank")
*/
public $name;
}
表单创建
$form = $this->createFormBuilder()
->setMethod('GET')
->add('email', TextType::class, [
'constraints' => [
new NotBlank(['message' => 'error.not_blank']),
],
'label' => 'label.email-domain'
])
->getForm();
要翻译Label只需将密钥传递给'label',密钥需要带有 label 前缀的消息。*文件。
在视图上翻译纯文本(键/值在消息。*文件上定义)
{{ 'save_button'|trans }}
有关翻译的示例,请参阅https://github.com/symfony/demo查找实体定义,视图文件和表单类型