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

Langage Java Discussion :

probleme application multilingue


Sujet :

Langage Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 13
    Par défaut probleme application multilingue
    Bonjour à tous, je débute la programmation en java et la programmation en général. J'ai cherché comment mettre un programme tout simple en java et il se pose devant déjà quelques soucis. Sur le site du laboratoire de sun de supinfo j'ai trouvé un morceau de code pour avoir plusieurs langues. J'ai essayer ce code sur mon eclipse et ça ne marche pas.Voila le message d'erreur:


    Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name language, locale fr_FR
    at java.util.ResourceBundle.throwMissingResourceException(Unknown Source)
    at java.util.ResourceBundle.getBundleImpl(Unknown Source)
    at java.util.ResourceBundle.getBundle(Unknown Source)
    at LanguageChooser.<init>(LanguageChooser.java:20)
    at MyFrame.<init>(MyFrame.java:24)
    at MyFrame.main(MyFrame.java:14)


    et voila le code:
    Language_fr_FR.properties :

    Language_fr_FR.properties :
    menuLanguage=Langue
    labelHello=Bonjour le Monde!

    Language_en_US.properties

    Language_en_US.properties :
    menuLanguage=Language
    labelHello=Hello World!
    LanguageChooser.java :
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
     
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.Locale;
    import java.util.ResourceBundle;
     
    public class LanguageChooser implements ActionListener {
     
    // Nom du fichier properties (sans les codes ISO)
    private static final String LANGUAGE_FILE = "language";
     
    private static ResourceBundle resourceBundle;
     
    // La fenetre
    private MyFrame frame;
     
    public LanguageChooser(MyFrame aFrame) {
    frame = aFrame;
    resourceBundle = ResourceBundle.getBundle(LANGUAGE_FILE, Locale
    .getDefault());
    }
     
    // Methode appelee lorsqu’on selectionne un menu
    public void actionPerformed(ActionEvent arg0) {
    // On a selectionne le menu anglais
    if (arg0.getActionCommand().equals("menuEn")) {
    // On choisi le fichier anglais
    resourceBundle = ResourceBundle.getBundle(LANGUAGE_FILE, Locale.US);
    }
    // Sinon on choisi le francais
    else if (arg0.getActionCommand().equals("menuFr")) {
    // On choisi le francais
    resourceBundle = ResourceBundle.getBundle(LANGUAGE_FILE, Locale.FRANCE);
    }
    //On modifie les labels avec la nouvelle langue
    frame.paintLabelWithLanguage();
    }
     
    /*
    * Methode statique qui permet de recuperer un String du fichier de langue
    * en fonction de la cle passee en parametre
    */
    public static String getAnInternationalizeString(String key) {
    // On retourne la valeur associee a la cle
    return resourceBundle.getString(key);
    }
     
     
    }
     
    MyFrame.java :
     
    import javax.swing.*;
     
    public class MyFrame extends JFrame {
    // Déclaration des différents composants
    private JLabel labelHello;
    private JMenuBar menuBar;
    private JMenu menuLanguage;
    private JMenuItem menuFr;
    private JMenuItem menuEn;
    private LanguageChooser languageChooser;
     
    // Point d’entrée de l’application
    public static void main(String[] args) {
    MyFrame fenetre = new MyFrame();
    }
     
    public MyFrame() {
    // Initialisation standard
    super("Application Internationale");
    setSize(300, 300);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    // Création du LanguageChooser
    languageChooser = new LanguageChooser(this);
     
    // Création du label
    labelHello = new JLabel();
    getContentPane().add(labelHello);
     
    // Création de la barre de menu
    menuBar = new JMenuBar();
    menuLanguage = new JMenu();
     
    menuFr = new JMenuItem("Francais");
    menuFr.setActionCommand("menuFr");
    menuFr.addActionListener(languageChooser);
    menuLanguage.add(menuFr);
     
    menuEn = new JMenuItem("English");
    menuEn.setActionCommand("menuEn");
    menuEn.addActionListener(languageChooser);
    menuLanguage.add(menuEn);
     
    menuBar.add(menuLanguage);
    setJMenuBar(menuBar);
     
    // On initailise les valeurs des labels, menus
    paintLabelWithLanguage();
     
    // On affiche la fenêtre
    setVisible(true);
    }
     
    /*
    * Méthode qui initialise le texte des différents labels et menus en
    * fonction de la langue
    */
    protected void paintLabelWithLanguage() {
    menuLanguage.setText(LanguageChooser
    .getAnInternationalizeString("menuLanguage"));
    labelHello.setText(LanguageChooser
    .getAnInternationalizeString("labelHello"));
    }
    }
    Voila si quelqu'un pouvait aider un pauvre noob je lui en serais très reconnaissant. Bonne journée à tous

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 13
    Par défaut
    up, si personne ne peut m'aider pour mon problème mais que vous avez un exemple pour que je puisse voir comment faire ça serait sympa.

  3. #3
    Membre expérimenté Avatar de bidi
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 262
    Par défaut
    Bête question :-) tes fichiers properties, tu les as bien mis dans ton classpath?

  4. #4
    Membre expérimenté Avatar de bidi
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 262
    Par défaut
    Deuxième truc auquel je pense :-)

    Attention aux majuscules!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Language_fr_FR.properties ==> private static final String LANGUAGE_FILE = "language";

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 13
    Par défaut
    merci pour ton aide bidi.
    mes fichiers .properties sont bien dans mon classpath. y a bien une faute pour la majuscule mais cela n'a pas résolu mon problème. Le nombre d'erreur est toujours le même, et je ne vois toujours pas comment les résoudre

  6. #6
    Membre expérimenté Avatar de bidi
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 262
    Par défaut
    Essaye un peu de renommer ton language_fr_FR.properties et language_fr.properties juste pour voir :-)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 13
    Par défaut
    aucun changement, d'autres idées??

  8. #8
    Membre expérimenté Avatar de bidi
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 262
    Par défaut
    A part un problème de classpath je ne vois pas non :-)

    Essaye un peu un truc du genre au début de ton programme et regarde s'il affiche true ou false et tu seras fixé :-)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    System.out.println(new File("language_fr_FR.properties").exists());
    si c'est false c'est qu'il ne le trouve pas dans le classpath, si c'est true ben... ^^

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 13
    Par défaut
    tu n'avais pas besoin d'éditer pour enlever le O majuscule du out j'avais vu. Par contre j'ai un problème avec le File : File cannot be resolved to a type.

  10. #10
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    il faut que tu fasse un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    import java.io.File;

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 13
    Par défaut
    merci guigui5931.
    je suis un noob. ils sont pas dans le classpath. comment on fait pour les mettre dedans?

  12. #12
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 913
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 913
    Billets dans le blog
    54
    Par défaut
    Cela depend de la configuration du projet (si execution de l'IDE) ou du flag -cp ou -classpath si execution en ligne de commande. Une variable d'envirronement peut egalement etre modifiee pour le specifier.

    En gros, comment sont architectures les repertoires de ton projet, ou se trouvent ses fichiers, etc... ?
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 13
    Par défaut
    bonsoir bouye, merci de t'investir dans mon problème. Je suis sous eclipse et mes fichiers se trouvent dans le répertoire workspace\essai\src . As tu besoin de d'autres informations? bonne soirée à tous

  14. #14
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 913
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 913
    Billets dans le blog
    54
    Par défaut
    Alors je viens de faire un test dans JBuilder2007/Eclipse, ce que j'ai de plus proche du Eclipse de base et tout fonctionne directement sans modifier quoi que ce soit. Les fichiers properties sont dans le repertoire src et sont automatiquement recopies dans le repertoire bin a la compilation comme il se doit. Ensuite a l'execution, tout fonctionne correctement. Il te faut donc regarder de plus pres comment ton projet est configure.



    Je ne peux alors que donner quelques conseils en attendant :
    - eviter de ne pas avoir de package pour tes classes. Mieux vaut creer des packages meme si c'est juste pour des classes de test.
    - Si jamais tu deplaces egalement tes fichiers de ressource dans des package, il faut modifier le chemin d'acces. Ex : en cas d'utilisation d'un package test, il te faut remplacer "language" par "test/language".
    - il faut fournir un fichier language.properties qui contient les textes par defaut a utiliser quand la resolution de la langue ne mene a rien (y a pas de fichier properties qui correspond). Apres a toi de voir si tu preferres que ce fichier soit en anglais ou en francais.
    - en francais, et contrairement a l'anglais, il y a un espace entre le '!', le '?' ou le ':' et le dernier mot de la phrase. De meme, il n'est pas courant meme dans une interface graphique de capitaliser les mots. "Bonjour le Monde!" devient donc "Bonjour le monde !".
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 13
    Par défaut
    désolé pour le petit retard mais j'ai été un peu debordé. Pour en revenir en mon problème j'ai réussi a mettre les .properties au bon endroit. Seulement le programme ne marche pas chez moi. Je crois que je vais laisser tomber ce bout de code et essayer de le faire par moi même. Bonne soirée à tous et merci à tous ceux qui m'ont aidé

Discussions similaires

  1. Comment créer une application multilingue ?
    Par MiJack dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 29/09/2005, 23h17
  2. Programmation par module : applications multilingues
    Par argoet dans le forum Langages de programmation
    Réponses: 13
    Dernier message: 03/02/2004, 11h28
  3. Application multilingue
    Par Pystakus dans le forum IHM
    Réponses: 4
    Dernier message: 10/07/2003, 15h51

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