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
.
1 |
boolean isAPIAvailable = (System.getProperty("microedition.global.version") != 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
.
1 |
String locale = System.getProperty("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
1 2 3 |
1=Hello World! 2=Exit 3=jsr238 Example |
Archivo /global/es/messages.res
1 2 3 |
1=¡Hola mundo! 2=Salir 3=Ejemplo jsr238 |
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:
- El descriptor (jad)
- El JAR
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