1

ここなど、多くの例を見てきました。ここでは、要素の locale 属性を参照してロケール リソース バンドルをインクルードしています。何らかの理由で、これは私にはうまくいきません。これが私がタスクのために持っているものです:

<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>

これは、次の形式の一連のエラーで失敗します。

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

この1つの変更でビルドできます:

<include name="locale/en_US"/>

Flex Builder 3 によって生成された構成ファイルは、実際にはこれを「locale/{locale}」としてレンダリングします ($ が欠落していることに注意してください)。私も同じ(失敗した)結果でそれを試しました。

今のところ、ローカリゼーション バンドルをしばらく行う予定がないため、en_US を直接注入しても問題ありませんが、最終的にはこれを機能させる必要があります。また、それが機能するはずの方法で機能させることができないことは私を悩ませます!

4

1 に答える 1

2

I think the problem here is that ${locale} is interpreted by ant as a property, rather than a string literal to pass to the compc task. What I mean is that ant sees ${locale} and thinks that you want to substitute the value of the property locale which is (supposedly) defined in your build file. Of course, this isn't what you want at all, and things break miserably because of it.

The way I've done things in my build files is to remove the $ prefix and everything seems to work as expected. So your example would look something like this:

<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>
于 2010-04-28T12:46:51.777 に答える