Flex 3 : Multilingue - Localization - utilitaire copylocale
Si vous écrivez une application multilingue (voir la documentation sur ce sujet) et que vous compilez votre application avec l'option -locale fr_FR, vous allez avoir l'erreur suivante :
Severity and Description Path Resource Location Creation Time Id
unable to open 'C:\Adobe\Flex Builder 3\sdks\3.0.0\frameworks\locale\fr_FR'
En effet, les ressources n'existent pas pour la langue française (fr_FR).
Ces ressources doivent être présentes dans le répertoire :
flex_builder_install/sdks/3.0.0/frameworks/locale
Par défaut, Flex 3 est livré avec lesressources pour l'anglais (en_US) et le japonais (ja_JP)
Solution 1 : solution rapide avec messages en anglais
Il faut utiliser l'utilitaire copylocale.
- Il faut passer en mode administrateur et ouvrir une fenêtre de commande par :
Démarrer > Exécuter... et tapez : cmd
- Il faut se positionner dans le répertoire bin de Flex (flex_builder_install/sdks/3.0.0/bin) :
C:
cd /Adobe/Flex Builder 3/sdks/bin
- et lancer la commande copylocale par :
copylocale en_US fr_FR
Flex compile les ressources et crée bien un répertoire fr_FR
dans flex_builder_install/sdks/3.0.0/frameworks/locale.
Vous n'avez plus d'erreur de compilation mais les messages restent en anglais.
Solution 2 : copylocale avec langue intermédiaire
copylocale utilise des fichiers de ressources XXX.properties pour les compiler en extension .swc
Ces fichiers sources se trouvent dans des catégories qui correspondent à des sous-répertoires de flex_builder_install/sdks/3.0.0/frameworks/projects.
On a les catégories : airframework, automation, framework, rpc.
Les sources se trouvent dans les répertoires : bundles/<lang>/src
Par exemple, pour la catégorie framework (qui sera compilé en framework_rb.swc),
les fichiers sources se trouvent dans :
flex_builder_install/sdks/3.0.0/frameworks/projects/framework/bundles/en_US/src pour la langue en_US
On trouve les fichiers collections.properties, containers.properties, controls.properties, etc...
L'idée est donc de modifier ces fichiers puis de les compiler en utilisant copylocale. On va donc utiliser une langue intermédiaire par exemple prepare_fr_FR
On procède en trois étapes :
- Ouvrir une fenêtre de commande, se positionner dans flex_builder_install/sdks/3.0.0/bin et lancer la commande
copylocale en_US prepare_fr_FR
- Vous pouvez modifier les messages dans les fichiers *.properties dans les répertoires
flex_builder_install/sdks/3.0.0/frameworks/projects/*/bundles/prepare_fr_FR/src
Sauvegarder bien les fichiers au format UTF-8
Pour faire rapide, il y a 3 fichiers importants à traduire : controls.properties validators.properties et formatters.properties dans la catégorie framework donc dans le répertoire projects/framework/bundles/prepare_fr_FR/src
- Vous pouvez maitenant compiler les nouvelles ressources en utilisant copylocale. Ouvrir une fenêtre de commande, se positionner dans flex_builder_install/sdks/3.0.0/bin et lancer la commande :
copylocale prepare_fr_FR fr_FR
Le cas de la catégorie datavisualization
Si vous utilisez des charts de Flex Builder 3 Pro et la langue française (avec l'option -lang fr_FR) vous allez avoir de nouveau l'erreur :
Unable to resolve resource bundle "charts" for locale "fr_FR".
En effet, les solutions précédentes ne créent pas le fichier : datavisualization_rb.swc
Pour controuner cette erreur, c'est un peu plus compliqué. Voici les étapes :
- Vérifier que le répertoire fbpro existe dans le répertoire flex_builder_install/sdks/3.2.0/fbpro
Si ce n'est pas, voici comment le créer :- Quitter Flex Builder
- Faire une copie du fichier license.properties (votre clé Flex Builder) du répertoire
C:\Documents and Settings\All Users\Application Data\Adobe\Flex\license.properties - Effacer ce fichier
- Lancer Flex Builder
- Aller dans le menu : Help -> Manage Flex Licences et entrez votre clé Flex Professional
- Flex va créer le répertoire fbpro
- copier le répertoire datavisualization flex_builder_install/sdks/3.2.0/fbpro/projects/datavisualization dans flex_builder_install/sdks/3.2.0/frameworks/projects
- Dans le nouveau répertoire projects/datavisualization/bundles/en_US, créer un répertoire src puis déplacer les fichiers properties dans ce répertoire src
Vous devez voir donc :
flex_builder_install/sdks/3.0.0/frameworks/projects/datavisualization/bundles/en_US/src
et les fichiers charts.properties, datamanagement.properties et olap.properties
- Appliquer la solution 1 ou 2
Comme tout ceci est un peu compliqué (et tout ceci pour des messages d'erreur interne en développement), voici le fichier : datavisualization_rb.swc
Autres solutions
BabelFlex vous propose une autre méthode pour créer les fichiers de ressources (à partir de projets Flex 3) et une traduction française et espagnole des fichiers properties.
Par contre, le fichier datavisualization_rb.swc a été oublié...