Лучшие практики по интернационализации приложения Flex?
-
02-07-2019 - |
Вопрос
Я рассматриваю возможность интернационализации приложения Flex, над которым работаю, и мне интересно, есть ли какие-либо передовые методы или рекомендации для этого.
Поиск такой информации в Google приводит к появлению нескольких небольших статей и сообщений в блогах, каждая из которых посвящена разным действиям, а преимущества и недостатки не совсем ясны.
Отредактировано для сужения области применения:
- Необходимо поддерживать только два языка (en_CA и fr_CA)
- Необходимо иметь возможность переключаться во время выполнения
Решение
Конечно, погуглив еще немного, я наткнулся на статью о локализация времени выполнения.
И выполнил следующие шаги:
Добавьте следующее в аргументы компилятора, чтобы указать поддерживаемые локали и путь к ним:(В Flex Builder выберите проект и перейдите к свойствам -> Компилятор Flex -> Дополнительные аргументы компилятора)
-locale=en_CA,fr_CA -source-path=locale/{locale}
Создайте следующие файлы:
src/locale/en_CA/resources.properties
src/locale/fr_CA/resources.properties
И тогда компилятор жалуется: unable to open 'C:\Program Files\Adobe\Flex Builder 3\sdks\3.1.0\frameworks\locale\en_CA'
Это похоже на ошибку СДК-12507
Обходной путь:
в sdks\3.1.0\bin
каталог, выполните следующие команды:
copylocale en_US en_CA
copylocale en_US fr_CA
Это создаст каталоги локали в установке Flex Builder и встроит в них некоторые необходимые ресурсы.
Тогда в твоем .mxml
файлы, обратитесь к пакету ресурсов:
<mx:Metadata>
[ResourceBundle("resources")]
</mx:Metadata>
И интернационализируйте строки:
<mx:TitleWindow title="Window Title">
становится:
<mx:TitleWindow
title="{resourceManager.getString('resources', 'windowTitle')}">
и
var name:String = "Name";
становится:
var name:String = resourceManager.getString("resources", "name");
И в твоем src/locale/en_CA/resources.properties
файл:
windowTitle=Window Title
name=Name