在树枝模板中翻译内容看起来简单直接:我运行bin/console translation:update
来填充翻译文件。问题在于它似乎忽略了表单。如何翻译Symfony 3格式?
在创建实体,存储库和表单/类型之后,我在树枝模板中使用{{ form_row(form.field) }}
来绘制表单元素。
在如何自定义和翻译表单标签,占位符和错误消息方面是否有一套行之有效的做法?
必须使用form_label
和form_widget
而不是form_row
来自定义标签吗?
在树枝模板中翻译内容看起来简单直接:我运行bin/console translation:update
来填充翻译文件。问题在于它似乎忽略了表单。如何翻译Symfony 3格式?
在创建实体,存储库和表单/类型之后,我在树枝模板中使用{{ form_row(form.field) }}
来绘制表单元素。
在如何自定义和翻译表单标签,占位符和错误消息方面是否有一套行之有效的做法?
必须使用form_label
和form_widget
而不是form_row
来自定义标签吗?
您可以创建例如这里命名forms.es.yml
文件,你可以把你TRADUCTIONS在西班牙,并在您的形式,你可以像这样的IT连锁:
//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>
是一种简单的方法,但不太可重复使用的。
我认为第一种方法运作良好。我面临的唯一问题是:如果我运行'bin/console translation:update en',它似乎忽略了我所有的表单。我需要手动维护翻译文件吗? – user3429660
对不起,但我想是的。如果有办法自动执行,我不知道它:c。其实我手动维护它。 – Koronos
对我来说只有2ed的方式工作? –
要作为文档https://symfony.com/doc/current/validation/translations.html
解释你需要用的key/value票面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();
要翻译标签只是传递的钥匙,“标签”,按键需要的前缀标签一个现场直播的消息。*文件。
翻译上查看纯文本(键/值对邮件定义。*文件)
{{ 'save_button'|trans }}
瞧https://github.com/symfony/demo找实体定义翻译的例子,查看文件和表单类型
不要你使用FormTypes?尝试将转换器注入FormType并转换字段标签。 – Chris