Adobe Flex 4: загрузка локализованных файлов среды выполнения - PullRequest
3 голосов
/ 08 июня 2011

Согласно документам Adobe asdocs, файлы инфраструктуры Flex должны загружаться во время выполнения. Эти локализованные файлы инфраструктуры, которые существуют в (в окнах) C: \ Program Files (x86) \ Adobe \ Adobe Flash Builder 4.5 \ sdks \ 4.5.0 \ frameworks \ locale, отвечают за такие элементы, как текст кнопки в Alert. Диалоги и множество других элементов управления. Я ожидаю, что после загрузки этих файлов инфраструктуры эти ресурсы будут доступны в моем приложении 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-релизе. Поскольку мы разворачиваем только содержимое папки bin-release (а не весь проект), как это должно работать?

Я также вижу файлы .swz в моем bin-релизе (и я знаю, что это не локализованные ресурсы фреймворка).

У кого-нибудь есть опыт работы с локализацией Runtime Framework ?? Что я делаю неправильно? Я ожидаю, что, как только я соберу свой проект (с внешними ресурсами фреймворка), приложение сможет загружать эти ресурсы, но этого не происходит, и я не заинтересован в составлении другой версии моего приложения для всех Я поддерживаю локали.

Заранее спасибо

1 Ответ

0 голосов
/ 12 июня 2011

Я использую следующую задачу 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');

Замечание: не нужно копировать каркасные файлы в папку проекта.Они будут подобраны компилятором при компиляции.

Дайте мне знать, если он работает, иначе мы можем отладить больше!

...