Internationalisation des applications Java
Ahcène Bounceur
java.util.ResourceBundle
Resource bundles contain locale-specific objects.
This allows you to write programs that can:
be easily localized, or translated, into different languages
handle multiple locales at once
be easily modified later to support even
more locales
java.util.ListResourceBundle
ListResourceBundle is an abstract subclass of ResourceBundle that
manages resources for a locale in a
convenient and easy to use list.
MesMessages.java /défaut MesMessages_fr.java /français MesMessages_en.java /anglais
MesMessages_fr_FR.java MesMessages_fr_BE.java MesMessages_fr_CA.java
…
import java.util.*;
public class MesMessages extends ListResourceBundle {
public Object[][] getContents() { return contents;
}
static final Object[][] contents = { // LOCALIZE THIS
{"valider", "Valider"}, {"effacer", "Effacer"}, {"surnom", "* Surnom : "},
{"passe", "* Mot de passe : "}
// END OF MATERIAL TO LOCALIZE };
}
import java.util.*;
public class MesMessages_fr extends ListResourceBundle {
public Object[][] getContents() { return contents;
}
static final Object[][] contents = { // LOCALIZE THIS
{"valider", "Valider"}, {"effacer", "Effacer"}, {"surnom", "* Surnom : "},
{"passe", "* Mot de passe : "}
// END OF MATERIAL TO LOCALIZE };
}
import java.util.*;
public class MesMessages_en extends ListResourceBundle {
public Object[][] getContents() { return contents;
}
static final Object[][] contents = { // LOCALIZE THIS
{"valider", "Enter"}, {"effacer", "Clear"},
{"surnom", "* Nickname: "}, {"passe", "* Password: "}
// END OF MATERIAL TO LOCALIZE };
}
java.util.Locale
A Locale object represents a specific geographical, political, or cultural region.
An operation that requires a Locale to perform its task is called locale-sensitive and uses the Locale to tailor information for the user.
The language argument is a valid ISO Language
Code.
…
Locale maLocale = Locale.getDefault();
if ( langue.equals("en") ) {
maLocale = new Locale("en","GB");
}
else if ( langue.equals("fr") ) {
maLocale = new Locale("fr","FR");
}
Locale.setDefault(maLocale);
ResourceBundle mesMessages =
ResourceBundle.getBundle("MesMessages", maLocale);
…
System.out.println( mesMessages.getString("surnom") );
…