Rev 2653 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.i18n;import org.tela_botanica.client.modeles.objets.Configuration;import com.google.gwt.i18n.client.Dictionary;import java.lang.Exception;import java.util.ArrayList;import java.util.List;/*** Gère l'internationalisation*/public class Msg {public static final String MESSAGE_INEXISTANT = "N/A";/** langue en cours */protected static String langue;/** langue par défaut */protected static String langueDefaut;/** langues disponibles */protected static List<String> languesDisponibles;/*** Initialisation - à appeler une fois avant tout utilisation* @return true si tout s'est bien passé, false sinon*/public static boolean init() {// lire la config pour obtenir les langueslanguesDisponibles = parserLanguesDisponibles(Configuration.getLanguesDisponibles());// lire la config et charger la langue par défautlangueDefaut = Configuration.getLangueDefaut();// si la langue par défaut n'existe pas, on arrête toutreturn setLangue(langueDefaut);}/*** Initialisation - raccourci pour initialiser avec une langue* @param langue la langue à définir jusqu'à nouvel ordre* @return true si tout s'est bien passé, false sinon*/public static boolean init(String langue) {boolean ok = false;if (init()) {ok = setLangue(langue);}return ok;}/*** [Re]définit la langue en cours* @param langue* @return true si la langue a été correctement définie, false* sinon (si la langue n'est pas disponible)*/public static boolean setLangue(String langue) {boolean ok = false;if (langueEstDisponible(langue)) { // on peut désactiver une langue même si le dictionnaire existeString nomDictionnaire = "messages_" + langue;try {Dictionary.getDictionary(nomDictionnaire);Msg.langue = langue;ok = true;} catch (Exception e) {}}return ok;}/*** Retourne true si la langue demandée est disponible* (ceci se fait via la valeur de config, peu importe, si le dictionnaire* associé existe ou non)** @param langue* @return true si la langue est disponible, false sinon*/public static boolean langueEstDisponible(String langue) {return languesDisponibles.contains(langue);}/*** Retourne la langue actuellement définie; si on a essayé de définir* une langue qui n'est pas disponible, retournera la langue par défaut** @return la langue actuellement définie*/public static String getLangue() {return langue;}/*** @return la langue par défaut, définie dans la configuration*/public static String getLangueDefaut() {return langueDefaut;}/*** @return les langues disponibles, définies dans la configuration*/public static List<String> getLanguesDisponibles() {return languesDisponibles;}/*** Retourne un message dans la langue en cours* @param cle* @return*/public static String get(String cle) {return get(cle, langue);}/*** Retourne un message dans la langue en cours,* avec la première lettre en majuscule* @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 paramétré dans la langue en cours,* avec la première lettre en majuscule* @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 l'identifiant du message demandé* @param langue la langue dans laquelle on souhaite l'obtenir* @return le message dans la langue en cours s'il existe, sinon le* message dans la langue par défaut s'il existe, sinon la* chaîne définie dans Msg.MESSAGE_INEXISTANT*/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 = Msg.MESSAGE_INEXISTANT;}}return message;}/*** Comme get(String cle, String langue), mais retourne le message* avec la première lettre en majuscule* @param cle* @param langue* @return*/public static String Get(String cle, String langue) {String message = get(cle, langue);return message.substring(0,1).toUpperCase() + message.substring(1);}/*** 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;}/*** Comme get(String cle, String langue, String[] params), mais retourne le* message avec la première lettre en majuscule* @param cle* @param langue* @param params* @return*/public static String Get(String cle, String langue, String[] params) {String message = get(cle, langue, params);return message.substring(0,1).toUpperCase() + message.substring(1);}/*** Convertit la chaine de config de langues en un objet de type liste* @param languesDisponibles la chaine de config* @return List<String> une liste des langues disponibles*/private static List<String> parserLanguesDisponibles(String languesDisponibles) {ArrayList<String> langues = new ArrayList<>();String[] languesTab = languesDisponibles.split(",");for (int i = 0; i < languesTab.length; i++) {langues.add(languesTab[i]);}return langues;}}