IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

Problème multilinguisme - internationalisation


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de ythim
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 76
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : 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 !

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 144
    Par défaut
    salut,

    je ne sais pas si je reponds a ta question, mais tu peux envoyé dans ton cookie des preferences utilisateurs et dans tes pages, rechercher la langue pour afficher dans la bonne langue en attendant d avoir la session .

  3. #3
    Membre confirmé Avatar de ythim
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 76
    Par défaut
    Merci de ta réponse, mais j'aimerai trouver une solution sans utiliser des cookies, il semble qu'il devrait être possible de passer par les sessions.

    Mais avant ca j'ai une question toutes simples est-il possible de faire fonctionner une application dans 2 langue différentes au même instant sur le même serveur ???

    Et si oui si quelqu'un à une petite idée pour mon problème ca serait super cool.

    Pour l'instant j'ai tenter de définir en entré de mes actions la langue choisi par l'utilisateur mais je ne pense pas que ce soit vraiment complet.

    Car si 2 actions sont appelées l'une après l'autre la langue qui sera retenu sera celle utilisée pour la 2eme action...

    Enfin bref je suis un peu dans le flou

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Les méthodes getLocale et setLocale de la classe Action ne te suffisent pas ?

  5. #5
    Membre confirmé Avatar de ythim
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 76
    Par défaut
    Bein le souci c'est que les méthodes setLocale et getLocale de la classe Action nécessite le paramêtre "request". Or pas de problème dans mon action j'ai accès à cette variable mais pas dans ma classe qui effectue le lien avec le dictionnaire:
    "LablesBundle.java"

    Cette classe fait partie du package :"package rialto.tag;"

    Et cette classe utilise donc la variable Locale défini pour le serveur que je récupére avec Locale.getDefault();

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Tu ne peux pas modifier ta méthode getLabel en lui rajoutant la locale en paramètre ? (celle que tu auras récupérée dans l'action par un getLocale)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'internationalisation d'une application
    Par jbrasselet dans le forum ASP.NET
    Réponses: 5
    Dernier message: 28/06/2011, 13h58
  2. [Xaml][3.0] Problème d'internationalisation
    Par GroXx dans le forum Windows Presentation Foundation
    Réponses: 11
    Dernier message: 09/10/2009, 15h33
  3. Réponses: 2
    Dernier message: 01/10/2009, 15h33
  4. Problème d'internationalisation sous Django
    Par LaaLaa dans le forum Django
    Réponses: 0
    Dernier message: 24/03/2009, 18h46
  5. Problème d'internationalisation par défaut
    Par walach dans le forum SpagoBI
    Réponses: 1
    Dernier message: 20/04/2008, 18h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo