首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何翻译Symfony 3表格?

如何翻译Symfony 3表格?
EN

Stack Overflow用户
提问于 2017-06-21 12:34:36
回答 2查看 5.3K关注 0票数 1

在小枝模板中翻译内容似乎既简单又简单:我运行bin/console translation:update来填充翻译文件。问题是它似乎忽略了形式。

在创建实体、存储库和表单/类型之后,我在twig模板中使用{{ form_row(form.field) }}绘制表单元素。

在如何自定义和翻译表单标签、占位符和错误消息方面有一个成熟的实践吗?

我必须使用form_labelform_widget而不是form_row来定制标签吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-22 02:03:47

例如,您可以在这里创建一个名为forms.es.yml的文件,您可以将其放在西班牙语中,然后在表单中将其链接如下:

代码语言:javascript
复制
//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开始工作。

另一种方法是在小树枝上,只打印小部件并翻译标签:

代码语言:javascript
复制
//index.html.twig
<label> 
   {{'form.email'|trans({})}}
   {{ form_widget('form.email') }} //It only prints the input tag
</label>

是一种简单的方法,但可重用性较低。

票数 1
EN

Stack Overflow用户

发布于 2018-03-07 13:26:25

如文档https://symfony.com/doc/current/validation/translations.html所解释的那样翻译表单错误

您需要具有键/值par的validators.lang_used.format文件。然后通过消息密钥上的断言验证传递密钥。

论实体

代码语言:javascript
复制
// src/Entity/Author.php
use Symfony\Component\Validator\Constraints as Assert;

class Author
{
    /**
     * @Assert\NotBlank(message="author.name.not_blank")
     */
    public $name;
}

论形式创造

代码语言:javascript
复制
$form = $this->createFormBuilder()
    ->setMethod('GET')
    ->add('email', TextType::class, [
        'constraints' => [
            new NotBlank(['message' => 'error.not_blank']),
        ],
        'label' => 'label.email-domain'
    ])
    ->getForm();

要翻译标签,只需将键传递给“Label”,键必须是前缀,并在消息上加上标签。* file。

在视图上翻译纯文本(键/值在消息中定义。*文件)

代码语言:javascript
复制
{{ 'save_button'|trans }}

有关翻译示例,请参阅https://github.com/symfony/demo查找实体定义、视图文件和表单类型

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44676286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档