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
Ensuite dans la classe LabelsBundle on récupere cette variable et on va tapper dans les .properties.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Locale.setDefault(Locale.la_langue_du_user);
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !
Partager