根据Adobe asdocs,Flex框架文件应该能够在运行时加载。这些本地化的框架文件,存在于(在Windows上)C:\ Program Files(x86)\ Adobe \ Adobe Flash Builder 4.5 \ sdks \ 4.5.0 \ frameworks \ locale,负责警报上的按钮文本等项目对话框和许多其他控件。我的期望是,一旦加载了这些框架文件,我会在我的Flex应用程序中看到这些资源。
我按如下方式设置了我的项目:
MyProject
-src
-Flex4.5
-Referenced Libraries
-bin-debug
-bin-release
-libs
-locale (I've copied all of the directories(da_DK,en_US,es_ES,etc) of framework files for the locales I want to support inside of this dir)
现在asdocs声明为了做到这一点,你必须将编译器设置设置为读取
-locale=en_US,da_DK,de_DE,es_ES,fi_FI,fr_FR,it_IT,ja_JP,ko_KR,nb_NO,nl_NL,pt_BR,ru_RU,sv_SE,zh_CN,zh_TW -allow-source-path-overlap=true -source-path=locale/{locale}
我已经完成了。
My Build Path Libraries for Flex 4.5 - C:Program Files (x86)\Adobe\Adobe Flash Builder 4.5\sdks\4.5.0 are set to be Runtime Shared library (of note, the {locale} subfolder says "Merged into code")
但是当我在浏览器中更改语言时,我没有看到任何框架资源。
此外,当我构建项目时,我没有看到bin-release中任何面向语言环境的资源文件的迹象。由于我们只部署bin-release文件夹的内容(而不是整个项目),这应该如何工作?
我也在bin-release中看到.swz文件(我知道这些文件不是本地化的框架资源)。
有没有人有运行时框架本地化的经验?我究竟做错了什么?我的期望是,一旦我构建我的项目(框架资源外部化)应用程序将能够加载这些资源,但这没有发生,我不想编译我的应用程序的所有的不同版本我支持的语言环境。
提前致谢
答案 0 :(得分:0)
我使用以下适用于我的ANT任务:
<mxmlc file="${build.dir.src}/${mxml.file}" keep-generated-actionscript="false" output="${build.dir.stage}/${project.app.name}.swf"
actionscript-file-encoding="UTF-8" incremental="false" context-root="${project.app.name}" optimize="${app.optimize}"
debug="${app.debug}" configname="air" locale="en_US,ja_JP,fr_FR">
<jvmarg value="-Xmx1024m" />
<jvmarg value="-Xms512m" />
<compiler.theme append="true" file="${FLEX_HOME}/frameworks/projects/spark/MXFTEText.css" />
<source-path path-element="${FLEX_HOME}/frameworks" />
<source-path path-element="${build.dir.locale.src}/{locale}" />
<library-path dir="${FLEX_HOME}/frameworks/libs" append="true">
<include name="*.swc" />
</library-path>
<library-path dir="${FLEX_HOME}/frameworks/libs/air" append="true">
<include name="*.swc" />
</library-path>
<library-path dir="${FLEX_HOME}/frameworks/locale" append="true">
<include name="{locale}" />
</library-path>
<library-path dir="${build.dir.lib}" append="true">
<include name="*.swc" />
</library-path>
将以下标记添加到使用资源的类中,并按以下方式读取字符串:
[ResourceBundle('application')]
// set up the locale chain
ResourceManager.getInstance().localeChain = [ 'en_US', 'ja_JP', 'fr_FR' ];
// load resources
ResourceManager.getInstance().getString('application', 'some.string.code');
观察:一个人不需要将框架文件复制到一个项目文件夹中。在编译时,它们将被编译。
让我知道它是否有效,否则我们可以调试更多!