国际化开发
当应用具有多个在语言、时区、区域特性等方面存在显著差异的目标用户和市场时,开发者往往需要提供应用的多个本地化版本,以保证不同地区用户的体验。
应用的国际化能力决定了应用本地化过程的难易程度。系统提供了一系列的国际化接口,基于这些国际化接口,开发者可以设计并实现具有良好国际化能力的应用,从而可以高效、低成本的实现应用的本地化。
基本概念
- Locale:Locale是对一个群体在语言、脚本、国家或区域,以及日历、排序、货币等区域特性方面的共性的抽象表示。
- 偏好语言:偏好语言是用户设置过的语言,表示该语言是用户可接受的语言。用户可以在 设置/系统和更新/语言和输入法/语言和地区/添加语言中添加偏好语言。
运作机制
在调用国际化接口时,需要提供Locale信息,接口会依据该Locale的特性进行差异化的执行。Locale信息可以由开发人员通过硬编码的方式提供,但更通常的情况是使用用户设置的系统语言和区域。
获取系统语言区域信息
调用系统提供的接口访问系统的语言区域信息。
接口说明
模块 | 接口名称 | 描述 |
ohos.i18n | getSystemLanguage():string | 获取系统语言。 |
ohos.i18n | getSystemRegion():string | 获取系统区域。 |
ohos.i18n | getSystemLocale():string | 获取系统Locale。 |
ohos.i18n | isRTL(locale:string):boolean7+ | locale对应的语言是否为从右到左语言。 |
ohos.i18n | is24HourClock():boolean7+ | 获取当前系统时间是否采用24小时制。 |
ohos.i18n | getDisplayLanguage(language:string,locale:string,sentenceCase?:boolean):string | 获取语言的本地化表示。 |
ohos.i18n | getDisplayCountry(country:string,locale:string,sentenceCase?:boolean):string | 获取国家的本地化表示。 |
开发步骤
- 获取系统语言。
调用getSystemLanguage方法获取当前系统设置的语言(i18n为导入的模块)。
var language = i18n.getSystemLanguage();
- 获取系统区域。
调用getSystemRegion方法获取当前系统设置的区域
var region = i18n.getSystemRegion();
- 获取系统Locale。
调用getSystemLocale方法获取当前系统设置的Locale
var locale = i18n.getSystemLocale();
- 判断Locale的语言是否为RTL语言。
调用isRTL方法获取Locale的语言是否为从右到左语言。
var rtl = i18n.isRTL("zh-CN");
- 判断当前系统时间是否采用24小时制。
调用is24HourClock方法来判断当前系统的时间是否采用24小时制。
var hourClock = i18n.is24HourClock();
- 获取语言的本地化表示。
调用getDisplayLanguage方法获取某一语言的本地化表示。其中,language表示待本地化显示的语言,locale表示本地化的Locale,sentenceCase结果是否需要首字母大写。
var language = "en";
var locale = "zh-CN";
var sentenceCase = false;
var localizedLanguage = i18n.getDisplayLanguage(language, locale, sentenceCase);
- 获取国家的本地化表示。
调用getDisplayCountry方法获取某一国家的本地化表示。其中,country表示待本地化显示的国家,locale表示本地化的Locale,sentenceCase结果是否需要首字母大写。
var country = "US";
var locale = "zh-CN";
var sentenceCase = false;
var localizedCountry = i18n.getDisplayCountry(country, locale, sentenceCase);