Subversion Repositories eFlore/Applications.cel

Rev

Rev 2643 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2643 Rev 2653
1
package org.tela_botanica.client.i18n;
1
package org.tela_botanica.client.i18n;
2
 
2
 
3
import org.tela_botanica.client.modeles.objets.Configuration;
3
import org.tela_botanica.client.modeles.objets.Configuration;
-
 
4
 
4
import com.google.gwt.i18n.client.Dictionary;
5
import com.google.gwt.i18n.client.Dictionary;
5
import java.lang.Exception;
6
import java.lang.Exception;
-
 
7
import java.util.ArrayList;
-
 
8
import java.util.List;
6
 
9
 
7
/**
10
/**
8
 * Gère l'internationalisation 
11
 * Gère l'internationalisation 
9
 */
12
 */
10
public class Msg {
13
public class Msg {
11
 
14
 
12
	public static final String MESSAGE_INEXISTANT = "N/A";
15
	public static final String MESSAGE_INEXISTANT = "N/A";
13
 
16
 
14
	/** langue en cours */
17
	/** langue en cours */
15
	protected static String langue;
18
	protected static String langue;
16
	/** langue par défaut */
19
	/** langue par défaut */
17
	protected static String langueDefaut;
20
	protected static String langueDefaut;
18
	/** langues disponibles */
21
	/** langues disponibles */
19
	protected static String languesDisponibles;
22
	protected static List<String> languesDisponibles;
20
 
23
 
21
	/**
24
	/**
22
	 * Initialisation - à appeler une fois avant tout utilisation
25
	 * Initialisation - à appeler une fois avant tout utilisation
23
	 * @return true si tout s'est bien passé, false sinon
26
	 * @return true si tout s'est bien passé, false sinon
24
	 */
27
	 */
25
	public static boolean init() {
28
	public static boolean init() {
26
		// lire la config pour obtenir les langues
29
		// lire la config pour obtenir les langues
27
		languesDisponibles = Configuration.getLanguesDisponibles();
30
		languesDisponibles = parserLanguesDisponibles(Configuration.getLanguesDisponibles());
28
		// lire la config et charger la langue par défaut
31
		// lire la config et charger la langue par défaut
29
		langueDefaut = Configuration.getLangueDefaut();
32
		langueDefaut = Configuration.getLangueDefaut();
30
		// si la langue par défaut n'existe pas, on arrête tout
33
		// si la langue par défaut n'existe pas, on arrête tout
31
		return setLangue(langueDefaut);
34
		return setLangue(langueDefaut);
32
	}
35
	}
33
 
36
 
34
	/**
37
	/**
35
	 * Initialisation - raccourci pour initialiser avec une langue
38
	 * Initialisation - raccourci pour initialiser avec une langue
36
	 * @param langue la langue à définir jusqu'à nouvel ordre
39
	 * @param langue la langue à définir jusqu'à nouvel ordre
37
	 * @return true si tout s'est bien passé, false sinon
40
	 * @return true si tout s'est bien passé, false sinon
38
	 */
41
	 */
39
	public static boolean init(String langue) {
42
	public static boolean init(String langue) {
40
		boolean ok = false;
43
		boolean ok = false;
41
		if (init()) {
44
		if (init()) {
42
			ok = setLangue(langue);
45
			ok = setLangue(langue);
43
		}
46
		}
44
		return ok;
47
		return ok;
45
	}
48
	}
46
 
49
 
47
	/**
50
	/**
48
	 * [Re]définit la langue en cours
51
	 * [Re]définit la langue en cours
49
	 * @param langue
52
	 * @param langue
50
	 * @return true si la langue a été correctement définie, false
53
	 * @return true si la langue a été correctement définie, false
51
	 * 			sinon (si la langue n'est pas disponible)
54
	 * 			sinon (si la langue n'est pas disponible)
52
	 */
55
	 */
53
	public static boolean setLangue(String langue) {
56
	public static boolean setLangue(String langue) {
54
		boolean ok = false;
57
		boolean ok = false;
55
		// contrôle cracra
-
 
56
		if (languesDisponibles.indexOf(langue) != -1) { // on peut désactiver une langue même si le dictionnaire existe
58
		if (langueEstDisponible(langue)) { // on peut désactiver une langue même si le dictionnaire existe
57
			String nomDictionnaire = "messages_" + langue;
59
			String nomDictionnaire = "messages_" + langue;
58
			try {
60
			try {
59
				Dictionary.getDictionary(nomDictionnaire);
61
				Dictionary.getDictionary(nomDictionnaire);
60
				Msg.langue = langue;
62
				Msg.langue = langue;
61
				ok = true;
63
				ok = true;
62
			} catch (Exception e) {}
64
			} catch (Exception e) {}
63
		}
65
		}
64
		return ok;
66
		return ok;
65
	}
67
	}
-
 
68
	
-
 
69
	/**
-
 
70
	 * Retourne true si la langue demandée est disponible
-
 
71
	 * (ceci se fait via la valeur de config, peu importe, si le dictionnaire
-
 
72
	 * associé existe ou non)
-
 
73
	 * 
-
 
74
	 * @param langue
-
 
75
	 * @return true si la langue est disponible, false sinon
-
 
76
	 */
-
 
77
	public static boolean langueEstDisponible(String langue) {
-
 
78
		return languesDisponibles.contains(langue);
-
 
79
	}
66
 
80
 
67
	/**
81
	/**
68
	 * Retourne la langue actuellement définie; si on a essayé de définir
82
	 * 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
83
	 * une langue qui n'est pas disponible, retournera la langue par défaut
70
	 * 
84
	 * 
71
	 * @return la langue actuellement définie
85
	 * @return la langue actuellement définie
72
	 */
86
	 */
73
	public static String getLangue() {
87
	public static String getLangue() {
74
		return langue;
88
		return langue;
75
	}
89
	}
76
 
90
 
77
	/**
91
	/**
78
	 * @return la langue par défaut, définie dans la configuration
92
	 * @return la langue par défaut, définie dans la configuration
79
	 */
93
	 */
80
	public static String getLangueDefaut() {
94
	public static String getLangueDefaut() {
81
		return langueDefaut;
95
		return langueDefaut;
82
	}
96
	}
83
 
97
 
84
	/**
98
	/**
85
	 * @return les langues disponibles, définies dans la configuration
99
	 * @return les langues disponibles, définies dans la configuration
86
	 */
100
	 */
87
	public static String getLanguesDisponibles() {
101
	public static List<String> getLanguesDisponibles() {
88
		return languesDisponibles;
102
		return languesDisponibles;
89
	}
103
	}
90
 
104
 
91
	/**
105
	/**
92
	 * Retourne un message dans la langue en cours
106
	 * Retourne un message dans la langue en cours
93
	 * @param cle
107
	 * @param cle
94
	 * @return
108
	 * @return
95
	 */
109
	 */
96
	public static String get(String cle) {
110
	public static String get(String cle) {
97
		return get(cle, langue);
111
		return get(cle, langue);
98
	}
112
	}
99
 
113
 
100
	/**
114
	/**
101
	 * Retourne un message dans la langue en cours,
115
	 * Retourne un message dans la langue en cours,
102
	 * avec la première lettre en majuscule
116
	 * avec la première lettre en majuscule
103
	 * @param cle
117
	 * @param cle
104
	 * @return
118
	 * @return
105
	 */
119
	 */
106
	public static String Get(String cle) {
120
	public static String Get(String cle) {
107
		return Get(cle, langue);
121
		return Get(cle, langue);
108
	}
122
	}
109
 
123
 
110
	/**
124
	/**
111
	 * Retourne un message paramétré dans la langue en cours
125
	 * Retourne un message paramétré dans la langue en cours
112
	 * @param cle
126
	 * @param cle
113
	 * @param[] params
127
	 * @param[] params
114
	 * @return
128
	 * @return
115
	 */
129
	 */
116
	public static String get(String cle, String[] params) {
130
	public static String get(String cle, String[] params) {
117
		return get(cle, langue, params);
131
		return get(cle, langue, params);
118
	}
132
	}
119
 
133
 
120
	/**
134
	/**
121
	 * Retourne un message paramétré dans la langue en cours,
135
	 * Retourne un message paramétré dans la langue en cours,
122
	 * avec la première lettre en majuscule
136
	 * avec la première lettre en majuscule
123
	 * @param cle
137
	 * @param cle
124
	 * @param[] params
138
	 * @param[] params
125
	 * @return
139
	 * @return
126
	 */
140
	 */
127
	public static String Get(String cle, String[] params) {
141
	public static String Get(String cle, String[] params) {
128
		return Get(cle, langue, params);
142
		return Get(cle, langue, params);
129
	}
143
	}
130
 
144
 
131
	/**
145
	/**
132
	 * Retourne un message dans la langue demandée; s'il n'est pas trouvé, le cherche
146
	 * Retourne un message dans la langue demandée; s'il n'est pas trouvé, le cherche
133
	 * dans la langue par défaut; en cas d'échec, retourne un terme générique d'avertissement
147
	 * dans la langue par défaut; en cas d'échec, retourne un terme générique d'avertissement
134
	 * @param cle l'identifiant du message demandé
148
	 * @param cle l'identifiant du message demandé
135
	 * @param langue la langue dans laquelle on souhaite l'obtenir
149
	 * @param langue la langue dans laquelle on souhaite l'obtenir
136
	 * @return le message dans la langue en cours s'il existe, sinon le
150
	 * @return le message dans la langue en cours s'il existe, sinon le
137
	 * 			message dans la langue par défaut s'il existe, sinon la
151
	 * 			message dans la langue par défaut s'il existe, sinon la
138
	 * 			chaîne définie dans Msg.MESSAGE_INEXISTANT
152
	 * 			chaîne définie dans Msg.MESSAGE_INEXISTANT
139
	 */
153
	 */
140
	public static String get(String cle, String langue) {
154
	public static String get(String cle, String langue) {
141
		String nomDictionnaire = "messages_" + langue;
155
		String nomDictionnaire = "messages_" + langue;
142
		String message;
156
		String message;
143
		try {
157
		try {
144
			message = Dictionary.getDictionary(nomDictionnaire).get(cle);
158
			message = Dictionary.getDictionary(nomDictionnaire).get(cle);
145
		} catch (Exception e) {
159
		} catch (Exception e) {
146
			try {
160
			try {
147
				message = Dictionary.getDictionary("messages_" + langueDefaut).get(cle);
161
				message = Dictionary.getDictionary("messages_" + langueDefaut).get(cle);
148
			} catch (Exception me) {
162
			} catch (Exception me) {
149
				message = Msg.MESSAGE_INEXISTANT;
163
				message = Msg.MESSAGE_INEXISTANT;
150
			}
164
			}
151
		}
165
		}
152
		return message;
166
		return message;
153
	}
167
	}
154
 
168
 
155
	/**
169
	/**
156
	 * Comme get(String cle, String langue), mais retourne le message
170
	 * Comme get(String cle, String langue), mais retourne le message
157
	 * avec la première lettre en majuscule
171
	 * avec la première lettre en majuscule
158
	 * @param cle
172
	 * @param cle
159
	 * @param langue
173
	 * @param langue
160
	 * @return
174
	 * @return
161
	 */
175
	 */
162
	public static String Get(String cle, String langue) {
176
	public static String Get(String cle, String langue) {
163
		String message = get(cle, langue);
177
		String message = get(cle, langue);
164
		return message.substring(0,1).toUpperCase() + message.substring(1);
178
		return message.substring(0,1).toUpperCase() + message.substring(1);
165
	}
179
	}
166
 
180
 
167
	/**
181
	/**
168
	 * Retourne un message paramétré dans la langue demandée
182
	 * Retourne un message paramétré dans la langue demandée
169
	 * @param cle
183
	 * @param cle
170
	 * @param langue
184
	 * @param langue
171
	 * @param[] params
185
	 * @param[] params
172
	 * @return
186
	 * @return
173
	 */
187
	 */
174
	public static String get(String cle, String langue, String[] params) {
188
	public static String get(String cle, String langue, String[] params) {
175
		String message = get(cle, langue);
189
		String message = get(cle, langue);
176
		for (int i = 0; i < params.length; i++) {
190
		for (int i = 0; i < params.length; i++) {
177
			message = message.replace("{"+i+"}", params[i]);
191
			message = message.replace("{"+i+"}", params[i]);
178
		}
192
		}
179
		
193
		
180
		return message;
194
		return message;
181
	}
195
	}
182
 
196
 
183
	/**
197
	/**
184
	 * Comme get(String cle, String langue, String[] params), mais retourne le
198
	 * Comme get(String cle, String langue, String[] params), mais retourne le
185
	 * message avec la première lettre en majuscule
199
	 * message avec la première lettre en majuscule
186
	 * @param cle
200
	 * @param cle
187
	 * @param langue
201
	 * @param langue
188
	 * @param params
202
	 * @param params
189
	 * @return
203
	 * @return
190
	 */
204
	 */
191
	public static String Get(String cle, String langue, String[] params) {
205
	public static String Get(String cle, String langue, String[] params) {
192
		String message = get(cle, langue, params);
206
		String message = get(cle, langue, params);
193
		return message.substring(0,1).toUpperCase() + message.substring(1);
207
		return message.substring(0,1).toUpperCase() + message.substring(1);
194
	}
208
	}
-
 
209
	
-
 
210
	/**
-
 
211
	 * Convertit la chaine de config de langues en un objet de type liste
-
 
212
	 * @param languesDisponibles la chaine de config 
-
 
213
	 * @return List<String> une liste des langues disponibles
-
 
214
	 */
-
 
215
	private static List<String> parserLanguesDisponibles(String languesDisponibles) {
-
 
216
		ArrayList<String> langues = new ArrayList<>();
-
 
217
		String[] languesTab = languesDisponibles.split(",");
-
 
218
		for (int i = 0; i < languesTab.length; i++) {
-
 
219
			langues.add(languesTab[i]);
-
 
220
		}
-
 
221
		return langues;
-
 
222
	}
195
}
223
}