Localizando (internacionalizando) aplicaciones Flex 3

10/11/2008

Flex 3Con Flex 3 tenemos la posibilidad de realizar localización en tiempo de ejecución. Comparado con Flex 2 dondo teníamos que recompilar la aplicación para cada localización (idioma), ahora podemos tener una única versión de la aplicación que contiene diferentes paquetes de recursos (resource bundles).

Para conseguir nuestro objetivo debemos seguir los siguientes pasos (Nota: para obtener unas instrucciones completas de cómo implementar la localización en Flex 3, recomiendo el artículo de Gordon Smith Flex 3:Feature Introductions: Runtime Localization.)

  • Crea una carpeta en tu proyecto para almacenar tu paquete de recursos (ej. “locale”)
  • Crea una subcarpeta para cada localización (idioma) que desees implementar (ej. “locale\es_ES” y “locale\fr_BE”)
  • En la subcarpeta de localización, crea un archivo resources.properties y guárdalo usando UTF-8
  • Introduce los recursos en forma de “clave=valor”, como si fuesen archivos de propiedades ANT
  • Actualiza la propiedades de compilación: -locale=es_ES,fr_BE -source-path=locale/{locale}

Ahora también debes crear los recursos localizados del propio framework Flex. Para hacer esto, sigue los siguientes pasos:

  • Abre una línea de comandos (ejecútala como administrador en Vista)
  • Vete al directorio “bin” de tu carpeta de instalación de Flex SDK
  • Ejecuta la herramienta copylocale.exe para cada localización, lo que copiará los archivos del framework localizados de un idioma a otro (copylocale en_US es_ES)
  • Comprueba el directorio FLEX_HOME\framework\locale para ver si se ha creado una carpeta para tu nuevo idioma
  • Si obtienes un error “could not find resource bundle charts”, busca el archivo llamado charts_rb.swc y copialo en la nueva carpeta de idioma de FLEX_HOME\frameworks\locale

Un sencillo ejemplo de obtención de mensaje localizado:
Actionscript:

// indicamos al compilador que resourcebundle utilizar

[ResourceBundle(“resources”)]

// si estamos en una subclase de UIComponent
var myString:String = resourceManager.getString(“resources”, “myKey”);

// …o si no es una subclase de UIComponent
var myString:String = ResourceManager.getInstance().getString(“resources”, “myKey”);

Podemos poner estas llamadas en una expresión de asociación (binding expression) y cambiar de localización en tiempo de ejecución fijando la propiedad localeChain del resourceManager:
Actionscript:

resourceManager.localeChain = [“es_ES”];

vía

Algunos enlaces de interés
I18n in Flex 3 … pros and cons
Localizing Flex Applications

One Response to “Localizando (internacionalizando) aplicaciones Flex 3”

  1. MAO Says:

    hola Rubén, oye, sabes donde puedo obtener los *.properties para fr_BE. Muchas gracias.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: