- 1
[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
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
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
Posted by xian on 11/05/2007 18:01
Merci Laurent, ça fonctionne pil poil comme il faut ! ;o)
- 1