Meilleures pratiques pour l'internationalisation d'une application Flex?
-
02-07-2019 - |
Question
Je cherche à internationaliser une application Flex sur laquelle je travaille et je suis curieux de savoir s'il existe des meilleures pratiques ou des recommandations à cet effet.
Googler pour obtenir de telles informations donne lieu à une poignée de petits articles et de blogs, chacun traitant de le faire différemment, et les avantages et les inconvénients ne sont pas tout à fait clairs.
Modifié pour réduire la portée:
- Besoin de ne supporter que deux langues (en_CA et fr_CA)
- Besoin de pouvoir basculer au moment de l'exécution
La solution
Bien sûr, après avoir cherché un peu plus sur Google, je tombe sur un article sur localisation d'exécution .
Et suivez ces étapes:
Ajoutez les éléments suivants aux arguments du compilateur pour spécifier les paramètres régionaux pris en charge et leur chemin: (Dans Flex Builder, sélectionnez le projet et accédez aux propriétés - > Compilateur Flex - > Arguments supplémentaires du compilateur)
-locale = en_CA, fr_CA -source-path = locale / {locale}
Créez les fichiers suivants:
src/locale/en_CA/resources.properties
src/locale/fr_CA/resources.properties
Le compilateur se plaint ensuite: impossible d'ouvrir "C: \ Program Files \ Adobe \ Flex Builder 3 \ sdks \ 3.1.0 \ frameworks \ locale \ en_CA"
Qui semble être lié au bogue SDK-12507
Contourner:
Dans le répertoire sdks \ 3.1.0 \ bin
, exécutez les commandes suivantes:
copylocale en_US en_CA
copylocale en_US fr_CA
Ceci créera les répertoires de paramètres régionaux dans l'installation de Flex Builder et y créera certaines ressources requises.
Puis, dans vos fichiers .mxml
, référencez le regroupement de ressources:
<mx:Metadata>
[ResourceBundle("resources")]
</mx:Metadata>
Et internationaliser les chaînes:
<mx:TitleWindow title="Window Title">
devient:
<mx:TitleWindow
title="{resourceManager.getString('resources', 'windowTitle')}">
et
var name:String = "Name";
devient:
var name:String = resourceManager.getString("resources", "name");
Et dans votre fichier src / locale / en_CA / resources.properties
:
windowTitle=Window Title
name=Name