Bonjour,
J'utilise les ResourceBundle avec succés. En effet, les menus et messages sont affichés en français ou en anglais selon le locale par défault de l'ordinateur. J'ai décidé d'ajouter une langue: l'Arabe. J'ai donc ajouté un fichier MyApp_ar.properties. Voilà le code :
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 try { resources = ResourceBundle.getBundle("resources.MyApp",new Locale("ar")); } catch (MissingResourceException mre) {System.exit(1);} try { InputStream in = new ByteArrayInputStream(resources.getString("fileLabel").getBytes("UTF-8" ) ); InputStreamReader chaine = new InputStreamReader(in, "UTF-8" ); BufferedReader br = new BufferedReader ( chaine ) ; char b[]=new char[100]; chaine.read(b,0,30); String s=String.valueOf(b); } catch (Exception mre) {}
Le string s est ensuite affiché sur un JLabel. Le problème est que ce qui est affiché ne ressemble à rien et n'est sûrement pas ce qui est écrit dans le fichier de propriété. Je suis passé sous debugger (sous Eclipse) et j'ai inspecté le contenu de la variable s avec de l'afficher sur le JLabel, même résultat.
J'ai changé mon code en remplaçant la ligne :
par la ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 InputStream in = new ByteArrayInputStream(resources.getString("fileLabel").getBytes("UTF-8" ) );
La variable s contient cette fois-ci la bonne chaine en arabe sous le debugger et lorsqu'elle est affichée sur JLabel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 InputStream in = new ByteArrayInputStream(******.getBytes("UTF-8" ) );
Est ce possible que les resourcesBundle puissent choisir le bon fichier propriètés mais ne sait pas le lire en unicode ? J'ai du mal à le croire, il y a peut être quelque chose que je n'ai pas compris.
Merci d'avance.
Partager