Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Introducción a la internacionalización de aplicaciones

Introducción a la internacionalización de aplicaciones

Autor jc mouse miércoles, junio 17, 2015

La internacionalización permite a las aplicaciones adaptarse a los diferentes idiomas y regiones sin necesidad de cambios de ingeniería o recompilación. Programas internacionalizados permiten traducir elementos textuales, tales como mensajes de estado y etiquetas de componentes GUI, estos son almacenados fuera del código fuente y recuperado dinámicamente.

Las diferentes traducciones se almacenan en archivos .PROPERTIES de la forma clave/valor. La clave es el identificador utilizado por el programa para recuperar el texto, y el valor es el texto real. Se crea un archivo de propiedades para cada configuración regional (o lenguaje) en la que usted traduce el programa. Las claves son los mismos en cada archivo solamente los string son diferentes.

En este tutorial vemos la forma de como internacionalizar un formulario.

Tiempo: 20 minutos

Nivel: Intermedio

TUTORIAL

Paso 1. Formulario

Diseñamos el formulario en nuestro idioma y región, podemos renombrar los componentes o dejarlos tal cual están, si hacemos uso de layouts para alinear los componentes, debemos tener en cuenta que las palabras que usemos tienen o pueden tener distinta longitud en otros idiomas (Ej.: Español:Hola –  Ingles: Hi ), carácter más o menos, puede deformar significativamente el diseño final del formulario, por tal motivo, se debe tener cuidado en el diseño del GUI.

multi idioma

Paso 2. Archivos *.properties

Clic derecho sobre nuestro proyecto y seleccionamos NEW -> OTHER -> en File Types seleccionamos Properties Files -> NEXT -> escribimos un nombre “Bundle” para terminar. Este archivo sera nuestro idioma por defecto que se mostrara en nuestra aplicación.

Para cada idioma y región que queramos usar, debemos crear un nuevo archivo properties, en este ejemplo, usaremos  el Ingles de Estados Unidos por lo que debemos crear el archivo Bundle_en_US.properties donde en_US es idioma_region. Nuestro proyecto tiene ahora el siguiente aspecto:

properties

Paso 3. Traducción

Cada archivo properties contendrá la traducción en un idioma/región, su formato es clave/valor, es decir:

Formulario.componente.text = texto

El archivo Bundle es nuestro idioma por defecto (español) y su contenido es:

#menu
Demo.mArchivo.text=Archivo
Demo.smNuevo.text=Nuevo Proyecto...
Demo.smAbrir.text=Abrir Proyecto...
Demo.smSalir.text=Salir
Demo.mAyuda.text=Ayuda
#componentes
Demo.jLabel1.text=Nombre
Demo.jLabel2.text=Apellido
Demo.jCheckBox1.text=Página web
Demo.jCheckBox2.text=Correo electronico
Demo.jCheckBox3.text=Redes sociales
Demo.jButton1.text=Registrar
#string para mensajes
Demo.titulomensaje.text=Atención
Demo.mensaje.text=Hola mundo

El archivo Bundle_en_US.properties, corresponde al idioma ingles de estados unidos y por tanto su contenido es:

#menu
Demo.mArchivo.text=File
Demo.smNuevo.text=New Project...
Demo.smAbrir.text=Open Project...
Demo.smSalir.text=Exit
Demo.mAyuda.text=Help
#componentes
Demo.jLabel1.text=Name
Demo.jLabel2.text=Last Name
Demo.jCheckBox1.text=Web Page
Demo.jCheckBox2.text=E Mail
Demo.jCheckBox3.text=Social Networks
Demo.jButton1.text=Save
#string para mensajes
Demo.titulomensaje.text=Notice
Demo.mensaje.text=Hello world

Paso 4. Codificación

El proyecto esta listo para implementar la traducción, para esto, abre en modo código el formulario del proyecto y declara la variable bundle:

ResourceBundle bundle = ResourceBundle.getBundle("app/Bundle");

