Локализация приложений

Flash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий

Локализация — это процесс добавления файлов для поддержки нескольких локалей. Локаль представляет собой сочетание языка и кода страны. Например, en_US означает английский язык (США), а fr_FR — французский (Франция). Для локализации приложений согласно этим локалям потребуется два набора файлов: один для локали en_US, а другой — для fr_FR.

У нескольких локалей может быть общий язык. Например, en_US и en_GB (Великобритания) — это две разных локали. Обе они используют английский, но код страны указывает на то, что это разные локали, поэтому они могут обращаться к разным файлам. Например, в локали en_US слово «цвет» может писаться как «color», а в en_GB — «colour». Кроме того, разной будет валюта: в первом случае доллары, во втором фунты, — а также формат даты и времени.

Можно создать набор файлов для языка без указания кода страны. Например, можно задать набор файлов en для английского и добавить для локали en_US дополнительные ресурсы, относящиеся только к английскому (США).

Локализация — это не просто перевод файлов приложения на другой язык. Она также охватывает и другие типы ресурсов: аудиофайлы, изображения и видео.

Выбор локали

Определить локаль, используемую в вашем содержимом, можно одним из следующих способов:

  • Пакет flash.globalization — использование классов для локали, доступных в пакете flash.globalization, для получения локали по умолчанию на основе настроек операционной системы и пользовательских настроек. Это предпочтительный подход в приложениях, которые будут выполняться в средах выполнения Flash Player 10.1 и более поздних версий или AIR 2.0 и более поздних версий. Дополнительные сведения см. в разделе « Определение локали ».

  • Запрос пользователя. Можно запустить приложение на локали по умолчанию, а затем узнать у пользователя его предпочтения.

  • (AIR only) Capabilities.languages . Свойство Capabilities.languages содержит список массива языков, перечисленных на предпочитаемых языках пользователя, согласно настройкам операционной системы. Строки, содержащие языковые теги (а также информацию о сценариях и регионах, если имеется), определены стандартом RFC4646 ( http://www.ietf.org/rfc/rfc4646.txt ). В строках в качестве разделителя используется дефис (например, "en-US" или "ja-JP" ). Первая запись в возвращенном массиве будет иметь тот ID основного языка, который задан в свойстве language. Например, если languages[0] равно "en-US" , то свойство language будет "en". Тем не менее, если свойство language равно "xu" (неизвестный язык), первый элемент в массиве languages будет другим.

  • Capabilities.language . Свойство Capabilities.language содержит код языка пользовательского интерфейса операционной системы. Тем не менее значение этого свойства ограничивается 20 известными языками. В англоязычных системах это свойство возвращает только код языка, без кода страны. Поэтому лучше использовать первый элемент в массиве Capabilities.languages .

Локализация содержимого Flex

Adobe Flex предлагает инфраструктуру для локализации содержимого Flex. Эта инфраструктура включает классы Locale, ResourceBundle и ResourceManagerImpl, а также интерфейсы IResourceBundle и IResourceManagerImpl.

Библиотека для локализации Adobe Flex, содержащая классы утилит для сортировки локалей приложения, предоставляется на странице Google Code (http://code.google.com/p/as3localelib/).

Локализация содержимого Flash

Adobe Flash Professional содержит класс Locale в компонентах ActionScript 3.0. Класс Locale позволяет управлять тем, как SWF-файл отображает текст на разных языках. Панель Flash «Строки» позволяет использовать в динамических полях ID строк вместо литералов. Благодаря этому можно создать SWF-файл, отображающий текст, загруженный из XML-файла соответствующего языка. Сведения об использовании класса Locale см. в справочнике ActionScript® 3.0 для платформы Adobe® Flash® Platform .

Локализация приложений AIR

В комплект AIR SDK включена инфраструктура локализации HTML (в файле AIRLocalizer.js). Эта инфраструктура включает API-интерфейсы, которые помогают в работе с несколькими локалями в приложениях на базе HTML. Библиотеку ActionScript для сортировки локалей можно найти на странице http://code.google.com/p/as3localelib/.

Локализация даты, времени и валюты

В разных локалях отображения даты, времени и валюты могут значительно отличаться. Например, в США даты принято записывать в формате «месяц/день/год», в то время как в Европе обычно пишут «день/месяц/год».

Можно написать код для форматирования даты, времени и валюты. Например, в коде ниже объект Date преобразуется между форматами «месяц/день/год» и «день/месяц/год». Если переменная locale (представляющая локаль) равна "en_US" , функция возвращает дату в формате «месяц/день/год». В этом примере для всех остальных локалей объект Date преобразуется в формат «день/месяц/год»:

function convertDate(date) 
{ 
    if (locale == "en_US") 
    { 
        return (date.getMonth() + 1) + "/" + date.getDate() + "/" + date.getFullYear(); 
    } 
    else 
    { 
        return date.getDate() + "/" + (date.getMonth() + 1) + "/" + date.getFullYear(); 
    } 
}

ADOBE FLEX

Инфраструктура Flex содержит элементы управления для форматирования дат, времени и валюты. К ним относятся элементы DateFormatter и CurrencyFormatter.