I am trying to get translation of form fields to work. I have messages.en.yml
in my Bundle's Ressource folder.
test: it works form: description: Add a description.
I want to build a form in an EntityType
which translates the labels of the form fields accordingly.
$builder->add( 'description', null, array('label' => 'form.description', 'required' => false) );
Yet only the literal string 'form.description'
gets shown, not the expected translation of Add a description.
The translation service and the messages.en.yml
are loaded correctly as I can call
var_dump($this->get('translator')->trans('test'));
in a controller and get the translated result.
What am I missing when I want to treat the string 'form.description'
as something that should be translated?
I suppose I have to call the trans function on them anyhow, yet how can I make it in one go automatically?
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:)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With