Internacionalización de Programas Java

Si eres nuevo internacionalizando software, esta lecci�n es para t�. Utilizando un ejemplo sencillo, veremos como internacionalizar un programa que muestra mensajes de texto en el idioma apropiado. En esta lecci�n aprender�s c�mo trabajan juntos los objetos Locale y ResourceBundle, y c�mo utilizar los ficheros de propiedades.

.�Antes de la Internacionalizaci�n

En la primera versi�n del c�digo fuente, codificamos las versiones inglesas de los mensajes que queriamos mostrar. Esta NO es la forma de escribir software internacionalizado.

Supongamos que hemos escrito un programa que muestra tres mensajes.

System.out.println("Hello.");
System.out.println("How are we?");
System.out.println("Goodbye.");

Hemos decidido que este programa necesita mostrar estos tres mensajes para la gente que vive en Francia y en Alemania. Desafortunadamente tu personal de programaci�n no es multi-ling�e., por eso necesitas ayuda para traducir los mensajes al Franc�s y al Alem�m. C�mo los traductores no son programadores, tenemos que sacar los mensajes fuera del c�digo fuente a ficheros de texto que puedan ser editados por los traductores. Tambi�n queremos que el programa sea lo suficientemente flexibe para poder mostrar los mensajes en otros idiomas, pero ahora mismo no sabemos qu� idiomas. Por lo tanto, queremos que el usuario final especifique su idioma en el momento de la ejecuci�n.

Parece que este programa necesita ser internacionalizado.

.�Despu�s de la Internacionalizaci�n

Abajo puedes ver el c�digo fuente del programa internacionalizado. Observa que el texto de los mensajes no est� codificado.

import java.util.*;

public class I18NSample {

   static public void main(String[] args) {

      if (args.length != 2) {
          System.out.println("Please specify language and country codes.");
          System.out.println("For example: java I18NSample fr FR");
          System.exit(-1);
       }

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

      currentLocale = new Locale(language, country);

      messages =
        ResourceBundle.getBundle("MessagesBundle",currentLocale);

      System.out.println(messages.getString("greetings"));
      System.out.println(messages.getString("inquiry"));
      System.out.println(messages.getString("farewell"));
   }
}

.�Ejecutar el programa de Ejemplo

Para ejecutar el programa de ejemplo, se especifica el idioma y el pa�s en la l�nea de comandos. Esta secci�n muestra varios ejemplos.

Nuestro programa internacionalizado es flexible, porque permite que el usuario final pueda especificar el idioma y el pa�s en la l�nea de comandos. En el siguiente ejemplo, el programa muestra los mensajes en Fanc�s, porque el c�digo de lenguaje es fr (Franc�s), y el c�digo de pa�s es FR (Fr�ncia).

% java I18NSample fr FR
Bonjour.
Comment allez-vous?
Au revoir.

En el siguiente ejemplo, el c�digo de idioma es en (Ingl�s) y el c�digo de pa�s es US (Estados Unidos).

% java I18NSample en US
Hello.
How are you?
Goodbye.

.�C�mo hemos internacionalizado el programa de Ejemplo

Internacionalizar el programa de ejemplo s�lo requiere unos pocos pasos. Te sorprender�s de lo f�cil que es.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP