Bonjour,

Je suis actuellement en train de traduire une application WEB fonctionnant sous Symfony2. J'ai déjà traduit tout du côté du PHP (controller, vues, services, ...). Je me suis maintenant penché sur les traductions du côté de la base de données, et j'ai installé les extensions Doctrine à l'aide du bundle stof/doctrine-extensions-bundle.

Les traductions on été plutôt faciles à faire, j'ai actuellement mis les annotations sur les champs à traduire dans mes entités, ajouté la variable Locale dans mes entités, et effectué mes traductions. Actuellement j'ai donc une table nommée "ext_translations" dans ma bdd qui me traduit mes attributs sur lesquels j'ai mis mes annotations.

J'arrive à récupérer mon entité, à lui donner une locale, à la refresh et à la récupérer traduite. Mon problème à l'heure actuelle est que une partie de ces traductions doivent être utilisées dans un champ d'un formulaire et une autre doivent être récupérées dans un Repository.

Concernant le Repository :
J'ai trouvé des choses pour y traduire, notamment la fonction setHint qui permet de dire à un queryBuilder de traduire, mon problème c'est que mes collègues qui ont fait la requête, l'ont fait avec du pure SQL :
$this->_em->getConnection()->prepare($sSql);
Et la dessus je n'ai pas de fonction setHint...

Voici le code complet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$sSql = '	SELECT 	ujs.id,
                                                    jsp.name_society,
                                                    jsp.name_job
 
                                            FROM  	user_job_status as ujs,
                                                      job_society_placeholder as jsp
 
                                            WHERE 	ujs.placeholder = jsp.id';
 
 
 
                                $stmt 		= $this->_em->getConnection()->prepare($sSql);
                                $stmt->execute();
                                $aRes 		= $stmt->fetchAll();
                                return 		$aRes;
Concernant Le formulaire, voici ce qu'ils ont fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
->add('title', 'entity', array(
                'label'      => false,
                'class'      => 'FcUserBundle:UserTitle',
                'property'   => 'shortcut',
                'attr'       => array('class' => 'registration_title'),
                'label_attr' => array('class' => 'label_form_field'),
                'multiple'   => false,
                'expanded'   => true,
                'empty_data' => 0,
            ))
Je voudrais pouvoir traduire ce champ, j'ai trouvé un bundle qui je pense est capable de le faire (http://a2lix.fr/bundles/translation-...e-installation), et ça donnait ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
->add('title', 'a2lix_translatedEntity', array(
                'label'      => false,
                'class'      => 'FcUserBundle:UserTitle',
                'translation_property'   => 'shortcut',
                'attr'       => array('class' => 'registration_title'),
                'label_attr' => array('class' => 'label_form_field'),
                'multiple'   => false,
                'expanded'   => true,
                'empty_data' => 0,
            ))
sauf que ça me donne une erreur que je ne comprend pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Neither the property "translations" nor one of the methods "getTranslations()", "translations()", "isTranslations()", "hasTranslations()", "__get()" exist and have public access in class "Fc\UserBundle\Entity\UserTitle"
Oui je n'ai pas de propriété translations dans mon entitée, j'y ai juste mis les annotations Gedmo\Translatable sur les champs que j'avais besoin de traduire...


Voilà, je pense m'y prendre mal pour toute cette partie traduction en BdD et je ne suis pas contre un petit coup de main s'il vous plait ^^

Merci d'avance.