我见过很多例子e.g. here,其中人们通过引用元素中的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 ...
我可以通过这一改变来构建它:
<include name="locale/en_US"/>
Flex Builder 3生成的配置文件实际上将其呈现为“locale / {locale}”(注意$缺失)。我也尝试了相同(失败)的结果。
现在,我可以直接注入en_US,因为我们不会在很长一段时间内做本地化捆绑,但我最终还是需要让它工作。另外,它让我觉得我不能让它按照它应该的方式工作!
答案 0 :(得分: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>