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:
LanguageChooser.java :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!
Voila si quelqu'un pouvait aider un pauvre noob je lui en serais très reconnaissant. Bonne journée à tous
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 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); } } 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 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")); } }
Partager