Subversion Repositories eFlore/Applications.cel

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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