Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

7avr/090

Flex Localization – Compilation de ressources dans une application Flex

Après avoir crée des fichiers ressource .properties, vous pouvez soit compiler ces ressources dans des "bundles" dans votre application, soit le compiler en tant que "module" pour qu'ils soient chargé à l'exécution.

  • Si vous compilez ces ressources dans l'application, le compilateur mxmlc va les convertir en sous-classe de la classe ResourceBundle, et les ajouter à votre application à la compilation.
  • Si vous compilez ces ressources dans des "Resources Modules", le compilateur va les compiler en fichier SWF que vous pourrez charger à la volée

Nous verrons la compilation de Resources Module dans un prochain tuto Flex, penchons nous plutôt sur la compilation de Resource Bundles.

Compiler des ressources dans l'application en ligne de commande

Avec le compilateur mxmlc

  1. Spécifiez une ou plusieurs "locale" à compiler dans votre application, avec l'option -locale du compilateur. La valeur de cette option est utilisée par l'option -source-path pour trouver le fichier contenant les ressources. L'option -library-path utilise aussi cette valeur pour inclure un framework localisé
  2. Spécifiez l'emplacement de la ressource avec l'option -source-path. Vous pouvez ajouter des ressources pour plus d'un langage national en utilisant le token {locale}
  3. Fixez la velur de l'option -allow-source-path-overlap à true. C'est optionnel mais si vous ne le faîtes pas, vous pourriez obtenir un warning indiquant que le source path est un sous-repertoire du source path du projet.

Voici un exemple de ligne de commande pour mxmlc. Ici, l'application LocalizedForm.mxml utilise une ressource pour un seul langage national, en_US:

mxmlc -locale=en_US -source-path=c:\myapp\locale\{locale} -allow-source-path-overlap=true c:\myapp\LocalizedForm.mxml

Vous pouvez spécifier les locale dans le fichier flex-config.xml utilisé par le compilateur mxmlc. Spécifiez les locales en utilisant le tag <locale> comme dans cet exemple:

<locale>
    <localeElement>en_US</localeElement>
</locale>

Pour ajouter des entrées à votre source-path dans le fichier de config, utilisez le tag <source-path> comme ceci:

<source-path>
    <path-element>locale/{locale}</path-element>
</source-path>

Le tag <source-path> est commenté par défaut

Avec Flex Builder

Dans Adobe Flex Builder, vous pouvez ajouter des répertoires directement dans le source path du projet et ensuite ajouter ces options du compilateur supplémentaires. L'option source-path indique au compilateur où chercher d'autres fichier source comme les fichiers properties.

  1. Sélectionnez votre projet puis Project > Properties
  2. Sélectionnez Flex Build Path, puis l'onglet Source Path
  3. Cliquez sur le bouton Add Folder, une boîte de dialogue va apparaître.
  4. Typiquement, vous devriez ajouter des "locale" dans un répertoire parallèle à celui du répertoire parent. Ce dossier, généralement baptisé "locale" contiendra les fichiers properties. Par exemple, pour le langage en_US, vous auriez le dossier c:/myApp/locale/en_US. Pour être un peu plus malin et pour pouvoir ajouter facilement des locale par la suite, ajoutez {locale} à la fin du chemin du dossier. Par exemple, on aura:
c:/myApp/locale/{locale}

Cela indique au compilateur qu'il devra inclure tous les dossiers correspondant au token {locale}, dans notre cas, en_US. Le token {locale} correspond à ce que vous allez indiquer dans l'option -locale. Si vous ajoutez donc d'autres locale dans l'option -locale, vous n'aurez pas besoin de les ajouter au source path, tant que les noms de dossier sont respectés.

Cliquez ensuite sur OK pour ajouter ce répertoire au Source Path de votre projet.

Vous pouvez aussi ajouter l'option -allow-source-path-overlap à true dans les Additional Compiler Arguments dans la partie Flex Compiler des propriétés de votre projet comme dans cet exemple:

-locale=en_US -allow-source-path-overlap=true

source path flex

L'option -locale indique au compilateur quel fichier de ressources il doit convertir en Resource Bundle. Par défaut, la locale en_US est supportée. Si vous voulez utiliser d'autres local", vous devez aussi générer des Resource Bundles pour le framework pour ces locale. On verra ça plus tard.

La valeur de l'option -locale est aussi utilisée pour l'option library-path. Si vous spécifiez plusieurs locale ou changer la locale, vous ne devrez pas changer le library path.

L'option  -allow-source-path-overlap permet d'éviter un warning généré par mxmlc.

Articles similaires