Problème multilinguisme - internationalisation
Bonjour à toutes et à tous,
Je boss actuellement sur une appli développée avec le Framework Struts. Et j'ai un problème avec notre internationalization.
On doit gerer des utilisateurs et chaque utilisateur a la possibilité de choisir la langue dans laquel sera proposer l'application. A la connection de celui ci on récupére donc la langue choisi dans la BDD et on va ensuite tapper dans le fichier .properties correspondant à la langue choisie.
Le problème réside je pense dans la définition de la variable Locale qui stock la langue de l'utilisateur.
A la connection d'un utilisateur, on force la variable Locale avec un
Code:
Locale.setDefault(Locale.la_langue_du_user);
Ensuite dans la classe LabelsBundle on récupere cette variable et on va tapper dans les .properties.
Le souci est que lorsque plusieurs utilisateurs se connectent en même temps et dans des langues différentes la variable Locale qui est rattaché au serveur ne conserve uniquement que la dernier valeur affecté (ce qui est tout a fait normal) et l'application n'est pas forcement présentée dans la langue choisi par l'utilisateur. Je pense que la solution serrait de rattacher cette variable à la session des utilisateurs, mais le souci est que je n'ai pas de visibilité sur ces sessions depuis ma classe LabelsBundle:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
package rialto.tag;
import java.util.Locale;
import java.util.ResourceBundle;
public class LabelsBundle {
public static String getLabel(String key){
Locale[] supportedLocales = {
Locale.FRENCH,
Locale.ENGLISH
};
//utilise la valeur locale
Locale localisation = Locale.getDefault();
//Si on veut forcer en anglais ou français
//Locale localisation=supportedLocales[0];
ResourceBundle labels;
String text;
try {
labels = ResourceBundle.getBundle("labelsRialto", localisation);
text = labels.getString(key);
}
catch (Exception e) {
text = key;
}
return text;
}
} |
Si quelqu'un connait une petite manip pour résoudre mon problème je serais vraiment très intéressé.
Merci @ Tous, bonne continuation !