J2ME. Internacionalización de aplicaciones para móviles

0
14349

J2ME. Internacionalización de aplicaciones para móviles.

En este tutorial vamos a aprender a internacionalizar aplicaciones para móviles.

Introducción

La internacionalización de aplicaciones nos permite distribuir aplicaciones que se adapten a las distintas
propiedades culturales de los paises en donde es ejecutada (idioma, formato de fechas, números y moneda)

J2ME, ha especificado un estandar que permite a los desarrolladores internacionalizar sus aplicaciones y todas sus clases se ubican en el paquete
javax.microedition.global

¿Cómo sabe una aplicación si está disponible este API en el dispositivo móvil?

Se tienen que cumplir los siguientes requisitos mínimos:

  • CLDC 1.1 o superior.
  • MIDP 2.0 o superior.

Y además, al consultar por la propiedad del sistema microedition.global.version, debe de devolverse algo distinto de null.

Conceptos importantes

A continuación vamos a ver algunos términos que son imprescindibles para la internacionalización de aplicaciones:

Los Locales

Un locale es una combinación de un idioma y un pais o región.

Este parámetro, es usado en internacionalización como un identificador que sirve para agrupar los recursos especificos de cada población.

El formato del locale consiste en dos caracteres (requerido) que identifiquen el lenguaje y otros dos caracteres (opcional) que identifiquen al país.

Si queremos obtener el locale simplemente tenemos que consultar la propiedad del sistema microedition.locale.

Los Resources

Los resources son archivos en donde los programadores guardan los datos especificos de la aplicación para cada locale, también son conocidos como archivos de recursos.

La clase ResourceManager es la que se encarga de leer los archivos de recursos.

Los archivos de recursos deben ubicarse bajo directorios con nombre /global/<localeKey>. A continuación puede ver algunos ejemplos:

  • /global/en/messages.res:
    messages.res es un archivo de recursos para el idioma inglés.
  • /global/es-ES/messages.res:
    messages.res es un archivo de recursos para el idioma español de España.
  • /global/it/messages.res:
    messages.res es un archivo de recursos para el idioma italiano.
  • /global/messages.res:
    messages.res es un archivo de recursos común para todos los locales.

Es importante tener en cuenta que el API es sensible a mayúsculas y minúsculas asi que hay que tener cuidado con los nombres de los recursos y directorios.

El proceso de búsquedas de recursos es igual que en J2SE, es decir, inicialmente se búsca un recurso especifico para ese locale en cuanto al idioma y el país (por ejemplo es-ES) pero si no existe se busca uno sólo para el idioma (por ejemplo es) y si tampoco se encuentra se busca entre los comunes.

Otro paso importante a realizar es crear un archivo de nombre <_resourceName>, en el caso anterior el archivo a crear debería llamarse _messages.

Este archivo debe enumerar la lista de locales disponibles para ese recurso.

Por ejemplo (_messages):

es en

¿Cómo crear los archivos de recursos?

Los archivos de recursos deben crearse con alguna aplicación que genere binario, yo personalmente utilizo el i18n Resources Manager que viene como utilidad con la distribución de Sun Java (TM) Wireless Toolkit.

Ejemplo

A continuación vamos a hacer un sencillo MIDlet autocomentado en donde aprenderemos a internacionalizar mensajes, fechas y números.

Archivos de recursos:

Archivo /global/en/messages.res

Archivo /global/es/messages.res

Si os fijais, por motivos de ahorrar recursos y mejorar el rendimiento, las claves o identificadores de cada recurso es un número.

Binarios de la aplicación

Podeis descargaros el MIDlet e instalarlo en vuestro dispositivo desde las siguientes URLs:

Probar a cambiar el idioma de vuestro teléfono entre el Inglés y el Castellano para ver los resultados.

Referencias

JSR-238


Bueno, espero que os haya parecido interesante este tutorial.

Carlos García Pérez. Creador de MobileTest, un complemento educativo para los profesores y sus alumnos.

cgpcosmad@gmail.com


Dejar respuesta

Please enter your comment!
Please enter your name here