2010-04-27 18 views
1

J'ai vu un certain nombre d'exemples, e.g. here, où les gens incluent des paquets de ressources de localisation en référençant l'attribut locale dans l'élément. Pour une raison quelconque, cela ne fonctionne pas pour moi. Voici ce que j'ai pour la tâche:

<compc output="${deploy.dir}/myfrmwrk.swc" locale="en_US"> 
    <source-path path-element="${basedir}/src/main/flex"/> 
    <include-sources dir="${basedir}/src/main/flex" includes="*" /> 
    <include-libraries file="${basedir}/libs"/> 
    <compiler.external-library-path dir="${FLEX_HOME}/frameworks/libs/player/9" append="true"> 
     <include name="playerglobal.swc"/> 
    </compiler.external-library-path> 
    <compiler.library-path dir="${FLEX_HOME}/frameworks" append="true"> 
     <include name="libs"/> 
     <include name="locale/${locale}"/> 
    </compiler.library-path> 
    <load-config filename="${basedir}/fb3config.xml" /> 
</compc> 

Cela échoue avec un tas d'erreurs de forme:

[compc] Error: could not find source for resource bundle ... 

je peux faire construire avec celui-ci le changement:

<include name="locale/en_US"/> 

Le fichier de configuration généré par Flex Builder 3 le convertit en "locale/{locale}" (remarquez que $ est manquant). J'ai essayé cela aussi avec les mêmes résultats (à défaut).

Pour l'instant, je vais bien m'injecter directement en_US car nous ne ferons pas de bundles de localisation depuis un certain temps, mais je finirai par avoir besoin de fonctionner. Aussi, ça m'embête que je ne peux pas le faire fonctionner de la façon dont ça DOIT fonctionner!

Répondre

2

Je pense que le problème ici est que ${locale} est interprété par ant comme une propriété plutôt que comme un littéral de chaîne à transmettre à la tâche compc. Ce que je veux dire, c'est que Ant voit ${locale} et pense que vous voulez substituer la valeur de la propriété locale qui est (soi-disant) définie dans votre fichier de construction. Bien sûr, ce n'est pas ce que vous voulez du tout, et les choses se brisent misérablement à cause de cela.

La façon dont je l'ai fait des choses dans mes fichiers de construction est de supprimer le préfixe $ et tout semble fonctionner comme prévu. Donc, votre exemple ressemblerait à ceci:

<compc output="${deploy.dir}/myfrmwrk.swc" locale="en_US"> 
    <source-path path-element="${basedir}/src/main/flex"/> 
    <include-sources dir="${basedir}/src/main/flex" includes="*" /> 
    <include-libraries file="${basedir}/libs"/> 
    <compiler.external-library-path dir="${FLEX_HOME}/frameworks/libs/player/9" append="true"> 
     <include name="playerglobal.swc"/> 
    </compiler.external-library-path> 
    <compiler.library-path dir="${FLEX_HOME}/frameworks" append="true"> 
     <include name="libs"/> 
     <!-- Ditch the dollar sign and things should work! --> 
     <include name="locale/{locale}"/> 
    </compiler.library-path> 
    <load-config filename="${basedir}/fb3config.xml" /> 
</compc>