Лучшие практики для интернационализации приложения Flex? - PullRequest
5 голосов
/ 25 сентября 2008

Я изучаю интернационализацию приложения Flex, над которым работаю, и мне любопытно, есть ли какие-либо рекомендации или рекомендации для этого.

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

Отредактировано в узком объеме:

  • Нужно поддерживать только два языка (en_CA и fr_CA)
  • Необходимо иметь возможность переключаться во время выполнения

1 Ответ

5 голосов
/ 25 сентября 2008

Конечно, немного погуглив, я наткнулся на статью о локализации времени выполнения .

И следовал этим шагам:

Добавьте следующее к аргументам компилятора, чтобы указать поддерживаемые локали и их путь: (В 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'

Что, похоже, связано с ошибкой SDK-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
...