Internalisation Java - Classe ResourceBundle

La classe ResourceBundle est utilisée pour stocker du texte et des objets sensibles aux paramètres régionaux. En général, nous utilisons des fichiers de propriétés pour stocker du texte spécifique aux paramètres régionaux, puis les représenter à l'aide de l'objet ResourceBundle. Voici les étapes pour utiliser le fichier de propriétés spécifiques aux paramètres régionaux dans une application Java.

Étape 1: Créez des fichiers de propriétés.

Supposons que nous ayons besoin d'un fichier de propriétés pour les paramètres régionaux anglais. Créez ensuite un nom de fichier de propriétés XXX_en_US.properties où XXX est le nom du fichier et en_US représente les paramètres régionaux pour l'anglais (États-Unis).

Messages_en_US.properties

message=Welcome to TutorialsPoint.COM!

Créons maintenant un fichier de propriétés pour les paramètres régionaux français. Créez ensuite un nom de fichier de propriétés XXX_fr_FR.properties où XXX est le nom du fichier et fr_FR représente les paramètres régionaux du français (France).

Messages_fr_FR.properties

message=Bienvenue sur TutorialsPoint.COM!

Ici, vous pouvez comprendre que la clé est la même mais que la valeur est spécifique aux paramètres régionaux dans le fichier de propriétés.

Étape 2: créer un objet ResourceBundle

Créez un objet ResourceBundle avec le nom du fichier de propriétés et les paramètres régionaux en utilisant la syntaxe suivante.

ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);

Étape 3: obtenez la valeur de l'objet ResourceBundle.

Obtenez la valeur de l'objet ResourceBundle en passant la clé.

String value = bundle.getString("message");

Exemple

L'exemple suivant illustre l'utilisation d'objets ResourceBundle pour afficher des valeurs spécifiques aux paramètres régionaux à partir de fichiers de propriétés.

IOTester.java

import java.util.Locale;
import java.util.ResourceBundle;

public class I18NTester {
   public static void main(String[] args) {
      ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);  
      System.out.println("Message in "+Locale.US +": "+bundle.getString("message"));  

      bundle = ResourceBundle.getBundle("Messages", Locale.FRANCE);  
      System.out.println("Message in "+Locale.FRANCE +": "+bundle.getString("message"));
   }
}

Production

Il imprimera le résultat suivant.

Message in en_US: Welcome to TutorialsPoint.COM!
Message in fr_FR: Bienvenue sur TutorialsPoint.COM!

Remarques sur les conventions de dénomination

Voici les conventions de dénomination du fichier de propriétés.

  • Pour le fichier de propriétés mappé sur les paramètres régionaux par défaut, aucun préfixe n'est obligatoire. message_en_US.properties est équivalent à message.properties.

  • Pour le fichier de propriétés mappé sur les paramètres régionaux, le préfixe peut être attaché de deux manières. message_fr.properties est équivalent à message_fr_FR.properties.

Impression