Aplicaciones MultiLenguaje en Java

En este tutorial mostraré como crear aplicaciones multilenguaje en Java. Lo haré utilizando archivos de extensión .properties. Estos archivos guardan parámetros configurables de una aplicación. Anteriormente ya había publicado algo de teoría acerca de estos archivos, así que si quieren saber más vayan a Properties Java.

Bien pues empezamos… Creamos un nuevo proyecto en Netbeans y a dicho proyecto le agregamos un nuevo Paquete Java o Java Package (en mi caso yo nombré al paquete «Propidades»)… En este paquete agregaremos los archivos .properties

Como agregar archivos . properties?

1. Click derecho sobre el paquete «Propiedades». Seleccionamos «New» o «Nuevo» y después «Other…» u «Otro…»

2. Procedemos a seleccionar el archivo. En «Categories» seleccionamos «Other» y en «File Types» escogemos «Properties File». Presionamos «Next».

3. Para finalizar, nombramos el archivo y presionamos «Finish».

Los procedimientos anteriores los realizamos dos veces, ya que como lo que estamos creando es una aplicación multilenguaje, necesitamos dos archivos .properties, uno para las propiedades del idioma español y otro para el inglés. (O agregamos tantos archivos como idiomas tenga la aplicaión).

Una vez que ya tenemos los dos archivos, debemos agregar propiedades a dichos archivos. Lo cual es muy fácil.

Como agregar propiedades a los archivos?

1. Click derecho sobre el archivo . properties(en este caso «Espanol»). Seleccionamos «Add» y luego «Property…».


2. Automaticamente se nos muestra la siguiente ventana, en donde debemos ingresar un «Key»(clave) para identificar la propiedad y un «value»(valor) que es el valor que guardará dicha propiedad. Tambien podemos agregar «Comment» para comentar la propiedad, pero lo dejaremos en blanco. Presionamos «Ok».

Español

3. Repetimos lo anterior, solo que esta vez lo agregamos al archivo «Ingles.properties». NOTA IMPORTANTE: Agregamos la propiedad con el mismo key de la anterior, solo cambiamos el value.

Inglés

Bien pues así agregamos todas las demás propiedades, que serian todas las palabras que se utilzan en la interfaz de la aplicación.

NOTA: Cada propiedad que se agregue a «Espanol.properties» debe ser agregada a «Ingles.properties» manteniendo el mismo key pero cambiando el value(debe ser traducido al idioma inglés).

Ahora creamos una clase en el mismo paquete que nos ayude a obtener los valores de cada una de las propiedades. Esta clase debe extender de «Properties». En mi caso nombré a la clase como «Propiedades»(muy obvio…)

Ahora creamos la interfaz de nuestra aplicación. Yo cree una a manera de demostración…


Bien ahora vamos al código. Necesitamos un método que nos permita cargar los idiomas, este médoto debe tener un atributo String de entrada. En él cambiaremos cambiaremos el texto de cada uno de los objetos de la interfaz de español a inglés o viceversa, según sea indicado. Como mi interfaz tiene muchos objetos el método se vuelve un poco largo, así que nada más les mostraré una parte…

Ahora bien, para cambiar el idioma yo utilicé dos JMenuItem, uno para español y otro para inglés, como lo pueden ver a continuación…

Y en los eventos de dichos JMenuItem´s solo debemos implementar el método que creamos anteriormente. Solo cambiamos el atributo de entrada… «ESPANOL» para español e «INGLES» para inglés…

Solo falta llamar a nuestro frame desde el main de la aplicación. Aquí aparte de hacerlo visible, cargamos el idioma español para ponerlo como predeterminado.


Una pequeña demostración:


Este es todo el tutorial, claro pueden agregar cuantos idiomas deseen, con eso no hay nigún problema, solo recuerden usar el mismo key para todas la propiedades…

Bien, pues espero que este tutorial les ayude mucho… Cualquier duda, solo comenten y con gusto les ayudaré….


************************  DESCARGAR EJEMPLO  ************************

20 comentarios en “Aplicaciones MultiLenguaje en Java

    • Uyy q complicado! Muy buena pregunta.. Por el momento no se me ocurre como hacerlo, hasta pensaría que no se puede hacer por que los componetes de los JInternalFrames(JLabel’s, JButton’s… etc) no serían reconocidos en el formulario MDI. Investigaré un poco…

    • Hola amigo. Vaya me he precipitado al darte la primera respuesta… Ya he encontrado la solución. Consiste en crear el método «CargarIdioma()» en el formulario MDI y tambien en cada uno de los JInternalFrames… Cuando el usuario cambie el idioma entonces, éste se cargará en todos los JInternalFrames y en el formulario MDI independientemente utilizando el mismo idioma (…obviamente..). Acá te dejo la aplicación que desarrollé para realizar el ejemplo: ***Descargar***

      Espero haberte ayudado…

  1. muy bueno una pregunat como le haces cuando ejecutas la aplicacion y pocicionas el mouse sobre un boton y te despliega un mensajito como «Guardar» es un evento o una propiedad???????
    espero tu respuesta

    • Es una propiedad llamada «toolTipText». Solo la buscas en las propiedades del JButton y escribes el texto que quieres que se muestre. O bien puedes escribir el código, que sería el siguiente:
      //******************************************************
      JButton1.setToolTipText(«Guardar»);
      //Comentarios: JButton1 seria el nombre del boton
      //******************************************************

      Gracias por los comentarios! Pura Vida!!

      • Gracias buena respuesta me sirvio muchooo si el nombre del boton ya seria variable pero excelente gracias y no lo dejo de decir bueno tutoriales!!!!!!1

  2. komo puedo hacer un memorama esk me kuesta un pokis de trabajo esk no se como dejar las imagenes .setVisible(true) cuando son iguales y cuando no sean iguales que se voltien se los agradesco

  3. Pingback: Aplicacación MultiLenguaje en Java (Formulario MDI) | ContreSpace

  4. Un par de tips

    Los archivos de propiedades se deberían llamar
    messages_es.properties
    messages.properties

    El primero tendría los textos en español y el otro en inglés. Se usa el inglés para cualquier usuario que no entienda español, en este caso sería el idioma por defecto.

    Entonces se hace esto:

    ResourceBundle mensajes = ResourceBundle.getBundle(«messages»);

    Eso te leerá el archivo correspondiente a la Locale del usuario que ejecuta el programa. Por ejemplo si tienes el sistema operativo en español. lee messages_es.properties y si lo tienes en francés o chino lee messages.properties.

    El objeto messages le puedes pedir los strings según su clave

    String texto = messages.getString(«aceptar»);

    Los archivos pueden ser sólo uno:
    messages.properties

    Uno por idioma
    messages_es.properties
    messages_en.properties
    messages_fr.properties

    O uno por idioma y país / región
    messages_es_AR.properties
    messages_es_ES.properties
    messages_en_US.properties
    messages_fr_FR.properties
    messages_pt_BR.properties

    O combinaciones.
    Se lee el más específico que exista según la Locale del usuario.

Replica a contre17 Cancelar la respuesta