Internacionalización en Java o Java i18n es una característica muy importante. Java proporciona soporte de internacionalización (i18n) a través de paquetes de recursos.
Internacionalización en Java
Para hacer que tu aplicación soporte diferentes locales, necesitamos crear archivos de propiedades específicos de la localización. Los nombres de archivo siguen el patrón del nombre del paquete con el código de idioma y el código de país, por ejemplo ApplicationMessages_en_US.properties
. Una vez que los archivos de propiedades para locales específicos estén listos, todo lo que necesitas hacer es inicializar el paquete de recursos con la Locale correcta. Java proporciona dos clases java.util.ResourceBundle
y java.util.Locale
que se utilizan para este propósito. ResourceBundle lee el archivo de propiedades específico de la localización y puedes obtener el valor específico de la localización para cualquier clave. Esto es muy útil para hacer que los textos de tu aplicación web sean específicos de la localización, puedes obtener la información de la localización de la solicitud HTTP y generar la página dinámica con esos archivos de paquetes de recursos de localización. También puedes proporcionar la opción al usuario de elegir la localización y actualizar las etiquetas dinámicamente.
Ejemplo de i18n en Java
Para el ejemplo de i18n en Java, he creado el proyecto cuya estructura es como la imagen de abajo. Aquí está el código Java para la clase JavaInternationalizationExample.
package com.journaldev.i18n;
import java.util.Locale;
import java.util.ResourceBundle;
public class JavaInternationalizationExample {
public static void main(String[] args) {
//localidad predeterminada
ResourceBundle bundle = ResourceBundle.getBundle("ApplicationMessages");
//Obtener ResourceBundle con Locale que ya están definidos
ResourceBundle bundleFR = ResourceBundle.getBundle("ApplicationMessages", Locale.FRANCE);
//Obtener ResourceBundle cuando se necesita crear Locale
ResourceBundle bundleSWE = ResourceBundle.getBundle("ApplicationMessages", new Locale("sv", "SE"));
//imprimamos algunos mensajes
printMessages(bundle);
printMessages(bundleFR);
printMessages(bundleSWE);
}
private static void printMessages(ResourceBundle bundle) {
System.out.println(bundle.getString("CountryName"));
System.out.println(bundle.getString("CurrencyCode"));
}
}
Aquí el nombre del paquete es ApplicationMessages
y tengo 2 paquetes de recursos específicos de localidad y un paquete de recursos predeterminado. ApplicationMessages.properties
CountryName=USA
CurrencyCode=USD
ApplicationMessages_fr_FR.properties
CountryName=France
CurrencyCode=Euro
ApplicationMessages_sv_SE.properties
CountryName=Sweden
CurrencyCode=Kr
Observa el uso de la clase Locale, hay algunas localidades ya definidas pero siempre podemos crear nuevas localidades pasando el código de idioma y el código de país a su constructor. Cuando ejecuto el programa anterior, aquí está la salida.
USA
USD
France
Euro
Sweden
Kr
Eso es todo para un ejemplo rápido de i18n en Java. La internacionalización en Java es muy útil en aplicaciones web para servir páginas en un idioma específico de la localidad.
Source:
https://www.digitalocean.com/community/tutorials/java-i18n-internationalization-in-java