¿Mejores prácticas para internacionalizar una aplicación Flex?
-
02-07-2019 - |
Pregunta
Estoy estudiando la internacionalización de una aplicación Flex en la que estoy trabajando y siento curiosidad por las mejores prácticas o recomendaciones para hacerlo.
Buscar en Google para obtener dicha información resulta en un puñado de pequeños artículos y publicaciones de blog, cada uno sobre cómo hacerlo de manera diferente, y las ventajas y desventajas no están del todo claras.
Editado para reducir el alcance:
- Necesita admitir solo dos idiomas (en_CA y fr_CA)
- Necesito poder cambiar en tiempo de ejecución
Solución
Por supuesto, después de buscar un poco más en Google, me topé con un artículo sobre localización en tiempo de ejecución .
Y siguió estos pasos:
Agregue lo siguiente a los argumentos del compilador para especificar las configuraciones regionales compatibles y su ruta: (En Flex Builder, seleccione las propiedades del proyecto y vaya - > Flex Compiler - > Argumentos adicionales del compilador)
-locale = en_CA, fr_CA -source-path = locale / {locale}
Cree los siguientes archivos:
src/locale/en_CA/resources.properties
src/locale/fr_CA/resources.properties
Y luego el compilador se queja: no puede abrir 'C: \ Archivos de programa \ Adobe \ Flex Builder 3 \ sdks \ 3.1.0 \ frameworks \ locale \ en_CA'
Parece estar relacionado con el error SDK-12507
Solución:
En el directorio sdks \ 3.1.0 \ bin
, ejecute los siguientes comandos:
copylocale en_US en_CA
copylocale en_US fr_CA
Esto creará los directorios locales en la instalación de Flex Builder y generará algunos recursos necesarios en ellos.
Luego, en sus archivos .mxml
, haga referencia al paquete de recursos:
<mx:Metadata>
[ResourceBundle("resources")]
</mx:Metadata>
E internacionalizar las cadenas:
<mx:TitleWindow title="Window Title">
se convierte en:
<mx:TitleWindow
title="{resourceManager.getString('resources', 'windowTitle')}">
y
var name:String = "Name";
se convierte en:
var name:String = resourceManager.getString("resources", "name");
Y en su archivo src / locale / en_CA / resources.properties
:
windowTitle=Window Title
name=Name