17/3/11

Aplicación multilenguaje con Java y Properties

El archivo Properties visto en un post anterior (Crear y Leer archivos Properties), puede servirnos tambien para crear aplicaciones multilenguaje, por ejemplo guardar en cada archivo la estructura del idioma que utilizamos y en otros archivos el lenguaje al que deseamos traducir nuestra aplicacion, osea:

Creamos una interfaz en Netbeans e identificamos todos los objetos a los cuales cambiaremos la propiedad TEXT, marcados con un punto rojo.

Creamos los archivos .Properties para cada lenguaje.


Para el idioma español podemos tener:

# Idioma español
#
# @web http://jc-mouse.blogspot.com/
# @author Mouse
#

#titulo aplicacion
titulo=Aplicación Multilenguaje

!Datos personales
titulo_datos=Datos Personales
nombre=Nombre:
Apellidos=Apellidos:
mail=Correo Electronico:
dir=Dirección:
fono=Telefono:

#salir
salir=Salir

! menu
archivo=Archivo
nuevo=Nuevo
abrir=Abrir...
guardar=Guardar como...
!Salir

herramientas=Herramientas
es=Español
en=Ingles

ayuda=Ayuda
enlinea=Ayuda en linea...
acerca=Acerca de...


Y para el ingles:


# Idioma Ingles
#
# @web http://jc-mouse.blogspot.com/
# @author Mouse
#

#titulo aplicacion
titulo=Multilingual Application

!Datos personales
titulo_datos=Personal Data
nombre=First Name:
Apellidos=Last Name:
mail=Your Email:
dir=Address:
fono=Phone:

#salir
salir=Exit

! menu
archivo=File
nuevo=New
abrir=Open...
guardar=Save as...
!Salir

herramientas=Tools
es=Spanish
en=English

ayuda=Help
enlinea=Online Help...
acerca=About..


Como puede verse, la cantidad de elementos en ambos archivos propeties, es la misma, asi tambien el KEY para cada parametro tambien es la misma, solo cambia el contenido de estos, uno en español y otro en ingles.

Nos creamos una clase para cargar estos archivos:


import java.io.IOException;
import java.util.Properties;
/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class jcProperties extends Properties{

    public jcProperties(String idioma){
        if(idioma.equals("ES")){//español
            getProperties("_ES.properties");
        }else if(idioma.equals("EN")){//Ingles
            getProperties("_EN.properties");
        }else{//sino por default idioma español
            getProperties("ES");
        }
    }

    /* se leen las propiedades */
     private void getProperties(String idioma) {
        try {                
            this.load( getClass().getResourceAsStream(idioma) );
        } catch (IOException ex) {            
        }
   }

}


y solo resta utilizar esta clase en el JFrame


Codigo fuente del proyecto en Netbeans 6.9
Click para descargar

2 comentarios:

  1. Me sirvio mucho, gracias!!

    ResponderEliminar
  2. Si usted está interesado en crear aplicaciones multiidioma, yo recomiendo altamente esta rápida y intuitiva herramienta en línea para la localización de software: https://poeditor.com/

    ResponderEliminar