Estoy programando toda la APP en Ingles y haciendo las traducciones correspondiente, por ahora solo al español y luego generaré las traducciones para los otros idiomas. El problema que tengo es el siguiente:
Tengo una entidad llamada Person, con varios atributos ente ellos el atributo Sexo (Sex) que es una clave foránea de la entidad Sex. Los distintos objetos que posee la entidad Sex están cagados en Ingles (Male, Female) y quiero que el formulario que me da la opción de elegir el sexo me haga la traducción al idioma que corresponda (por el momento en español; Masculino, Femenino).
Las traducciones ya están cargadas y en otros lugares de la aplicación (que no sea un formulario) andan bien. Este el código:
Entity Person:
... /** * * @ORM\ManyToOne(targetEntity="MSG\PersonBundle\Entity\Sex") * @ORM\JoinColumn(name="sex_id", referencedColumnName="id") * @Assert\Type("MSG\PersonBundle\Entity\Sex") * @Assert\NotNull() */ private $sex; ...
PersonType (Así no me traduce el select de la entidad):
... ->add('sex', 'entity', array( 'class' => 'PersonBundle:Sex', 'query_builder' => function($er) { return $er->createQueryBuilder('s') ->where('s.status = 2 or s.status = 3') ->orderBy('s.id', 'ASC'); }) ) ...
Lo curioso es que si no uso una entidad y cargo el valor del atributo en la Entidad Persona la traducción si funciona.
PersonType (así si funciona):
... ->add('sex', 'choice', array( 'choices' => array( 'Male' => 'Male', 'Female' => 'Female' ), )) ...
¿Se pueden traducir los valores de los atributo de una entidad en un formulario? ¿Cómo lo hago?
Desde ya muchas gracias.
Respuestas
No soy muy experto en los formularios de Symfony, pero creo que tienes que utilizar la opción choice_translation_domain
a true
:
->add('sex', 'entity', array( 'choice_translation_domain' => true, 'class' => 'PersonBundle:Sex', 'query_builder' => function($er) { // ... }) )
Lo vi en este comentario del repositorio de Symfony.
@javiereguiluz
Muchas gracias Javier!, funcionó a la perfección.
@gapiazza