1# 系统语言与区域 2 3<!--Kit: Localization Kit--> 4<!--Subsystem: Global--> 5<!--Owner: @yliupy--> 6<!--Designer: @sunyaozu--> 7<!--Tester: @lpw_work--> 8<!--Adviser: @Brilliantry_Rui--> 9 10## 实现原理 11 12在设置的“语言和地区”中可以添加多种语言,多种语言形成的列表称为语言列表,列表中的第一个语言称为系统语言。系统区域是依据区域ID划分的特定地区。 13 14设置/切换系统语言时,系统会检查[扩展参数](i18n-locale-culture.md)与系统语言是否匹配,若不匹配,则删除扩展参数。例如,当前系统语言设置为阿拉伯语“ar”时,使用本地数字为“arab”。当系统语言切换为马来西亚语“my”时,本地数字参数更改为马来西亚的本地数字“mymr”。当切换为中文时,因中文不支持设置本地数字,采用阿拉伯数字,因此本地数字的扩展参数会被移除。 15 16 17## 开发步骤 18 19接口具体使用方法和说明请参考[System](../reference/apis-localization-kit/js-apis-i18n.md#system9)的API接口文档。 20 211. 导入模块。 22 ```ts 23 import { i18n } from '@kit.LocalizationKit'; 24 import { BusinessError, commonEventManager } from '@kit.BasicServicesKit'; 25 ``` 26 272. 获取系统语言、系统地区、系统区域。 28 ```ts 29 // 获取系统语言 30 let systemLanguage: string = i18n.System.getSystemLanguage(); // systemLanguage为当前系统语言 31 32 // 获取系统地区 33 let systemRegion: string = i18n.System.getSystemRegion(); // systemRegion为当前系统地区 34 35 // 获取系统区域 36 let systemLocale: Intl.Locale = i18n.System.getSystemLocaleInstance(); // systemLocale为当前系统区域 37 38 // 通过监听公共事件COMMON_EVENT_LOCALE_CHANGED可以感知系统语言、系统地区或系统区域变化 39 let subscriber: commonEventManager.CommonEventSubscriber; // 用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作 40 let subscribeInfo: commonEventManager.CommonEventSubscribeInfo = { 41 events: [commonEventManager.Support.COMMON_EVENT_LOCALE_CHANGED] 42 }; 43 // 创建订阅者 44 commonEventManager.createSubscriber(subscribeInfo) 45 .then((commonEventSubscriber: commonEventManager.CommonEventSubscriber) => { 46 console.info("CreateSubscriber"); 47 subscriber = commonEventSubscriber; 48 commonEventManager.subscribe(subscriber, (err, data) => { 49 if (err) { 50 console.error(`Failed to subscribe common event. error code: ${err.code}, message: ${err.message}.`); 51 return; 52 } 53 console.info("The subscribed event has occurred."); // 系统语言、系统地区或系统区域变化时执行 54 }) 55 }) 56 .catch((err: BusinessError) => { 57 console.error(`CreateSubscriber failed, code is ${err.code}, message is ${err.message}`); 58 }); 59 ``` 60 61<!--Del--> 623. 设置系统语言、系统地区。 63 ```ts 64 // 设置系统当前语言为'zh-Hans' 65 try { 66 i18n.System.setSystemLanguage('zh-Hans'); 67 } catch (error) { 68 let err: BusinessError = error as BusinessError; 69 console.error(`call System.setSystemLanguage failed, error code: ${err.code}, message: ${err.message}.`); 70 } 71 72 // 设置系统当前地区为'CN' 73 try { 74 i18n.System.setSystemRegion('CN'); 75 } catch (error) { 76 let err: BusinessError = error as BusinessError; 77 console.error(`call System.setSystemRegion failed, error code: ${err.code}, message: ${err.message}.`); 78 } 79 ``` 80<!--DelEnd-->