How to translate labels in symfony2 forms with messages.en.yml?

核能气质少年 提交于 2019-11-28 21:11:58

i had to explicitly set the translation domain

e.g

->add('description','hidden',
 array(
   "label"=>"form.description",
   "required"=>true,
   'translation_domain' => 'fooo'
 )
);

in case of

fooo.de.xlf

In symfony 3.1 You don't need to pass translator to form type constructor. It will be translated automatically by form field name like this:

Controller action:

$form = $this->createForm(LoginType::class);

FormType class:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('username',
            TextType::class, ['label_format' => '%name%',]
        );
}

And your translations file (yml):

username: Your translation for username field

Hope it will help someone:)

Add translation in form for is best idea - because found if in twig much more easy

{% trans_default_domain 'YourNameBundle' %}

{{'shot.tag.for.transle'|trans }}

also you must remember about translation file in your bundle, if you extend bundle from another (example - you extends FosUserBundle) you can take translate from this bundle or use func trans with params

{{'shot.tag.for.transle'|trans({}, 'TranslationNameBundle') }}

Have a nice localisation.

Let say you want to translate into French. Then you have filename.en.xlf and filename.fr.xlf.

now for the following form element you want to make description translatable.

$builder->add(
    'description',
    null,
    array('label' => 'form.description', 'required' => false)
);

so in the filename.en.xlf

<trans-unit id="17">
    <source>description</source>
    <target>description</target>
</trans-unit>

and for French, so in the filename.fr.xlf as below

<trans-unit id="17">
    <source>description</source>
    <target>fr descrip</target>
</trans-unit>

hope this will help for someone

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!