Internacionalizar aplicaciones java

Continuando con los posts relacionados con i18n (internacionalización) aquí les dejo un snippet para leer archivos de propiedades, estos son usados en java para guardar texto en formato llave=valor.

ResourceBundle bundle = java.util.
                    ResourceBundle.getBundle(“ruta_archivo_properties”);

String value = bundle.getString(“llave”)

Si tenemos un archivo por ejemplo “resource.properties” en el paquete net.edokun.resources, entonces el código sería algo asi:

ResourceBundle bundle = java.util.
                    ResourceBundle.getBundle(“net/edokun/resources/resource.properties”);

los archivos properties deben tener la información arreglada de la siguiente manera:

llave1=Hola
llave2=Adios

Una vez que obtenemos el archivo con la clase ResourceBundle para obtener el texto lo hacemos con el método getString(“llave”) donde “llave” es el key en el archivo properties en este caso puede ser llave1 ó llave2 y lo que regresa es el valor, Hola o Adios según la llave.

Por ultimo, si queremos hacer nuestra aplicación internacional lo podemos hacer creando más archivos properties uno por cada idioma adicional, siempre poniendo el sufijo _CodigoLocale ejemplo:

resource_en_US.properties – para inglés
resource_ja_JP.properties -> para japonés
resource_es_MX.properties ->para español Mexico

y obviamente en cada uno el valor de las llaves está en el respectivo idioma.
Así como todos los archivos properties deben estár en la misma ruta.

 Ya solo es necesario indicarle a nuestra aplicación que idioma debe usar, para ello usamos el snippet anterior para cambiar el locale y eso es todo.

Autor: edokun

Mexican Passionate Software Developer and Agile Developer/Scrum Master, Free and Open Source Software enthusiast, Ruby and Rails trainee, occasional gamer, amateur photographer, a little of bass player, Ubuntu fan, Aikidoka an seeker of the true samurai spirit, loves Japan, and Mexican food.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *