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