Internalización de Java - Clase ResourceBundle

La clase ResourceBundle se usa para almacenar texto y objetos que son sensibles a la configuración regional. Generalmente usamos archivos de propiedades para almacenar texto específico de la configuración regional y luego representarlos usando el objeto ResourceBundle. Los siguientes son los pasos para usar el archivo de propiedades específicas de la configuración regional en una aplicación basada en Java.

Paso 1: crear archivos de propiedades.

Supongamos que necesitamos un archivo de propiedades para la configuración regional en inglés. A continuación, cree un nombre de archivo de propiedades XXX_en_US.properties donde XXX es el nombre del archivo y en_US representa la configuración regional para inglés (EE. UU.).

Messages_en_US.properties

message=Welcome to TutorialsPoint.COM!

Creemos ahora un archivo de propiedades para la configuración regional francesa. A continuación, cree un nombre de archivo de propiedades XXX_fr_FR.properties donde XXX es el nombre del archivo y fr_FR representa la configuración regional para francés (Francia).

Messages_fr_FR.properties

message=Bienvenue sur TutorialsPoint.COM!

Aquí puede descubrir que la clave es la misma pero el valor es específico de la configuración regional en ambos archivos de propiedades.

Paso 2: Crear objeto ResourceBundle

Cree el objeto ResourceBundle con el nombre del archivo de propiedades y la configuración regional utilizando la siguiente sintaxis.

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

Paso 3: Obtenga el valor del objeto ResourceBundle.

Obtenga el valor del objeto ResourceBundle pasando la clave.

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

Ejemplo

El siguiente ejemplo ilustra el uso de objetos ResourceBundle para mostrar valores específicos de la configuración regional de los archivos de propiedades.

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"));
   }
}

Salida

Imprimirá el siguiente resultado.

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

Notas para las convenciones de nomenclatura

A continuación se muestran las convenciones de nomenclatura del archivo de propiedades.

  • Para el archivo de propiedades asignado a la configuración regional predeterminada, no es obligatorio ningún prefijo. message_en_US.properties es equivalente a message.properties.

  • Para el archivo de propiedades asignado a la configuración regional, el prefijo se puede adjuntar de dos maneras. message_fr.properties es equivalente a message_fr_FR.properties.

Impresión