Локализация — это процесс добавления файлов для поддержки нескольких локалей. Локаль представляет собой сочетание языка и кода страны. Например, 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.
|
|
|