bonjour;
je vient de debuter avec les Ressource Bundles; bon j'ai trouver un exemplpe dans un autre site; j'ai suivi toutes les etapes mais a la fin j'ai eu des erreurs:
mon projet contient ces fichiers:
une frame simple:
la classe LanguageChooser
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 package p; 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 dentrée de lapplication 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")); } }
et les proprietes:
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 package p; 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 lorsquon 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); } }
Language_fr_FR.properties
Language_en_US.properties
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 menuLanguage=Language labelHello=Hello World!
et enfin la fameuse erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 menuLanguage=Language labelHello=Hello World!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name language, locale fr_FR at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:837) at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:806) at java.util.ResourceBundle.getBundle(ResourceBundle.java:577) at p.LanguageChooser.<init>(LanguageChooser.java:20) at p.MyFrame.<init>(MyFrame.java:26) at p.MyFrame.main(MyFrame.java:16)
Partager