Subversion Repositories eFlore/Applications.cel

Rev

Rev 2613 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
997 aurelien 1
package org.tela_botanica.client.i18n;
992 aurelien 2
 
2613 mathias 3
import org.tela_botanica.client.modeles.objets.Configuration;
4
import com.google.gwt.i18n.client.Dictionary;
2614 aurelien 5
import com.google.gwt.user.client.Window.Location;
2613 mathias 6
 
992 aurelien 7
/**
2613 mathias 8
 * Gère l'internationalisation
992 aurelien 9
 */
2613 mathias 10
public class Messages {
11
 
12
	/** singleton */
13
	private static Messages instance;
14
 
15
	/** contient un dictionnaire de messages par langue */
16
	//protected Map<String, Dictionary> langues;
17
	/** langue en cours */
18
	protected String langue;
19
	/** langue par défaut */
20
	protected String langueDefaut;
21
	/** langues disponibles */
22
	protected String languesDisponibles;
23
 
2614 aurelien 24
	public static Messages getInstance() {
2613 mathias 25
		if (instance == null) {
26
			instance = new Messages();
27
		}
28
		return instance;
29
	}
30
 
31
	private Messages() {
32
		// lire la config pour obtenir les langues
2614 aurelien 33
		languesDisponibles = Configuration.getLanguesDisponibles();
2613 mathias 34
		// lire la config et charger la langue par défaut
2614 aurelien 35
		langueDefaut = Configuration.getLangueDefaut();
36
		// Si la langue est précisée dans l'url on la prend, sinon on prend celle par défaut
37
		// @TODO: avertissement si la langue indiquée dans l'url n'est pas la bonne
38
		String langueActive = getLangueActiveParUrlOuDefaut();
39
		setLangue(langueActive);
2613 mathias 40
	}
41
 
42
	public void setLangue(String langue) {
43
		// @TODO vérifier que la langue est une clé de la Map
44
		this.langue = langue;
45
	}
46
 
47
	/**
48
	 * Retourne un message dans la langue en cours
49
	 * @param cle
50
	 * @return
51
	 */
2614 aurelien 52
	public String get(String cle) {
53
		return get(cle, langue);
2613 mathias 54
	}
2614 aurelien 55
 
56
	/**
57
	 * Retourne un message paramétré dans la langue en cours
58
	 * @param cle
59
	 * @param[] params
60
	 * @return
61
	 */
62
	public String get(String cle, String[] params) {
63
		return get(cle, langue, params);
64
	}
2613 mathias 65
 
66
	/**
67
	 * Retourne un message dans la langue demandée; s'il n'est pas trouvé, le cherche
68
	 * dans la langue par défaut; en cas d'échec, retourne un terme générique d'avertissement
69
	 * @param cle
70
	 * @param langue
71
	 * @return
72
	 */
2614 aurelien 73
	public String get(String cle, String langue) {
2613 mathias 74
		String nomDictionnaire = "messages_" + langue;
75
		String message;
76
		try {
77
			message = Dictionary.getDictionary(nomDictionnaire).get(cle);
78
		} catch (Exception e) {
79
			try {
80
				message = Dictionary.getDictionary("messages_" + langueDefaut).get(cle);
81
			} catch (Exception me) {
82
				message = "hoho c'est la merde";
83
			}
84
		}
85
		return message;
86
	}
2614 aurelien 87
 
88
	/**
89
	 * Retourne un message paramétré dans la langue demandée
90
	 * @param cle
91
	 * @param langue
92
	 * @param[] params
93
	 * @return
94
	 */
95
	public String get(String cle, String langue, String[] params) {
96
		String message = get(cle, langue);
97
		for (int i = 0; i < params.length; i++) {
98
			message = message.replace("{"+i+"}", params[i]);
99
		}
100
 
101
		return message;
102
	}
103
 
104
	public String getLangueActiveParUrlOuDefaut() {
105
		//TODO: déplacer ceci si on est une chouette !
106
		return Location.getParameter("lang") == null ? langueDefaut : Location.getParameter("lang");
107
	}
992 aurelien 108
}