# @ohos.i18n (Internationalization) (System API) This module provides system-related or enhanced i18n capabilities, such as locale management, phone number formatting, and calendar, through supplementary i18n APIs that are not defined in ECMA 402. The [intl](js-apis-intl.md) module provides basic i18n capabilities through the standard i18n APIs defined in ECMA 402. It works with the **i18n** module to provide a complete suite of i18n capabilities. > **NOTE** > - The initial APIs of this module are supported since API version 7. Newly added APIs will be marked with a superscript to indicate their earliest API version. > > - Since API version 11, some APIs of this module are supported in ArkTS widgets. > > - This topic describes only system APIs provided by the module. For details about its public APIs, see [@ohos.i18n (Internationalization)](js-apis-intl.md). ## Modules to Import ```ts import { i18n } from '@kit.LocalizationKit'; ``` ## System9+ ### setSystemLanguage9+ static setSystemLanguage(language: string): void Sets the system language. Currently, this API does not support real-time updating of the system language. To listen for system language changes, enable listening for [COMMON_EVENT_LOCALE_CHANGED](../apis-basic-services-kit/common_event/commonEventManager-definitions.md#common_event_locale_changed). **System API**: This is a system API. **Permission required**: ohos.permission.UPDATE_CONFIGURATION **System capability**: SystemCapability.Global.I18n **Parameters** | Name | Type | Mandatory | Description | | -------- | ------ | ---- | ----- | | language | string | Yes | Valid language ID.| **Error codes** For details about the error codes, see [ohos.i18n Error Codes](errorcode-i18n.md) and [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | ------ | ---------------------- | | 201 | Permission verification failed. The application does not have the permission required to call the API. | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. | | 890001 | Invalid parameter. Possible causes: Parameter verification failed. | **Example** ```ts import { BusinessError, commonEventManager } from '@kit.BasicServicesKit'; // Set the system language try { i18n.System.setSystemLanguage('zh'); // Set the current system language to zh. } catch(error) { let err: BusinessError = error as BusinessError; console.error(`call System.setSystemLanguage failed, error code: ${err.code}, message: ${err.message}.`); } // Subscribe to a common event. let subscriber: commonEventManager.CommonEventSubscriber; // Used to save the created subscriber object for subsequent subscription and unsubscription. let subscribeInfo: commonEventManager.CommonEventSubscribeInfo = { // Define subscriber information. events: [commonEventManager.Support.COMMON_EVENT_LOCALE_CHANGED] }; commonEventManager.createSubscriber(subscribeInfo).then((commonEventSubscriber:commonEventManager.CommonEventSubscriber) => { // Create a subscriber. console.info("createSubscriber"); subscriber = commonEventSubscriber; commonEventManager.subscribe(subscriber, (err, data) => { if (err) { console.error(`Failed to subscribe common event. error code: ${err.code}, message: ${err.message}.`); return; } console.info("the subscribed event has occurred."); // Triggered when the subscribed event occurs. }) }).catch((err: BusinessError) => { console.error(`createSubscriber failed, code is ${err.code}, message is ${err.message}`); }); ``` ### setSystemRegion9+ static setSystemRegion(region: string): void Sets the system region. To listen for system region changes, enable listening for [COMMON_EVENT_LOCALE_CHANGED](../apis-basic-services-kit/common_event/commonEventManager-definitions.md#common_event_locale_changed). **System API**: This is a system API. **Permission required**: ohos.permission.UPDATE_CONFIGURATION **System capability**: SystemCapability.Global.I18n **Parameters** | Name | Type | Mandatory | Description | | ------ | ------ | ---- | ----- | | region | string | Yes | Valid region ID.| **Error codes** For details about the error codes, see [ohos.i18n Error Codes](errorcode-i18n.md) and [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | ------ | ---------------------- | | 201 | Permission verification failed. The application does not have the permission required to call the API. | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. | | 890001 | Invalid parameter. Possible causes: Parameter verification failed. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; try { i18n.System.setSystemRegion('CN'); // Set the current system region to CN. } catch(error) { let err: BusinessError = error as BusinessError; console.error(`call System.setSystemRegion failed, error code: ${err.code}, message: ${err.message}.`); } ``` ### setSystemLocale9+ static setSystemLocale(locale: string): void Sets the system locale. To listen for system locale changes, enable listening for [COMMON_EVENT_LOCALE_CHANGED](../apis-basic-services-kit/common_event/commonEventManager-definitions.md#common_event_locale_changed). **System API**: This is a system API. **Permission required**: ohos.permission.UPDATE_CONFIGURATION **System capability**: SystemCapability.Global.I18n **Parameters** | Name | Type | Mandatory | Description | | ------ | ------ | ---- | --------------- | | locale | string | Yes | [Locale information](../../internationalization/i18n-locale-culture.md#how-it-works), which consists of the language, script, and country/region.| **Error codes** For details about the error codes, see [ohos.i18n Error Codes](errorcode-i18n.md) and [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | ------ | ---------------------- | | 201 | Permission verification failed. The application does not have the permission required to call the API. | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. | | 890001 | Invalid parameter. Possible causes: Parameter verification failed. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; try { i18n.System.setSystemLocale('zh-CN'); // Set the current system locale to zh-CN. } catch(error) { let err: BusinessError = error as BusinessError; console.error(`call System.setSystemLocale failed, error code: ${err.code}, message: ${err.message}.`); } ``` ### set24HourClock9+ static set24HourClock(option: boolean): void Sets the system time to the 24-hour clock. **System API**: This is a system API. **Permission required**: ohos.permission.UPDATE_CONFIGURATION **System capability**: SystemCapability.Global.I18n **Parameters** | Name | Type | Mandatory | Description | | ------ | ------- | ---- | ---------------------------------------- | | option | boolean | Yes | Whether to enable the 24-hour clock. The value **true** means to enable the 24-hour clock, and the value **false** means the opposite.| **Error codes** For details about the error codes, see [ohos.i18n Error Codes](errorcode-i18n.md) and [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | ------ | ---------------------- | | 201 | Permission verification failed. The application does not have the permission required to call the API. | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. | | 890001 | Invalid parameter. Possible causes: Parameter verification failed. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; // Set the system time to the 24-hour clock. try { i18n.System.set24HourClock(true); } catch(error) { let err: BusinessError = error as BusinessError; console.error(`call System.set24HourClock failed, error code: ${err.code}, message: ${err.message}.`); } ``` ### addPreferredLanguage9+ static addPreferredLanguage(language: string, index?: number): void Adds a preferred language to the specified position on the preferred language list. **System API**: This is a system API. **Permission required**: ohos.permission.UPDATE_CONFIGURATION **System capability**: SystemCapability.Global.I18n **Parameters** | Name | Type | Mandatory | Description | | -------- | ------ | ---- | ---------- | | language | string | Yes | Valid ID of the language to be added as a preferred language. | | index | number | No | Position to which the preferred language is added. The default value is the length of the preferred language list.| **Error codes** For details about the error codes, see [ohos.i18n Error Codes](errorcode-i18n.md) and [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | ------ | ---------------------- | | 201 | Permission verification failed. The application does not have the permission required to call the API. | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. | | 890001 | Invalid parameter. Possible causes: Parameter verification failed. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; // Add zh-CN to the preferred language list. let language = 'zh-CN'; let index = 0; try { i18n.System.addPreferredLanguage(language, index); // Add zh-CN to the first place in the preferred language list. } catch(error) { let err: BusinessError = error as BusinessError; console.error(`call System.addPreferredLanguage failed, error code: ${err.code}, message: ${err.message}.`); } ``` ### removePreferredLanguage9+ static removePreferredLanguage(index: number): void Deletes a preferred language from the specified position on the preferred language list. **System API**: This is a system API. **Permission required**: ohos.permission.UPDATE_CONFIGURATION **System capability**: SystemCapability.Global.I18n **Parameters** | Name | Type | Mandatory | Description | | ----- | ------ | ---- | --------------------- | | index | number | Yes | Position of the preferred language to delete.| **Error codes** For details about the error codes, see [ohos.i18n Error Codes](errorcode-i18n.md) and [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | ------ | ---------------------- | | 201 | Permission verification failed. The application does not have the permission required to call the API. | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. | | 890001 | Invalid parameter. Possible causes: Parameter verification failed. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; // Delete the first preferred language from the preferred language list. let index: number = 0; try { i18n.System.removePreferredLanguage(index); } catch(error) { let err: BusinessError = error as BusinessError; console.error(`call System.removePreferredLanguage failed, error code: ${err.code}, message: ${err.message}.`); } ``` ### setUsingLocalDigit9+ static setUsingLocalDigit(flag: boolean): void Specifies whether to enable use of local digits. **System API**: This is a system API. **Permission required**: ohos.permission.UPDATE_CONFIGURATION **System capability**: SystemCapability.Global.I18n **Parameters** | Name | Type | Mandatory | Description | | ---- | ------- | ---- | ------------------------------- | | flag | boolean | Yes | Whether to turn on the local digit switch. The value **true** means to turn on the local digit switch, and the value **false** indicates the opposite.| **Error codes** For details about the error codes, see [ohos.i18n Error Codes](errorcode-i18n.md) and [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | ------ | ---------------------- | | 201 | Permission verification failed. The application does not have the permission required to call the API. | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. | | 890001 | Invalid parameter. Possible causes: Parameter verification failed. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; try { i18n.System.setUsingLocalDigit(true); // Enable the local digit switch. } catch(error) { let err: BusinessError = error as BusinessError; console.error(`call System.setUsingLocalDigit failed, error code: ${err.code}, message: ${err.message}.`); } ``` ## SystemLocaleManager10+ ### constructor10+ constructor() Creates a **SystemLocaleManager** object. **System API**: This is a system API. **System capability**: SystemCapability.Global.I18n **Example** ```ts let systemLocaleManager: i18n.SystemLocaleManager = new i18n.SystemLocaleManager(); ``` ### getLanguageInfoArray10+ getLanguageInfoArray(languages: Array<string>, options?: SortOptions): Array<LocaleItem> Obtains the language sorting array. **System API**: This is a system API. **System capability**: SystemCapability.Global.I18n **Parameters** | Name | Type | Mandatory| Description | | --------- | ------------- | ---- | ------------- | | languages | Array<string> | Yes | Valid IDs of the languages to be sorted.| | options | [SortOptions](#sortoptions10) | No | Language sorting option.| **Return value** | Type | Description | | ----------------- | -------------------- | | Array<[LocaleItem](#localeitem10)> | Language list after sorting.| **Error codes** For details about the error codes, see [ohos.i18n Error Codes](errorcode-i18n.md) and [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | ------ | ---------------------- | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. | | 890001 | Invalid parameter. Possible causes: Parameter verification failed. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; // Assume that the system language is zh-Hans, the system region is CN, and the system locale is zh-Hans-CN. let systemLocaleManager: i18n.SystemLocaleManager = new i18n.SystemLocaleManager(); let languages: string[] = ["zh-Hans", "en-US", "pt", "ar"]; let sortOptions: i18n.SortOptions = {locale: "zh-Hans-CN", isUseLocalName: true, isSuggestedFirst: true}; try { // The language list after sorting is [zh-Hans, en-US, pt, ar]. let sortedLanguages: Array = systemLocaleManager.getLanguageInfoArray(languages, sortOptions); } catch(error) { let err: BusinessError = error as BusinessError; console.error(`call systemLocaleManager.getLanguageInfoArray failed, error code: ${err.code}, message: ${err.message}.`); } ``` ### getRegionInfoArray10+ getRegionInfoArray(regions: Array<string>, options?: SortOptions): Array<LocaleItem> Obtains the country/region sorting array. **System API**: This is a system API. **System capability**: SystemCapability.Global.I18n **Parameters** | Name | Type | Mandatory| Description | | --------- | ------------- | ---- | ------------- | | regions | Array<string> | Yes | Valid IDs of the countries or regions to be sorted.| | options | [SortOptions](#sortoptions10) | No | Country/region sorting option.
The default value of **locale** is the system locale, the default value of **isUseLocalName** is **false**, and the default value of **isSuggestedFirst** is **true**.| **Return value** | Type | Description | | ----------------- | -------------------- | | Array<[LocaleItem](#localeitem10)> | Country/region list after sorting.| **Error codes** For details about the error codes, see [ohos.i18n Error Codes](errorcode-i18n.md) and [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | ------ | ---------------------- | | 202 | Permission verification failed. A non-system application calls a system API. | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. | | 890001 | Invalid parameter. Possible causes: Parameter verification failed. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; // Assume that the system language is zh-Hans, the system region is CN, and the system locale is zh-Hans-CN. let systemLocaleManager: i18n.SystemLocaleManager = new i18n.SystemLocaleManager(); let regions: string[] = ["CN", "US", "PT", "EG"]; let sortOptions: i18n.SortOptions = {locale: "zh-Hans-CN", isUseLocalName: false, isSuggestedFirst: true}; try { // The country/region list after sorting is [CN, EG, US, PT]. let sortedRegions: Array = systemLocaleManager.getRegionInfoArray(regions, sortOptions); } catch(error) { let err: BusinessError = error as BusinessError; console.error(`call systemLocaleManager.getRegionInfoArray failed, error code: ${err.code}, message: ${err.message}.`); } ``` ### getTimeZoneCityItemArray10+ static getTimeZoneCityItemArray(): Array<TimeZoneCityItem> Obtains the array of time zone city items after sorting. **System API**: This is a system API. **System capability**: SystemCapability.Global.I18n **Return value** | Type | Description | | ----------------- | -------------------- | | Array<[TimeZoneCityItem](#timezonecityitem10)> | Array of time zone city items.| **Error codes** For details about the error codes, see [ohos.i18n Error Codes](errorcode-i18n.md) and [Universal Error Codes](../errorcode-universal.md). | ID | Error Message | | ------ | ---------------------- | | 202 | Permission verification failed. A non-system application calls a system API. | **Example** ```ts import { BusinessError } from '@kit.BasicServicesKit'; try { let timeZoneCityItemArray: Array = i18n.SystemLocaleManager.getTimeZoneCityItemArray(); for (let i = 0; i < timeZoneCityItemArray.length; i++) { console.log(timeZoneCityItemArray[i].zoneId + ", " + timeZoneCityItemArray[i].cityId + ", " + timeZoneCityItemArray[i].cityDisplayName + ", " + timeZoneCityItemArray[i].offset + "\r\n"); } } catch(error) { let err: BusinessError = error as BusinessError; console.error(`call SystemLocaleManager.getTimeZoneCityItemArray failed, error code: ${err.code}, message: ${err.message}.`); } ``` ## LocaleItem10+ Represents the list of languages or countries/regions sorted by **SystemLocaleManager**. **System API**: This is a system API. **System capability**: SystemCapability.Global.I18n | Name | Type | Mandatory | Description | | --------------- | --------------- | ------ | --------------------------------------- | | id | string | Yes | Language code or country/region code, for example, **zh** or **CN**. | | suggestionType | [SuggestionType](#suggestiontype10) | Yes | Language or country/region suggestion type. | | displayName | string | Yes | Displayed name of ID in the locale of **SystemLocaleManager**.| | localName | string | No | Local name of the ID. | ## TimeZoneCityItem10+ Represents the time zone and city combination information. **System API**: This is a system API. **System capability**: SystemCapability.Global.I18n | Name | Type | Mandatory | Description | | --------------- | --------------- | ------ | --------------------------------------- | | zoneId | string | Yes | Time zone ID, for example, **Asia/Shanghai**. | | cityId | string | Yes | City ID, for example, **Shanghai**. | | cityDisplayName | string | Yes | Displayed name of the city ID in the system locale. | | offset | int | Yes | Offset of the time zone ID. | | zoneDisplayName | string | Yes | Displayed name of the time zone ID in the system locale. | | rawOffset | int | No | Fixed offset of the time zone ID. | ## SuggestionType10+ Represents the language or country/region suggestion type. **System API**: This is a system API. **System capability**: SystemCapability.Global.I18n | Name | Value | Description | | ---------------------- | ---- | ---- | | SUGGESTION_TYPE_NONE | 0x00 | Not a recommended language or country/region.| | SUGGESTION_TYPE_RELATED| 0x01 | Country/region recommended by the system language or language recommended by the system country/region.| | SUGGESTION_TYPE_SIM | 0x02 | Language recommended by the country/region of the SIM card.| ## SortOptions10+ Represents the language or country/region sorting option. **System API**: This is a system API. **System capability**: SystemCapability.Global.I18n | Name | Type | Mandatory| Description | | --------------- | --------------- | ---- | --------------------------------------- | | locale | string | No | [Locale information](../../internationalization/i18n-locale-culture.md#how-it-works), which consists of the language, script, and country/region, for example, **zh-Hans-CN**.
The default value of **locale** is the system locale. | | isUseLocalName | boolean | No | Whether to use the local name for sorting.
If **getLanguageInfoArray** is called, the default value of **isUseLocalName** is **true**.
If **getRegionInfoArray** is called, the default value of **isUseLocalName** is **false**. | | isSuggestedFirst | boolean | No | Whether to move the recommended language or country/region to the top in the sorting result.
The default value of **isSuggestedFirst** is **true**. |