Debutant avec ResourceBundle

Fermé
cs_anisj1m Messages postés 92 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 22 janvier 2009 - 17 oct. 2007 à 10:09
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 17 oct. 2007 à 20:40
bonjour;


je vient de debuter avec les Ressource Bundles; bon j'ai trouver un
exemplpe dans le site labo-sun; j'ai suivi toutes les etapes mais a la
fin j'ai eu des erreurs:

mon projet contient ces fichiers:

une frame simple:
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
<!--[if !IE]><--><!----><!--[endif]--><!--[if IE]>
<![endif]--> 
package p;
 
import javax.swing.*;
 
publicclass 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 d’entrée de l’application
publicstaticvoid 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
*/
protectedvoid paintLabelWithLanguage(){
menuLanguage.setText(LanguageChooser
.getAnInternationalizeString("menuLanguage"));
labelHello.setText(LanguageChooser
.getAnInternationalizeString("labelHello"));
}
}

<!-- END TEMPLATE: bbcode_code -->la classe LanguageChooser
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
<!--[if !IE]><--><!----><!--[endif]--><!--[if IE]>
<![endif]--> 
package p;
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Locale;
import java.util.ResourceBundle;
 
publicclass LanguageChooser implements ActionListener {
 
// Nom du fichier properties (sans les codes ISO)
privatestaticfinal String LANGUAGE_FILE = "language";
 
privatestatic ResourceBundle resourceBundle;
 
// La fenetre
private MyFrame frame;
 
public LanguageChooser(MyFrame aFrame){
frame = aFrame;
resourceBundle = ResourceBundle.getBundle(LANGUAGE_FILE, Locale
.getDefault());
}
 
// Methode appelee lorsqu’on selectionne un menu
publicvoid 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
elseif(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
*/
publicstatic String getAnInternationalizeString(String key){
// On retourne la valeur associee a la cle
return resourceBundle.getString(key);
}
 
 
}

<!-- END TEMPLATE: bbcode_code -->et les proprietes:

Language_fr_FR.properties
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
<!--[if !IE]><--><!----><!--[endif]--><!--[if IE]>
<![endif]--> 
menuLanguage=Language
labelHello=Hello World!

<!-- END TEMPLATE: bbcode_code -->Language_en_US.properties
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
<!--[if !IE]><--><!----><!--[endif]--><!--[if IE]>
<![endif]--> 
menuLanguage=Language
labelHello=Hello World!
 

<!-- END TEMPLATE: bbcode_code -->et enfin la fameuse erreur:
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
<!--[if !IE]><--><!----><!--[endif]--><!--[if IE]>
<![endif]--> 
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name language, locale fr_FR
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:837)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:806)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:577)
at p.LanguageChooser.(LanguageChooser.java:20)
at p.MyFrame.(MyFrame.java:26)
at p.MyFrame.main(MyFrame.java:16)

4 réponses

KenZara Messages postés 112 Date d'inscription vendredi 24 décembre 2004 Statut Membre Dernière intervention 20 décembre 2011
17 oct. 2007 à 10:47
Bonjour,

Tu nous as pas donné plus de détail sur tes .properties. Sont-ils à la racine ou ds un répertoire différent de celui de tes classes.
L'idéal pour que ton code fonctionne est de placer tes .class et .properties comme suit:

classes.dir
---> MyFrame.class
---> LanguageChooser .class
---> language_fr_FR.properties
---> language_en_EN.properties
---> language.properties.
sources.dir
---> MyFrame.java
--->LanguageChooser.java

A noter que tes properties contiennent ce que tu veux afficher, en parcourant ton code, il me semble qu'il s'agit de "MenuLanguage" et "LabelHelllo", donc dans la version francaise tu auras: "MenuLangage" et "LabelSalut" par exemple.
Tu auras donc:
MenuLanguage =  Menu Langage /* Ton texte francais*/
LabelHello = Salut /* Ton texte francais*/
Je pense que c'est dans ce sens là.
Vérifie bien que tes .properties sont bel et bien dans le répertoire ou se trouve tes .class

Kenza
0
cs_anisj1m Messages postés 92 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 22 janvier 2009
17 oct. 2007 à 11:46
maintenant je veut savoir comment faire pour que je l'applique sur les pages jsp et jsf.
comme l'utiliser dans mon projet j2ee
0
KenZara Messages postés 112 Date d'inscription vendredi 24 décembre 2004 Statut Membre Dernière intervention 20 décembre 2011
17 oct. 2007 à 12:20
Bonjour,

Euh, ce que je t'ai filé ça a marché? Et puis :( on ne dit pas "je veux" s'il te plait, limite tu nous demandes de faire le travail à ta place, ce qui n'est pas admis ici.
Sinon, d'un autre point de vue, je pense que t'es venu avec un problème au départ, donc la moindre des choses c'est de dire si la solution a été la bonne ou pas. Et si tu as un autre problème ca serait mieux que tu l'exposes en étant hyper précis.

Kenza
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
17 oct. 2007 à 20:40
Salut,

[auteur/ANISJ1M/832520.aspx anisj1m] > Merci de respecter les membres qui t'aident et d'arrêter de les prendre pour tes larbins  !

Bref hitoire de t'aider dans ta méditation le sujet est clos !

PS: KenZara tu t'y prends mal, faut dire : "Chef ! oui Chef !"

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
Rejoignez-nous