Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2616 → Rev 2617

/trunk/src/org/tela_botanica/client/i18n/Msg.java
1,9 → 1,8
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;
import java.lang.Exception;
 
/**
* Gère l'internationalisation
10,8 → 9,8
*/
public class Msg {
 
/** contient un dictionnaire de messages par langue */
//protected Map<String, Dictionary> langues;
public static final String MESSAGE_INEXISTANT = "hoho c'est la merde";
 
/** langue en cours */
protected static String langue;
/** langue par défaut */
19,25 → 18,77
/** langues disponibles */
protected static String languesDisponibles;
 
// A appeller par la classe mère du cel pour l'initialiser
public static void init() {
/**
* 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 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);
// si la langue par défaut n'existe pas, on arrête tout
return setLangue(langueDefaut);
}
 
public static void setLangue(String langue) {
// @TODO vérifier que la langue est une clé de la Map
Msg.langue = langue;
/**
* 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;
// contrôle cracra
if (languesDisponibles.indexOf(langue) != -1) { // on peut désactiver une langue même si le dictionnaire existe
String nomDictionnaire = "messages_" + langue;
try {
Dictionary.getDictionary(nomDictionnaire);
Msg.langue = langue;
ok = true;
} catch (Exception e) {}
}
return ok;
}
 
/**
* 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 String getLanguesDisponibles() {
return languesDisponibles;
}
 
/**
* Retourne un message dans la langue en cours
* @param cle
* @return
59,9 → 110,11
/**
* 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
* @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;
72,7 → 125,7
try {
message = Dictionary.getDictionary("messages_" + langueDefaut).get(cle);
} catch (Exception me) {
message = "hoho c'est la merde";
message = Msg.MESSAGE_INEXISTANT;
}
}
return message;
93,9 → 146,4
return message;
}
protected static String getLangueActiveParUrlOuDefaut() {
//TODO: déplacer ceci si on est une chouette !
return Location.getParameter("lang") == null ? langueDefaut : Location.getParameter("lang");
}
}
/trunk/src/org/tela_botanica/client/cel2.java
7,6 → 7,7
import com.google.gwt.ajaxloader.client.AjaxLoader.AjaxLoaderOptions;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window.Location;
import com.gwtext.client.core.Ext;
import com.gwtext.client.widgets.Viewport;
 
37,8 → 38,19
*/
// TODO: config devrait être un singleton
Configuration config = new Configuration();
Msg.init();
// 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 langueURL = Location.getParameter("lang");
if (! Msg.init()) {
cel2.LogVersFirebug("La langue par défaut \"" + Msg.getLangueDefaut() + "\" n'a pas pu être chargée");
}
if (langueURL != null && ! langueURL.equals("")) {
cel2.LogVersFirebug("Langue passée dans l'URL: " + langueURL);
if (! Msg.setLangue(langueURL)) {
cel2.LogVersFirebug("La langue demandée \"" + langueURL + "\" n'a pas pu être chargée");
}
}
 
// Chargement de l'api google maps v3 avant l'initialisation pour
// éviter des "complications"
// TODO: fabriquer une classe qui cherche dans la config une liste d'api
93,7 → 105,7
}
return log;
}*/
 
public static native void LogVersFirebug(Object o) /*-{
if (!!($wnd.console && $wnd.console.log)) {
console.log(o);