Bonjour à tous,

Voilà, je me suis penché sur le problème de l'internationalisation d'une
application JAVA, en m'inspirant du tutoriel de SUN sur la question.

cf :
http://java.sun.com/docs/books/tutor...tro/after.html

Comme je ne suis pas un expert en JAVA, je me permets de vous présenter
mon programme d'exemple (qui permet donc d'avoir ici la même interface utilisateur
en anglais, en français et en italien) pour pouvoir profiter de vos commentaires
dans le but de l'améliorer, si cela n'est pas bon du tout.

Voici en image l'interface en français :



Et voici la même interface en italien :



Voici le fichier langage.properties qu'il faut updater en fonction de la
langue désirée par l'utilisateur:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
#Langages
#Sun Apr 23 20:54:54 CEST 2006
Pays=US
Langue=en
Vous avez donc le choix avec

Pays=US Langue=en
Pays=FR Langue=fr
Pays=IT Langue=it


Voici le code du programme :

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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
import javax.swing.*;
 
import java.io.*;
import java.util.*;
 
public class MultiLangageApplication extends JFrame
{
    Locale         contexteLocal;
  ResourceBundle traducteur;
 
  //*************************************************
    // CONSTRUCTEUR
    public MultiLangageApplication()
    {
    initialisationLangue();
 
    setTitle(traducteur.getString("T_titreJFrame"));
    setSize(500, 400);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setJMenuBar( initialiserLeMenu() );
    initialiserJPanel();
    setVisible(true);
    }
 
  //*************************************************    
    public JMenuBar initialiserLeMenu()
    {
        JMenuBar  menuBar;
        JMenu     menu;
        JMenuItem menuItem;
 
        // On crée la barre de menu
        menuBar = new JMenuBar();
 
        // on construit le 1er menu "Fichier"
        menu = new JMenu( traducteur.getString("M_fichier"));
        menuBar.add(menu);
 
        menuItem = new JMenuItem(traducteur.getString("M_ouvrir"));
        menu.add(menuItem);
 
        menuItem = new JMenuItem(traducteur.getString("M_fermer"));
        menu.add(menuItem);
 
        menuItem = new JMenuItem(traducteur.getString("M_quitter"));
        menu.add(menuItem);
 
        // on construit le 2ème menu "Edition"
        menu = new JMenu( traducteur.getString("M_edition"));
        menuBar.add(menu);
 
        menuItem = new JMenuItem( traducteur.getString("M_couper"));
        menu.add(menuItem);
 
        menuItem = new JMenuItem( traducteur.getString("M_copier"));
        menu.add(menuItem);
 
        menuItem = new JMenuItem( traducteur.getString("M_coller"));
        menu.add(menuItem);
 
        menuItem = new JMenuItem( traducteur.getString("M_parametres"));
        menu.add(menuItem);
 
        // on construit le 3ème menu "Aide"
        menu = new JMenu( traducteur.getString("M_aide"));
        menuBar.add(menu);
 
        menuItem = new JMenuItem( traducteur.getString("M_manuel"));
        menu.add(menuItem);
 
        menuItem = new JMenuItem( traducteur.getString("M_aproposde"));
        menu.add(menuItem);
 
        return menuBar;
    }
 
  //*************************************************    
    public void initialiserJPanel()
    {
        String[] entetes = {
                               traducteur.getString("JTAB_client"),
                               traducteur.getString("JTAB_adresse"),
                               traducteur.getString("JTAB_ville"),
                               traducteur.getString("JTAB_pays")
                           };
        Object[][] contenu =
        {
                {"01","02","03","04"},
                {"04","05","06","07"},
                {"08","09","10","11"},
                {"12","13","14","15"},
                {"16","17","18","19"},
                {"20","21","22","23"},
                {"24","25","26","27"},
                {"28","29","30","31"},
                {"32","34","34","35"}
        };
 
        JTable letableau = new JTable( contenu, entetes);
 
        this.getContentPane().add("Center", new JScrollPane( letableau));
 
        JLabel lelabel = new JLabel(traducteur.getString("JLAB01_message"));
        this.getContentPane().add("South", lelabel);
 
        // les images
        Icon image = new ImageIcon(traducteur.getString("JLAB02_chemin_image"));
        JLabel lab_image = new JLabel(image);
 
        this.getContentPane().add("North", lab_image);
    }
 
  //*************************************************    
    public void initialisationLangue()
    {
        // Création d'un Properties et remplissage à partir du fichier
        Properties prop = new Properties();
        try {
            prop.load(  new FileInputStream( "langage.properties"));
            }
        catch( IOException e)
          {
          System.out.println( "Pb I/O: "+e.getMessage());
          }
 
        String langue = prop.getProperty( "Langue");
        String pays   = prop.getProperty( "Pays");
 
        contexteLocal = new Locale(langue, pays);
        traducteur    = ResourceBundle.getBundle("MessagesBundles", contexteLocal);
    }
 
  //*************************************************
    public static void main(String[] args)
    {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            }
        catch (Exception e) {
                            System.out.println(e);
                            }
 
        // on lance l'application
        new MultiLangageApplication();
    }
 
  //*************************************************
}
Et voici un lien vers le ZIP complet contenant tous les fichiers
nécessaires (traductions comprises), prêt à être intégré tel quel dans Eclipse :

ZIP

Y'a-t-il une bonne âme parmis vous qui s'y connait en la question et
qui peut me dire si c'est la bonne voie à suivre pour un programme de
plus grande envergure que ce petit programme d'exemple ?

D'avance merci de vos conseils.

P.S.: si c'est bon, je vais ajouter tout ça dans la partie du forum
JAVA : "Partagez vos sources".