Programación en castellano
Inicio > Tutoriales > Lenguajes orientados a objeto > J2SE > Internacionalización de Programas Java
-Tutoriales

Internacionalización de Programas Java


Cómo hemos Internacionalizado el Programa de Ejemplo

Si echaste un vistazo al código fuente internacionalizado, observarías que los mensajes en inglés dentro del código han desaparecido. Como estos mensajes ya no están dentro del código, y como el codigo del idioma se especifica en el momento de la ejecución, el mismo ejecutable puede ser distribuido por todo el mundo. No se requieren recompilaciones para su localización, Nuestro programa ha sido internacionalizado.

Te podrías preguntar que ha sucedido con el texto de los mensajes, o que entendemos por los códigos de idioma y de país. No te preocupes. Te explicaremos todos estos conceptos cuando pasemos a través del proceso de internacionalización del programa de ejemplo.

. Crear el Fichero de Propiedades

Un fichero de propiedades almacena información sobre las características de un programa o un entorno. Estos ficheros de propiedades tienen formato de texto plano. Se pueden crear con cualquier editor de textos.

En nuestro ejemplo, el fichero de propiedades almacena los textos traducibles de los mensajes que deseamos mostrar. Antes de que nuestro programa fuera internacionalizado, las versiones inglesas de los mensajes fueron codificadas dentro de sentencias System.out.println. Nuestro fichero de propiedades por defecto, que se llama MessagesBundle.properties, contiene las siguientes líneas.

greetings = Hello
farewell = Goodbye
inquiry = How are you?

Ahora que los mensajes están en un fichero de propiedades, podemos traducirlos a varios idiomas. No se necesita modificar el código fuente. Nuestro traductor de Francés, ha creado un fichero de propiedades llamado MessagesBundle_fr_FR.properties, que contiene estas líneas.

greetings = Bonjour.
farewell = Au revoir.
inquiry = Comment allez-vous?

Observa que los valores situados a la derecha de los signos igual "=" han sido traducidos, pero las claves del lado izquierdo del signo no han cambiado. Estas claves no deben cambiar, porque el programa se referirá a ellas cuando recupere el texto traducido.

El nombre del fichero de propiedades es importante. El nombre del fichero MessagesBundle_fr_FR.properties contiene el código del idioma fr y el código del país FR. Estos códigos también se utilizan cuando se crea un objeto Locale.

. Definir la Localidad

Un objeto Locale define un idioma particular y un país. La siguiente sentencia define un objeto Locale para el idioma Inglés y el país de Estados Unidos.

aLocale = new Locale("en","US");

El siguiente ejemplo crea objetos Locale para el idioma francés en Canada y Fráncia.

caLocale = new Locale("fr","CA");
frLocale = new Locale("fr","FR");

Queremos mantener flexible el programa de ejemplo, por ello, en vez de codificar los códigos de idioma y de país en el código fuente, los obtenemos de la línea de comandos en el momento de la ejecución.

String language = new String(args[0]);
String country = new String(args[1]);
currentLocale = new Locale(language, country);

Los objetos Locale son sólo identificadores. Después de definir un objeto Locale, se lo pasas a otro objeto que realiza las tareas útiles, como formatear fechas y números. Estos objetos se llaman sensibles a la localidad, porque su comportamiento varía de acuerdo a la localidad. Un ResourceBundle es un ejemplo de objeto sensible a la localidad.

. Crear un objeto ResourceBundle

Los objetos ResourceBundle contienen objetos específicos de una localidad. Estos objetos ResourceBundle se utilizan para aislar los datos sensibles a la localidad, como texto traducible, etc. En nuestro programa de ejemplo, el ResourceBundle está constituido por los ficheros de propiedades que contienen los mensajes que queremos mostrar.

Nuestro objeto ResourceBundle se crea de esta forma.

message = ResourceBundle.getBundle("MessagesBundle",currentLocale)

Los argumentos pasados al método getBundle identifican a los ficheros de propiedades a los que queremos acceder. El primer argumento, MessagesBundle, se refiere a esta familia de ficheros de propiedades.

MessagesBundle_en_US.properties
MessagesBundle_fr_FR.properties
MessagesBundle_de_DE.properties

El objeto Locale, que es el segundo argumento de getBundle, específica el fichero elegido de MessagesBundle. Cuando se creó el objeto Locale, se le pasaron al constructor los códigos del idioma y del país. Observa que estos códigos forman parte del nombre de los ficheros de propiedades de MessagesBundle.

Ahora, todo lo que tenemos que hacer es traducir los mensajes de ResourceBundle.

. Recuperar el texto del ResourceBundle

Los ficheros de propiedades contienen parejas clave/valor. Los valores consisten en texto traducido que nuestro programa mostrará. Específicaremos las claves cuando querramos utilizar los mensajes traducidos del ResourceBundle con el método getString. Por ejemplo, para recuperar el mensaje identificado por la clave "greetings", llamaríamos a getString de esta forma.

String msg1 = messages.getString("greetings");

En nuestro ejemplo, utilizamos la clave greetings porque refleja el contenido del mensaje, podrías haber utilizado cualquier otro String, como s1 o msg1. Sólo recordar que la clave debe estár escrita en tu programa y que debe estar presente en los ficheros de propiedades. Si tu traductor modifica accidentalmente las claves de los ficheros de propiedades, getString no podrá encontrar los mensajes.

Esto es todo. Como puedes ver, internacionalizar un programa no es demasiado díficil. Sólo requiere algo de planificación, y un poco de código extra, pero los beneficios son enormes. El ejemplo que hemos cubierto en esta sección ha sido intencionadamente sencillo porque queríamos proporcionarte una introducción al proceso de internacionalización. El API de Java ofrece muchas más capacidades de internacionalización que las descritas en esta sección. Explicaremos esos tópicos en mayor detalle en las siguientes secciones.

 
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad
Mantenida por: Claudio y Dani.

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: jugar gratis | amor | navidad 2009 | registro de dominios | servidores dedicados
más internet: comprar | gratis | posicionamiento en buscadores | decoración libre | gifs animados