Problème Internationalisation IDE

Problème Internationalisation IDE - Java - Programmation

Marsh Posté le 13-01-2009 à 04:57:49    

Bonjour,
 
Je travaille actuellement sur un programme en Java que je cherche à internationaliser en français, anglais et chinois avec un menu permettant de changer de langue à volonté.
 
Mon problème est que lorsque je lance le jar par moi même, je ne peux changer de langue qu'une seule fois (si j'essaie de rechanger rien ne se passe, ni plantage, ni exception) alors que quand je lance le programme via l'IDE (NetBeans 6.1) je peux changer de langue à volonté sans aucun soucis.
 

Code :
  1. private void menuItm_engActionPerformed(java.awt.event.ActionEvent evt) {                                           
  2.     ResourceBundle.clearCache();
  3.     Locale en=new Locale("en_EN" );
  4.     Locale.setDefault(en);
  5.     bundle=ResourceBundle.getBundle("youhua01/Bundle",en);
  6.     updateBundle(en);
  7. }                                         
  8. private void menuItm_zhActionPerformed(java.awt.event.ActionEvent evt) {                                         
  9.     ResourceBundle.clearCache();
  10.     Locale zh=new Locale("zh_CN" );
  11.     Locale.setDefault(zh);
  12.     bundle=ResourceBundle.getBundle("youhua01/Bundle", zh);
  13.     updateBundle(zh);
  14. }                                         
  15. private void menuItm_fraActionPerformed(java.awt.event.ActionEvent evt) {                                           
  16.     ResourceBundle.clearCache();
  17.     Locale fr= new Locale("fr_FR" );
  18.     Locale.setDefault(fr);
  19.     bundle=ResourceBundle.getBundle("youhua01/Bundle", fr);
  20.     updateBundle(fr);
  21. }                                         
  22. private void updateBundle(Locale loc)
  23. {
  24.     this.setTitle(bundle.getString("MainFrame.title" ));
  25.     this.jTabbedPane1.setTitleAt(0, bundle.getString("MainFrame.tab_sys.text" ));
  26.     this.jTabbedPane1.setTitleAt(1, bundle.getString("MainFrame.tab_opt.text" ));
  27.     this.main_menu.setText(bundle.getString("MainFrame.main_menu.text" ));
  28.     this.menu_lang.setText(bundle.getString("MainFrame.menu_lang.text" ));
  29.     this.menuItm_eng.setText(bundle.getString("MainFrame.menuItm_eng.text" ));
  30.     this.menuItm_zh.setText(bundle.getString("MainFrame.menuItm_zh.text" ));
  31.     this.menuItm_fra.setText(bundle.getString("MainFrame.menuItm_fra.text" ));
  32.     this.menuItm_exit.setText(bundle.getString("MainFrame.menuItm_exit.text" ));
  33.    
  34.     tab_sys.updateBundle(loc);
  35.     tab_opt.updateBundle(loc);
  36. }


J'utilise donc un ResourceBundle associé à trois fichiers Properties (Bundle.properties, Bundle_fr_FR.properties, Bundle_zh_CN.properties).
 
Voilà, donc si quelqu'un à une idée pour résoudre mon problème..

Reply

Marsh Posté le 13-01-2009 à 04:57:49   

Reply

Marsh Posté le 13-01-2009 à 10:47:07    

J'ai solutionné mon problème. J'ai changé plusieurs trucs. Déjà là construction des Locales, il fallait faire:

Code :
  1. Locale en=new Locale("en","GB" );
  2. ...
  3. Locale zh=new Locale("zh","CN" );
  4. ...
  5. Locale fr=new Locale("fr","FR" );


J'ai créé un fichier Bundle_en_GB.properties pour stocker l'anglais qui était auparavant dans le fichier Bundle.properties.
 
J'ai aussi supprimé les ResourceBundle.clearCache() qui ne servaient à rien (je n'ai d'ailleurs pas bien compris à quoi cette fonction est censée servir).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed