1

我见过很多例子,例如这里,人们通过引用元素中的语言环境属性来包含语言环境资源包。出于某种原因,这对我不起作用。这是我的任务:

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

我可以通过以下一项更改来构建它:

<include name="locale/en_US"/>

Flex Builder 3 生成的配置文件实际上将其呈现为“locale/{locale}”(注意缺少 $)。我也尝试过同样的(失败的)结果。

目前,我可以直接注入 en_US,因为我们在相当长的一段时间内都不会做本地化包,但我最终需要让它工作。此外,它让我感到烦恼的是,我无法让它按照它应该工作的方式工作!

4

1 回答 1

2

我认为这里的问题是${locale}ant 将其解释为属性,而不是传递给compc任务的字符串文字。我的意思是 ant 看到${locale}并认为您想要替换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"/>
        <!-- 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 回答