本地化应用程序

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 或更高版本运行时上运行的应用程序的首选方法。有关详细信息,请参阅确定区域设置

  • 用户提示符 — 您可以在某些默认区域设置下启动应用程序,然后请用户选择其首选区域设置。

  • Capabilities.languages(仅限 AIR) — Capabilities.languages 属性列出用户首选语言中提供的语言数组,与通过操作系统设置的一样。字符串包含 RFC4646 (http://www.ietf.org/rfc/rfc4646.txt) 定义的语言标记(如果适用,还包括脚本及区域信息)。这些字符串使用连字符作为分隔符(例如,"en-US""ja-JP")。返回的数组中的第一项具有与 language 属性相同的主语言 ID。例如,如果 languages[0] 设置为 "en-US",则 language 属性将设置为 "en"。 但是,如果语言属性设置为 "xu"(指定未知语言),则 languages 数组中的第一个元素不同。

  • Capabilities.languageCapabilities.language 提供了操作系统的用户界面语言代码。但是,此属性限制为 20 种已知语言。并且在英文系统中,此属性仅返回语言代码,而不返回国家/地区代码。出于以上原因,最好使用 Capabilities.languages 数组中的第一个元素。

本地化 Flex 内容

Adobe Flex 包含一个用于本地化 Flex 内容的框架。此框架包括 Locale、ResourceBundle 和 ResourceManagerImpl 类以及 IResourceBundle、IResourceManagerImpl 接口。

Google 代码 (http://code.google.com/p/as3localelib/) 中提供了一个 Flex 本地化库,其中包含用于排序应用程序区域设置的实用程序类。

本地化 Flash 内容

Adobe Flash Professional 在 ActionScript 3.0 组件中包含一个 Locale 类。使用 Locale 类可以控制 SWF 文件显示多语言文本的方式。借助“Flash 字符串”面板,可以在动态文本字段中使用字符串 ID 替代字符串。使用此工具,您可以创建一个 SWF 文件,用它来显示从特定语言的 XML 文件加载的文本。有关使用 Locale 类的信息,请参阅用于 Adobe Flash Platform 的 ActionScript 3.0 参考

本地化 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 控件。