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

Agents de placement/Fenêtres Java Discussion :

Interface multi langue


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 35
    Par défaut Interface multi langue
    Bonjour,

    Je cherche actuellement à mettre en place un système de selection de la langue pour mon application, les langues sont disponibles au travers de fichiers Yaml dans le but de permettre à tout utilisateur de créer sa propre langue si celle ci n'existe pas, et ceci de façon assez simple.

    Cependant, un problème se pose à moi, une fois que je change de langue, je n'ai pas d'autre solution que de relancer mon application pour voir les changements (biensur si j'ouvre des jdialog après avoir changé de langue, elles sont bien dans la nouvelle langue puisqu'elle sont générées de nouveau)

    Pour chaque composants de mon application, lors du setText, j'appele une fonction qui me traduit le mot choisi dans la langue voulue. Le problème est que, je pensais qu'un SwingUtilities.updateComponentTreeUi(maFrame) suffirait à mettre à jour tous les labels, mais je me suis fourvoyé, et ça ne semble pas fonctionner, existe t'il une solution en gardant mon systeme de fichiers langues yaml ?

    J'ai vu des solutions utilisant RessourceBundle ou meme une librairie disponible ici http://java-gettingstarted.blogspot....n-in-java.html mais ça ne correspond pas exactement à ce que je cherche, ou alors je ne sais pas comment m'y prendre pour adapter ces solutions à mon problème.

    Si vous avez la moindre idée je suis preneur, au pire un redémarrage d'nterface n'est jamais bien méchant, mais bon, si on peut éviter

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Les RessourceBundles ne régleront pas ce problème (même s'il doit y avoir moyen de lire un fichier Yaml via les RessourceBundles).

    Le soucis c'est qu'il n'y a aucun lien entre tes composants et leurs clefs.
    Bref je supose que tu dois avoir quelque chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JLabel label = new JLabel();
    label.setText( getLocalizedText("clef") );
    Le problème c'est que pour mettre à jour le texte du JLabel par la suite il faut récupérer sa clef, qui n'est pas associé au JLabel...

    Donc il faudrait associer pour chaque composant/attribut la clef correspondante afin de pouvoir la mettre à jour si besoin, ce qui peut s'avérer assez pénible


    A ma connaissance il n'y a rien de prévu en standard...


    a++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 35
    Par défaut
    Merci pour réponse rapide. Donc apparement c'est bien ce que je redoutais, je crois que malheureusement il faudra relancer l'application a moins que je fasse une fonction qui recherche tous les textes manuellement après un changement de langue, ce qui encore une fois va s'avérer très lourd ... dommage

    Merci encore en tout cas

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    nope, rien en standard. A toi d'avoir un structure centralisée pour gérer tout ça. Tu pourrais avoir une classe utilitaire qui génère tous tes JLabel / JButton / JMenu et garde le liens avec les clés.

    Ou étendre chaque classe pour qu'elle garde le lien.

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Une solution pourrait être de passer par la propriété "name" des composants et d'une convention de nommage des clefs, par exemple nom_du_composant.nom_de_la_propriete.

    Du coup les déclarations des composants se limiteraient à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JButton button = new JButton();
    button.setName("myButton");
    Avec les clef défini comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    myButton.text = Texte du bouton
    myButton.toolTipText = Tooltip du bouton
    Ensuite il "suffit" d'utiliser la reflection pour associer la bonne valeur à chaque propriété...
    (mais bon il y a quand même pas mal de truc chiant à gérer)


    a++

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

Discussions similaires

  1. Bien créer une application multi-langues ? Unicode ou non ?
    Par Maxime Abbey dans le forum Composants VCL
    Réponses: 28
    Dernier message: 10/09/2007, 17h20
  2. Application multi-langue
    Par JerBi dans le forum EDI
    Réponses: 2
    Dernier message: 15/09/2005, 02h22
  3. [Application multi-langues] Compilateur ou fichier lng ?
    Par Teb dans le forum Composants VCL
    Réponses: 5
    Dernier message: 16/08/2005, 16h48
  4. [CR][.NET] Rapport multi-langue
    Par Harakor dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 16/02/2005, 17h06
  5. [C#] Multi langue - fichier resource.resx
    Par dacamp dans le forum ASP.NET
    Réponses: 5
    Dernier message: 03/06/2004, 16h25

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