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

21avr/093

Flex Localization – Pré-chargement de Resource Modules (preload)

Vous pouvez charger un Resource Module quand l'application démarre en appelant la méthode loadResourceModule() au moment de l'évènement initialize, et en spécifiant une valeur pour la propriété localeChain une fois que le module est chargé. C'est utile si vous avez une langue par défaut et que vous voulez que tous les utilisateurs démarrent avec cette langue.

Vous pouvez aussi spécifier la locale que l'application va charger par défaut en la passant en FlashVars dans le conteneur HTML.

Voici les variables flashVars que vous devez passer pour précharger les Resource Modules:

  • localeChain: Une liste (séparateur ",") de locale pour l'initialisation de la propriété localeChain de la classe ResourceManager. Si la propriété localeChain n'est pas explicitement fixée, localeChain sera initialisée avec la valeur passée dans l'option -locale du compilateur
  • resourceModuleURLs: Une list (séparateur ",") d'URL depuis lesquelles les Resource Module seront chargés. Les resource Modules sont chargés pas la même classe que les RSLs, mais sont chargés après les RSLs. Ces URLs peuvent être relatives ou absolues

Comme pour des paramètres dans une URL, vous devez séparer ces valeurs par un "&" et vous devez vous assurer que les caractères sont bien encodés.

Ajouter les flashVars directement dans <object> et <embed>

Si vous écrivez votre propre template HTML, vous pouvez passez les variable FlashVars dans les tags <object> et <embed>. L'exemple suivant spécifie que le Resource Module pour la langue française (fr_FR) est preloaded quand l'application se lance:

<object id='mySwf'
    classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'
    codebase='http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab'
    height='100%'
    width='100%'>
    <param name='src' value='ResourceModuleApp.swf'/>
    <param name='flashVars'
        value='resourceModuleURLs=fr_FR_ResourceModule.swf&localeChain=fr_FR'/>
    <embed name='mySwf'
        src='ResourceModuleApp.swf'
        pluginspage='http://www.adobe.com/go/getflashplayer'
        height='100%'
        width='100%'
        flashVars='resourceModuleURLs=fr_FR_ResourceModule.swf&localeChain=fr_FR'
    />
>

Ajouter les flashVars dans le template HTML de Flex Builder

Si vous utilisez le fichier HTML généré par Flex Builder, vous  devez ajouter les propriétés FlashVars à la méthode JavaScript AC_FL_RunContent() du fichier html-template/index.template.html:

AC_FL_RunContent(
    "src", "ResourceModuleApp",
    "flashVars", "resourceModuleURLs=fr_FR_ResourceModule.swf&localeChain=fr_FR",
    "width", "500",
    "height", "500",
    "align", "middle",
    "id", "ResourceModuleApp",
    "name", "ResourceModuleApp",
    "allowScriptAccess","sameDomain",
    "type", "application/x-shockwave-flash",
    "pluginspage", "http://www.adobe.com/go/getflashplayer"
);

Articles similaires

Commentaires (3) Trackbacks (0)
  1. Bonjour,
    merci pour ce tuto ! :)
    j'aurais neanmoins une petite question plus ou moins liée, j'ai un projet FB4 dans lequel j'ai des modules qui se charge apres execution. et j'ai une erreur de compilation seulement presente sur ce projet avec les modules :
    mon parametre de compi. -locale fr_FR
    j'ai également des lib RSL dans le projet mais j'ai vraiment l'impression que cela ce produit lorsque l'appli compile les modules. voici l'erreur :

    MXML:
    1. [SWF] /ecommerce2R2-debug/ecommerce2R2.swf - 177 511 octets après la décompression
    2. [SWF] /ecommerce2R2-debug/ecommerce2R2.swf - 370 463 octets après la décompression
    3. [SWF] /ecommerce2R2-debug/ecommerce2R2.swf - 648 239 octets après la décompression
    4. [SWF] /ecommerce2R2-debug/ecommerce2R2.swf - 2 292 131 octets après la décompression
    5. [SWF] /ecommerce2R2-debug/ecommerce2R2.swf - 1 429 050 octets après la décompression
    6. [SWF] /ecommerce2R2-debug/ecommerce2R2.swf - 441 686 octets après la décompression
    7. [SWF] /ecommerce2R2-debug/ecommerce2R2.swf - 323 414 octets après la décompression
    8. [SWF] /ecommerce2R2-debug/libImageBoutonOption.swf - 32 591 octets après la décompression
    9. [SWF] /ecommerce2R2-debug/libImageIcone.swf - 33 082 octets après la décompression
    10. [SWF] /ecommerce2R2-debug/libImageFond.swf - 584 940 octets après la décompression
    11. [SWF] /ecommerce2R2-debug/assets/css/style.swf - 195 624 octets après la décompression
    12. [SWF] /ecommerce2R2-debug/modules/modGeneral/modLogo.swf - 168 089 octets après la décompression
    13. [SWF] /ecommerce2R2-debug/modules/modMenu/modMenuOption.swf - 176 914 octets après la décompression
    14. [SWF] /ecommerce2R2-debug/modules/modMenu/modMenuHaut.swf - 909 268 octets après la décompression
    15. [SWF] /ecommerce2R2-debug/modules/modMenu/modMenuGauche.swf - 910 943 octets après la décompression
    16. Error: Could not find compiled resource bundle 'controls' for locale 'fr_FR'.
    17.     at mx.resources::ResourceManagerImpl/installCompiledResourceBundle()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\resources\ResourceManagerImpl.as:340]
    18.     at mx.resources::ResourceManagerImpl/installCompiledResourceBundles()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\resources\ResourceManagerImpl.as:269]
    19.     at mx.core::FlexModuleFactory/installCompiledResourceBundles()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\core\FlexModuleFactory.as:610]
    20.     at mx.core::FlexModuleFactory/docFrameHandler()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\core\FlexModuleFactory.as:580]
    21.     at mx.core::FlexModuleFactory/docFrameListener()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\core\FlexModuleFactory.as:126]

  2. Salut,
    j'ai trouvé ce bug report qui correspond à ton problème:
    http://forums.adobe.com/thread/624594?tstart=0
    Apparement, la solution donnée fonctionne et à un rapport avec les RSLs (qui seraient chargés plusieurs fois pour des modules comprenant des modifications de style et cela pose problème).
    La solution donnée:
    Compiler ses modules avec le flag:
    "-static-rsls=true".

    Fabien

  3. Merci pour tous ces tutos sur l'internationalisation Fabien, ils m'ont beaucoup aidé.
    Avant je compilais avec la locale fr_FR sans vraiment comprendre tous les tenants et les aboutissants, maintenant c'est beaucoup plus clair !

    Merci encore :)


Leave a comment

(required)

Aucun trackbacks pour l'instant