Rev 2614 | Blame | 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'initialiser
public static void init() {
// lire la config pour obtenir les langues
languesDisponibles = Configuration.getLanguesDisponibles();
// lire la config et charger la langue par défaut
langueDefaut = 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 bonne
String langueActive = getLangueActiveParUrlOuDefaut();
cel2.LogVersFirebug(langueActive);
setLangue(langueActive);
}
public static void setLangue(String langue) {
// @TODO vérifier que la langue est une clé de la Map
Msg.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");
}
}