Rev 2614 | Rev 2617 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.i18n;import org.tela_botanica.client.cel2;import org.tela_botanica.client.modeles.objets.Configuration;import com.google.gwt.i18n.client.Dictionary;import com.google.gwt.user.client.Window.Location;/*** Gère l'internationalisation*/public class Msg {/** contient un dictionnaire de messages par langue *///protected Map<String, Dictionary> langues;/** langue en cours */protected static String langue;/** langue par défaut */protected static String langueDefaut;/** langues disponibles */protected static String languesDisponibles;// A appeller par la classe mère du cel pour l'initialiserpublic static void init() {// lire la config pour obtenir les langueslanguesDisponibles = Configuration.getLanguesDisponibles();// lire la config et charger la langue par défautlangueDefaut = Configuration.getLangueDefaut();// Si la langue est précisée dans l'url on la prend, sinon on prend celle par défaut// @TODO: avertissement si la langue indiquée dans l'url n'est pas la bonneString langueActive = getLangueActiveParUrlOuDefaut();cel2.LogVersFirebug(langueActive);setLangue(langueActive);}public static void setLangue(String langue) {// @TODO vérifier que la langue est une clé de la MapMsg.langue = langue;}/*** Retourne un message dans la langue en cours* @param cle* @return*/public static String get(String cle) {return get(cle, langue);}/*** Retourne un message paramétré dans la langue en cours* @param cle* @param[] params* @return*/public static String get(String cle, String[] params) {return get(cle, langue, params);}/*** Retourne un message dans la langue demandée; s'il n'est pas trouvé, le cherche* dans la langue par défaut; en cas d'échec, retourne un terme générique d'avertissement* @param cle* @param langue* @return*/public static String get(String cle, String langue) {String nomDictionnaire = "messages_" + langue;String message;try {message = Dictionary.getDictionary(nomDictionnaire).get(cle);} catch (Exception e) {try {message = Dictionary.getDictionary("messages_" + langueDefaut).get(cle);} catch (Exception me) {message = "hoho c'est la merde";}}return message;}/*** Retourne un message paramétré dans la langue demandée* @param cle* @param langue* @param[] params* @return*/public static String get(String cle, String langue, String[] params) {String message = get(cle, langue);for (int i = 0; i < params.length; i++) {message = message.replace("{"+i+"}", params[i]);}return message;}protected static String getLangueActiveParUrlOuDefaut() {//TODO: déplacer ceci si on est une chouette !return Location.getParameter("lang") == null ? langueDefaut : Location.getParameter("lang");}}