En el constructor de clase, asignamos a cada componente del GUI su correspondiente valor del archivo properties

    public Demo() {
        initComponents();

          mArchivo.setText(bundle.getString("Demo.mArchivo.text"));
            smNuevo.setText(bundle.getString("Demo.smNuevo.text"));
            smAbrir.setText(bundle.getString("Demo.smAbrir.text"));
            smSalir.setText(bundle.getString("Demo.smSalir.text"));
          mAyuda.setText(bundle.getString("Demo.mAyuda.text"));

          jLabel1.setText(bundle.getString("Demo.jLabel1.text"));
          jLabel2.setText(bundle.getString("Demo.jLabel2.text"));
          jCheckBox1.setText(bundle.getString("Demo.jCheckBox1.text"));
          jCheckBox2.setText(bundle.getString("Demo.jCheckBox2.text"));
          jCheckBox3.setText(bundle.getString("Demo.jCheckBox3.text"));
          jButton1.setText(bundle.getString("Demo.jButton1.text"));
    }

Pero la traducción también sirve para mensajes como dijimos más arriba, en este ejemplo, cuando se presiona el único botón de la aplicación muestra un dialog, para internacionalizar su contenido haremos lo siguiente

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            JOptionPane.showMessageDialog(this, 
                        bundle.getString("Demo.mensaje.text"), 
                        bundle.getString("Demo.titulomensaje.text"), 
                        JOptionPane.INFORMATION_MESSAGE);            
    }

Test

Si ejecutamos el proyecto veremos que nos muestra el idioma de nuestra región como es de esperarse:

español

Para poder probar como se ve en el idioma ingles, hacemos lo siguiente: Click derecho en el proyecto -> Properties, Click en la categoria RUN, en VM Options colocamos “-Duser.language=en -Duser.country=US” y OK para guardar los cambios

en_us

 Cuando volvamos a ejecutar la aplicación, la veremos en ingles:

traduccion java

Descarga el proyecto de este tutorial AQUI

enjoy! 🙂

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Código de Control en PHP v7.0 Bolivia

Código de Control en PHP v7.0 Bolivia

NUEVA ESPECIFICACIÓN TÉCNICA DEL CÓDIGO DE CONTROL (Ver.7.0) En el marco del Nuevo Sistema de Facturación implementado p...

Recortar partes de una imagen con el mouse

Recortar partes de una imagen con el mouse

En este oportunidad comparto una pequeña aplicación hecha en java para recortar partes de una imagen seleccionado con el...

Fragmentos dinamicos y eventos de usuario

Fragmentos dinamicos y eventos de usuario

Continuando con los tutoriales sobre fragmentos en android, en esta oportunidad veremos como añadir Fragments dinámicame...

Crea patrón de desbloqueo para tus app java

Crea patrón de desbloqueo para tus app java

El patrón de desbloqueo es una medida de seguridad que tienen algunos teléfonos inteligentes para evitar el acceso al di...

Obteniendo coordenadas XY con Touch Event

Obteniendo coordenadas XY con Touch Event

Los smartphone al no tener los típicos botones de los celulares, su pantalla es sensible al movimiento, esto se llama...

Introducción a MariaDB con Java

Introducción a MariaDB con Java

Maria DB  es un sistema de gestión de bases de datos derivado de MySQL con licencia GPL, pero con un rendimiento similar...

2 comentarios en “Introducción a la internacionalización de aplicaciones”

  1. Yerko Paniagua dice:

    Muy buena Pagina Quisiera Saber Como Puedo Contactarte Para Unas Preguntas Bro Espero No Molestar Buen Material Suerte.

    1. Mouse dice:

      por facebook 🙂

Deja un comentario

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

*

Comparte lo que sabes

Categorias

Últimas entradas

Si quieres cambiar el nombre de tus atributos sin tener que reescribir código java por X o Y razón, GSON te permite reno...

Un JList nos permite almacenar objetos en una lista y mostrarlos gráficamente en una serie vertical en el cual el usuari...

El proyecto “Java Decompiler” tiene como objetivo desarrollar herramientas para descompilar y analizar byte...

En este post aprenderemos lo que es un JSON Web Token, como crear nuestro propio token de acceso y como usarlo en un Ser...

Android Bolivia

Bandera en Alto