Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] jForms : alimentation d'une liste déroulante multilingue

Posted by xian on 10/31/2007 14:02

Désolé de vous embêter avec mes petites histoires mais je découvre chaque jour un peu plus Jelix et je cherche la meilleure façon de procéder. Je me pose une question concernant l'alimentation d'une liste déroulante avec des éléments qui doivent apparaître en fonction de la langue sélectionnée par l'utilisateur.

Pour l'instant j'utilise le système suivant mais je pense (j'espère ;o)) qu'il doit y avoir moyen de faire plus efficace...

Ma liste déroulante contient des noms de pays, et je veux que ces noms de pays puissent être affichés dans la langue courante. Les traductions des noms de pays sont stockées dans des fichiers locale pour le français et pour l'anglais :

fr_FR : countries.UTF-8.properties

 country.1 = France
 country.2 = Angleterre
 country.3 = Etats-Unis
 country.4 = Espagne

en_EN : countries.UTF-8.properties

 country.1 = France
 country.2 = England
 country.3 = USA
 country.4 = Spain

Dans mon fichier form j'ai créé un champ de liste déroulante comme ceci :

 <menulist ref="country_id" required="true">
	<label locale="aaa~main.Country" />
	<item value="1" locale="aaa~countries.country.1" />
	<item value="2" locale="aaa~countries.country.2" />
	<item value="3" locale="aaa~countries.country.3" />
	<item value="4" locale="aaa~countries.country.4" />
 </menulist>

Ceci me génère bien le html suivant pour le français :

 <label class="jforms-label jforms-required" for="jform1_country_id">__Pays__</label>
 <select name="country_id" id="jform1_country_id" size="1">
	<option value="1">__France__</option>
	<option value="2">__Angleterre__</option>
	<option value="3">__Etats-Unis__</option>
	<option value="4">__Espagne__</option>
 </select>

et pour l'anglais :

 <label class="jforms-label jforms-required" for="jform1_country_id">__Country__</label>
 <select name="country_id" id="jform1_country_id" size="1">
	<option value="1">__France__</option>
	<option value="2">__England__</option>
	<option value="3">__USA__</option>
	<option value="4">__Spain__</option>
 </select>
 

Ceci marche très bien mais il y a deux inconvénients importants : d'une part je dois créer manuellement autant de balise <item> dans le fichier form que j'ai de nom de pays dans mes fichiers de traduction. Et d'autre part cela m'oblige à venir modifier le fichier form à la main le jour où je veux ajouter un nouveau pays.

 

Ma question : existerait-t-il un moyen de charger la liste déroulante de façon dynamique à partir de fichiers de locale comme on peut le faire avec un dao ?

  [Opened] Re: jForms : alimentation d'une liste déroulante multilingue

Reply #1 Posted by laurentj on 10/31/2007 16:00

non, pas possible de faire de cette façon.

Ce que je t'encourage à faire, c'est de stocker tes pays dans une table ( avec des champs numero, langue, nom), de récupérer la liste des pays qui correspondent à la langue (code langue que tu trouves dans $GLOBALS['gJConfig']->locale), et de les mettre "à la main" dans le contrôle, avant l'affichage du formulaire.

Voir les explications ici. (je viens de les ajouter dans le wiki).

  [Opened] Re: jForms : alimentation d'une liste déroulante multilingue

Reply #2 Posted by Uriel C on 11/01/2007 00:10

Magnifique ! J'avais justement un problème sur une appli qui est résolu grâce à ça. Je devais avoir un <select> listant les fichiers d'un répertoire du serveur. Je pensais devoir faire mon formulaire à la main ou me plonger dans les tréfonds de jelix :)

  [Opened] Re: jForms : alimentation d'une liste déroulante multilingue

Reply #3 Posted by xian on 11/05/2007 18:01

Merci Laurent, ça fonctionne pil poil comme il faut ! ;o)

 
Page
  1. jForms : alimentation d'une liste déroulante multilingue