Ca fait plusieurs heures que ja gallère sur ce problème. J’espère que la solution que j’ai trouvé pourra en aider d’autres ou peut-être y a t’il une solution + simple…
Le problème.
Le site est en FR et EN.
J’ai 2 types de noeuds. 1 pour les lieux et 1 pour les événements. Dans le formulaire de création des événements, je veux pouvoir associer un lieu de la même langue. (chaque noeud de lieu et d’événement est dupliqué dans chaque langue).
Ca veut dire que lorsque je crée mon événement en français, il me faut la liste des lieux en français et la même chose en anglais.
Ma solution.
0 / Installer CCK, VIEWS, I18N (J’ai pas mal d’autres modules mais je ne crois pas qu’ils servent dans cette manip. Peut-être TOKEN ( ?))
1 / Créer une vue appelée «choix_lieu» avec :
Arguments > Node translation : Langue
Filtres > Node : Type = Lieu, Node : Publié Oui
A ce stade, la vue affiche les lieux dans toutes les langues. Normal.
2 / Créer mon nouveau type de contenu Event (pour les événements) avec :
Procédures de publication > Gestion multilingue : Activé, avec traductions
Multilanguage options > Options for node language : Tous cochés
Extended language support : Extended, but not displayed
3 / Dans le contenu Event, ajouter un champ «Lieu» de type Node Référence avec les paramêtres suivants dans les paramêtres globaux :
Vue utilisée pour sélectionner les noeuds : choix_lieu
Arguments de la vue : CURRENT_LANGUAGE (J’ai trouvé cà en regardant les requêtes générées par le module Views.)
4 / J’ai aussi coché par défaut le basculement de la langue d’interface en fonction de la langue du contenu. Ca me parait logique pour les contributeurs par la suite.
Voir configuration du site > Multilingual suystem > Content translation links > Switch interface for translating.
Voilà. ca marche. J’ai effectivement la liste de mes lieux en français quand je suis dans l’interface française pour créer un événement, les lieux en anglais quand je suis dans l’interface anglaise ou que je traduis un événement en anglais via l’onglet Traduire.
Peut-être il y a plus simple avec un peu de code mais je ne suis pas encore suffisamment confortable avec DRUPAL pour savoir quoi mettre et surtout : où ?
Si quelqu’un a une suggestion, je suis preneur.
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

En fait, il vaut mieux ne pas utiliser CURRENT_LANGUAGE au niveau du paramêtrage de la vue «choix_lieu» utilisée dans le champ «Lieu» de type Node Référence (…ouf)
et plutôt entrer l’argument directement dans la vue «choix_lieu» via le code PHP à insérer au niveau des arguments par défaut de la vue :
global $language ;
return $language->language ;
Ca marche aussi bien at ça me parait plus propre…
philippe33
9