Почему гибкий тег ресурса не поддерживает локализацию? - PullRequest
0 голосов
/ 28 марта 2012

В некоторых местах моего приложения Flex я использую ResourceManager.getInstance (). GetString, а в других местах использую тег mxml @Resource для извлечения свойств ресурса, динамически загружаемых из ResourceManager.

resourceManager.loadResourceModule(resourceModuleURL);

Но только строки из ResourceManager.getInstance (). GetString показывают правильные значения на основе локали, а тег @Resource возвращает только значения из ресурса en_US.Я думаю, это потому, что en_US - это то, что я скомпилировал (-locale = en_US).

Так что мне интересно, использую ли я динамически загружаемый ресурс, нужно ли мне отказаться от тега @Resource и использовать ResourceManager.getInstance (). getString?

Спасибо.

1 Ответ

1 голос
/ 28 марта 2012

Когда вы компилируете, вам нужно включить список разделенных запятыми локалей:

-locale=en_US,es_ES

Это должно позволить использовать @Resource для локализации.

Более подробно в справочной документации:

http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7f3a.html#WS2db454920e96a9e51e63e3d11c0bf6119c-7fef

Выдержка:

Чтобы иметь возможность изменять локаль во время выполнения без использования ресурса модули, вы собираете все доступные локали в приложение по адресу время компиляции, включая их как часть опции локали. это Опция компилятора принимает список локалей через запятую. Если вы добавите во второй локали, такой как es_ES, измените опцию локали на следующее:

-locale=en_US,es_ES

EDIT:

Чтобы разделить языковые стандарты на отдельные SWF-файлы, попробуйте создать модули ресурсов. Вот выдержка:

Модули ресурсов - это SWF-файлы, отдельно от SWF-файла вашего приложения. файл, содержащий пакеты ресурсов для одной локали. Ваш приложение может предварительно загрузить один или несколько ресурсных модулей при запуске, прежде чем он отображает свой пользовательский интерфейс. Это также может загрузить ресурс модули позже, например, в ответ на выбор пользователем новой локали. ResourceManager взаимодействует со всеми пакетами ресурсов одинаково, были ли пакеты, которыми он управляет, были изначально собраны в приложение или загружено из ресурсных модулей.

Они отлично подходят для локализации, так как вы можете разделить каждый язык на разные SWF-файлы.

Ресурсные модули могут быть лучшим подходом к локализации, чем ресурсы времени компиляции, потому что вы экстернализуете модули ресурсов это может быть загружено во время выполнения. Это создает меньшее приложение SWF файл, но затем требует загрузки отдельного файла SWF для каждого ресурсный модуль, который вы используете. Результатом может быть увеличение числа сетевые запросы и совокупный размер приложения, превышающий если вы скомпилировали ресурсы локали в приложение. Однако если у вас много локалей, тогда загрузка их по отдельности должна сохранить ресурсы в долгосрочной перспективе.

Вот ссылка на ресурсные модули: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7f3c.html

Я рекомендую создать модули ресурсов, которые необходимо использовать в качестве локализации в качестве SWF-файлов, а затем либо скомпилировать их в приложение во время компиляции, либо динамически вести каждый модуль ResourceModule во время выполнения, чтобы у вас был к нему доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...