Subversion Repositories eFlore/Applications.cel

Rev

Rev 2615 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2615 Rev 2617
Line 1... Line 1...
1
package org.tela_botanica.client.i18n;
1
package org.tela_botanica.client.i18n;
Line 2... Line -...
2
 
-
 
3
import org.tela_botanica.client.cel2;
2
 
4
import org.tela_botanica.client.modeles.objets.Configuration;
3
import org.tela_botanica.client.modeles.objets.Configuration;
5
import com.google.gwt.i18n.client.Dictionary;
4
import com.google.gwt.i18n.client.Dictionary;
Line 6... Line 5...
6
import com.google.gwt.user.client.Window.Location;
5
import java.lang.Exception;
7
 
6
 
8
/**
7
/**
9
 * Gère l'internationalisation 
8
 * Gère l'internationalisation 
Line 10... Line -...
10
 */
-
 
11
public class Msg {
9
 */
-
 
10
public class Msg {
12
 
11
 
13
	/** contient un dictionnaire de messages par langue */
12
	public static final String MESSAGE_INEXISTANT = "hoho c'est la merde";
14
	//protected Map<String, Dictionary> langues;
13
 
15
	/** langue en cours */
14
	/** langue en cours */
16
	protected static String langue;
15
	protected static String langue;
17
	/** langue par défaut */
16
	/** langue par défaut */
Line -... Line 17...
-
 
17
	protected static String langueDefaut;
18
	protected static String langueDefaut;
18
	/** langues disponibles */
-
 
19
	protected static String languesDisponibles;
-
 
20
 
19
	/** langues disponibles */
21
	/**
20
	protected static String languesDisponibles;
22
	 * Initialisation - à appeler une fois avant tout utilisation
21
 
23
	 * @return true si tout s'est bien passé, false sinon
22
	// A appeller par la classe mère du cel pour l'initialiser
24
	 */
23
	public static void init() {
25
	public static boolean init() {
24
		// lire la config pour obtenir les langues
26
		// lire la config pour obtenir les langues
-
 
27
		languesDisponibles = Configuration.getLanguesDisponibles();
-
 
28
		// lire la config et charger la langue par défaut
-
 
29
		langueDefaut = Configuration.getLangueDefaut();
-
 
30
		// si la langue par défaut n'existe pas, on arrête tout
-
 
31
		return setLangue(langueDefaut);
-
 
32
	}
-
 
33
 
-
 
34
	/**
-
 
35
	 * Initialisation - raccourci pour initialiser avec une langue
-
 
36
	 * @param langue la langue à définir jusqu'à nouvel ordre
-
 
37
	 * @return true si tout s'est bien passé, false sinon
-
 
38
	 */
-
 
39
	public static boolean init(String langue) {
-
 
40
		boolean ok = false;
-
 
41
		if (init()) {
-
 
42
			ok = setLangue(langue);
-
 
43
		}
-
 
44
		return ok;
-
 
45
	}
25
		languesDisponibles = Configuration.getLanguesDisponibles();
46
 
-
 
47
	/**
-
 
48
	 * [Re]définit la langue en cours
-
 
49
	 * @param langue
-
 
50
	 * @return true si la langue a été correctement définie, false
-
 
51
	 * 			sinon (si la langue n'est pas disponible)
-
 
52
	 */
26
		// lire la config et charger la langue par défaut
53
	public static boolean setLangue(String langue) {
-
 
54
		boolean ok = false;
27
		langueDefaut = Configuration.getLangueDefaut();
55
		// contrôle cracra
28
		// Si la langue est précisée dans l'url on la prend, sinon on prend celle par défaut
56
		if (languesDisponibles.indexOf(langue) != -1) { // on peut désactiver une langue même si le dictionnaire existe
-
 
57
			String nomDictionnaire = "messages_" + langue;
-
 
58
			try {
-
 
59
				Dictionary.getDictionary(nomDictionnaire);
-
 
60
				Msg.langue = langue;
29
		// @TODO: avertissement si la langue indiquée dans l'url n'est pas la bonne
61
				ok = true;
Line -... Line 62...
-
 
62
			} catch (Exception e) {}
-
 
63
		}
-
 
64
		return ok;
-
 
65
	}
-
 
66
 
-
 
67
	/**
30
		String langueActive = getLangueActiveParUrlOuDefaut();
68
	 * Retourne la langue actuellement définie; si on a essayé de définir
-
 
69
	 * une langue qui n'est pas disponible, retournera la langue par défaut
-
 
70
	 * 
-
 
71
	 * @return la langue actuellement définie
-
 
72
	 */
31
		cel2.LogVersFirebug(langueActive);
73
	public static String getLangue() {
-
 
74
		return langue;
-
 
75
	}
32
		setLangue(langueActive);
76
 
-
 
77
	/**
-
 
78
	 * @return la langue par défaut, définie dans la configuration
-
 
79
	 */
-
 
80
	public static String getLangueDefaut() {
-
 
81
		return langueDefaut;
-
 
82
	}
-
 
83
 
33
	}
84
	/**
Line 34... Line 85...
34
 
85
	 * @return les langues disponibles, définies dans la configuration
35
	public static void setLangue(String langue) {
86
	 */
36
		// @TODO vérifier que la langue est une clé de la Map
87
	public static String getLanguesDisponibles() {
Line 57... Line 108...
57
	}
108
	}
Line 58... Line 109...
58
 
109
 
59
	/**
110
	/**
60
	 * Retourne un message dans la langue demandée; s'il n'est pas trouvé, le cherche
111
	 * Retourne un message dans la langue demandée; s'il n'est pas trouvé, le cherche
61
	 * dans la langue par défaut; en cas d'échec, retourne un terme générique d'avertissement
112
	 * dans la langue par défaut; en cas d'échec, retourne un terme générique d'avertissement
62
	 * @param cle
113
	 * @param cle l'identifiant du message demandé
-
 
114
	 * @param langue la langue dans laquelle on souhaite l'obtenir
-
 
115
	 * @return le message dans la langue en cours s'il existe, sinon le
63
	 * @param langue
116
	 * 			message dans la langue par défaut s'il existe, sinon la
64
	 * @return
117
	 * 			chaîne définie dans Msg.MESSAGE_INEXISTANT
65
	 */
118
	 */
66
	public static String get(String cle, String langue) {
119
	public static String get(String cle, String langue) {
67
		String nomDictionnaire = "messages_" + langue;
120
		String nomDictionnaire = "messages_" + langue;
68
		String message;
121
		String message;
69
		try {
122
		try {
70
			message = Dictionary.getDictionary(nomDictionnaire).get(cle);
123
			message = Dictionary.getDictionary(nomDictionnaire).get(cle);
71
		} catch (Exception e) {
124
		} catch (Exception e) {
72
			try {
125
			try {
73
				message = Dictionary.getDictionary("messages_" + langueDefaut).get(cle);
126
				message = Dictionary.getDictionary("messages_" + langueDefaut).get(cle);
74
			} catch (Exception me) {
127
			} catch (Exception me) {
75
				message = "hoho c'est la merde";
128
				message = Msg.MESSAGE_INEXISTANT;
76
			}
129
			}
77
		}
130
		}
78
		return message;
131
		return message;
Line 91... Line 144...
91
			message = message.replace("{"+i+"}", params[i]);
144
			message = message.replace("{"+i+"}", params[i]);
92
		}
145
		}
Line 93... Line 146...
93
		
146
		
94
		return message;
147
		return message;
95
	}
-
 
96
	
-
 
97
	protected static String getLangueActiveParUrlOuDefaut() {
-
 
98
		//TODO: déplacer ceci si on est une chouette !
-
 
99
		return Location.getParameter("lang") == null ? langueDefaut : Location.getParameter("lang");
-
 
100
	}
148
	}