Internationalization en Java ou Java i18n est une fonctionnalité très importante. Java fournit une prise en charge de l’internationalisation (i18n) via des bundles de ressources.
Internationalization en Java
Pour que votre application prenne en charge différentes locales, nous devons créer un fichier de propriétés spécifique à la locale. Les noms de fichier suivent le modèle du nom du bundle avec le code de langue et le code de pays, par exemple ApplicationMessages_en_US.properties
. Une fois que les fichiers de propriétés pour des locales spécifiques sont prêts, tout ce que vous avez à faire est d’initialiser le bundle de ressources avec la Locale correcte. Java fournit deux classes java.util.ResourceBundle
et java.util.Locale
qui sont utilisées à cette fin. ResourceBundle lit le fichier de propriétés spécifique à la locale et vous pouvez obtenir la valeur spécifique à la locale pour n’importe quelle clé. Cela est très utile pour rendre les textes de votre application web spécifiques à la locale, vous pouvez obtenir les informations de la locale à partir de la requête HTTP et générer la page dynamique avec ces fichiers de bundle de ressources de locale. Vous pouvez également offrir à l’utilisateur la possibilité de choisir la locale et de mettre à jour les libellés dynamiquement.
Exemple d’i18n en Java
Pour l’exemple de java i18n, j’ai créé le projet dont la structure est comme l’image ci-dessous. Voici le code java pour la classe JavaInternationalizationExample.
package com.journaldev.i18n;
import java.util.Locale;
import java.util.ResourceBundle;
public class JavaInternationalizationExample {
public static void main(String[] args) {
//locale par défaut
ResourceBundle bundle = ResourceBundle.getBundle("ApplicationMessages");
//Obtenir le ResourceBundle avec le Locale déjà défini
ResourceBundle bundleFR = ResourceBundle.getBundle("ApplicationMessages", Locale.FRANCE);
//Obtenir le resource bundle lorsque le Locale doit être créé
ResourceBundle bundleSWE = ResourceBundle.getBundle("ApplicationMessages", new Locale("sv", "SE"));
//imprimons quelques messages
printMessages(bundle);
printMessages(bundleFR);
printMessages(bundleSWE);
}
private static void printMessages(ResourceBundle bundle) {
System.out.println(bundle.getString("CountryName"));
System.out.println(bundle.getString("CurrencyCode"));
}
}
Ici, le nom du bundle est ApplicationMessages
et j’ai 2 fichiers de ressources spécifiques à la locale et un fichier de ressources par défaut. ApplicationMessages.properties
CountryName=USA
CurrencyCode=USD
ApplicationMessages_fr_FR.properties
CountryName=France
CurrencyCode=Euro
ApplicationMessages_sv_SE.properties
CountryName=Sweden
CurrencyCode=Kr
Remarquez l’utilisation de la classe Locale, il existe déjà quelques locales définies, mais nous pouvons toujours créer une nouvelle locale en passant le code de langue et le code de pays à son constructeur. Lorsque j’exécute le programme ci-dessus, voici la sortie.
USA
USD
France
Euro
Sweden
Kr
C’est tout pour un exemple rapide de java i18n. L’internationalisation en java est très utile dans les applications web pour servir des pages dans une langue spécifique à la locale.
Source:
https://www.digitalocean.com/community/tutorials/java-i18n-internationalization-in-java