# @ohos.intl (Internationalization)
The **intl** module provides basic i18n capabilities, such as time and date formatting, number formatting, and string sorting, through the standard i18n APIs defined in ECMA 402.
The [i18n](js-apis-i18n.md) module provides enhanced i18n capabilities through supplementary interfaces that are not defined in ECMA 402. It works with the intl module to provide a complete suite of i18n capabilities.
> **NOTE**
>
> - The initial APIs of this module are supported since API version 6. Newly added APIs will be marked with a superscript to indicate their earliest API version.
>
> - The APIs of this module conform to the [Common Locale Data Repository (CLDR)](https://cldr.unicode.org) internationalization database. The processing result may change with CLDR evolution. API version 12 corresponds to [CLDR 42](https://cldr.unicode.org/index/downloads/cldr-42). For details about data changes, visit the official website.
>
> - Since API version 11, some APIs of this module are supported in ArkTS widgets.
>
> - Since API version 12, the APIs of this module are supported in atomic services.
## Modules to Import
```ts
import { intl } from '@kit.LocalizationKit';
```
## Locale
### Attributes
**Widget capability**: Since API version 11, this feature is supported in ArkTS widgets.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
| Name | Type | Mandatory | Description |
| --------------- | ------- | -------- | ---------------------------------------- |
| language | string | Yes | Language associated with the locale, for example, **zh**. The value complies with the ISO 639 standard.|
| script | string | Yes | Script type of the language, for example, **Hans**. The value complies with the Unicode ISO 15924 standard.|
| region | string | Yes | Country or region associated with the locale, for example, **CN**. The value complies with the ISO 3166 standard.|
| baseName | string | Yes | Basic information about the locale, which consists of the language, script, and region, for example, **zh-Hans-CN**. |
| caseFirst | string | Yes | Whether case is taken into account for the locale's collation rules. The value can be:
"upper", "lower", or "false".
For details about their meanings, see Table 1 in [Sorting by Local Habits ](../../internationalization/i18n-sorting-local.md).|
| calendar | string | Yes | Calendar for the locale. The value can be:
The value can be any of the following: **buddhist**, **chinese**, **coptic**, **dangi**, **ethioaa**, **ethiopic**, **gregory**, **hebrew**, **indian**, **islamic**, **islamic-umalqura**, **islamic-tbla**, **islamic-civil**, **islamic-rgsa**, **iso8601**, **japanese**, **persian**, **roc**, or **islamicc**.
For details about their meanings, see Table 1 in [Calendar Setting](../../internationalization/i18n-calendar.md).|
| collation | string | Yes | Collation rules for the locale. The value can be:
The value can be any of the following: **big5han**, **compat**, **dict**, **direct**, **ducet**, **eor**, **gb2312**, **phonebk**, **phonetic**, **pinyin**, **reformed**, **searchjl**, **stroke**, **trad**, **unihan**, or **zhuyin**.
For details about their meanings, see Table 1 in [Sorting by Local Habits ](../../internationalization/i18n-sorting-local.md).|
| hourCycle | string | Yes | Time system for the locale. The value can be:
"h11", "h12", "h23", or "h24".
For details about their display effects, see Table 5 in [Date and Time Formatting](../../internationalization/i18n-time-date.md).|
| numberingSystem | string | Yes | Numbering system for the locale. The value can be:
**adlm**, **ahom**, **arab**, **arabext**, **bali**, **beng**, **bhks**, **brah**, **cakm**, **cham**, **deva**, **diak**, **fullwide**, **gong**, **gonm**, **gujr**, **guru**, **hanidec**, **hmng**, **hmnp**, **java**, **kali**, **khmr**, **knda**, **lana**, **lanatham**, **laoo**, **latn**, **lepc**, **limb**, **mathbold**, **mathdbl**, **mathmono**, **mathsanb**, **mathsans**, **mlym**, **modi**, **mong**, **mroo**, **mtei**, **mymr**, **mymrshan**, **mymrtlng**, **newa**, **nkoo**, **olck**, **orya**, **osma**, **rohg**, **saur**, **segment**, **shrd**, **sind**, **sinh**, **sora**, **sund**, **takr**, **talu**, **tamldec**, **telu**, **thai**, **tibt**, **tirh**, **vaii**, **wara**, or **wcho**.|
| numeric | boolean | Yes | Wether to use special sorting rules for digits. The value **true** means to use special sorting rules for digits, and the value **false** means the opposite.
The default value is **false**. |
### constructor8+
constructor()
Creates a **Locale** object.
**Widget capability**: Since API version 11, this feature is supported in ArkTS widgets.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Example**
```ts
// When creating a **Locale** object, the default constructor uses the current locale of the system.
let locale = new intl.Locale();
// Return the current system locale.
let localeID = locale.toString();
```
### constructor
constructor(locale: string, options?: LocaleOptions)
Creates a **Locale** object.
**Widget capability**: Since API version 11, this feature is supported in ArkTS widgets.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Parameters**
| Name | Type | Mandatory | Description |
| -------------------- | -------------------------------- | ---- | ---------------------------- |
| locale | string | Yes | A string containing locale information, including the language, optional script, and region.
The locale can any or all of the preceding information.|
| options | [LocaleOptions](#localeoptions) | No | Options for creating the **Locale** object.|
**Example**
```ts
// Create a Locale object named zh-CN.
let locale = new intl.Locale("zh-CN");
let localeID = locale.toString(); // localeID = "zh-CN"
```
### toString
toString(): string
Obtains the string that represents a **Locale** object.
**Widget capability**: Since API version 11, this feature is supported in ArkTS widgets.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Return value**
| Type | Description |
| ------ | ----------- |
| string | String that represents the **Locale** object.|
**Example**
```ts
// Create a Locale object named en-GB.
let locale = new intl.Locale("en-GB");
let localeID = locale.toString(); // localeID = "en-GB"
```
### maximize
maximize(): Locale
Maximizes information of a **Locale** object. If the script and country/region information is missing, add the information.
**Widget capability**: Since API version 11, this feature is supported in ArkTS widgets.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Return value**
| Type | Description |
| ----------------- | ---------- |
| [Locale](#locale) | **Locale** object with the script and country/region information.|
**Example**
```ts
// Create a Locale object named zh.
let locale = new intl.Locale("zh");
// Complete the script and region of the Locale object.
let maximizedLocale = locale.maximize();
let localeID = maximizedLocale.toString(); // localeID = "zh-Hans-CN"
// Create a Locale object named en-US.
locale = new intl.Locale("en-US");
// Complete the script of the Locale object.
maximizedLocale = locale.maximize();
localeID = maximizedLocale.toString(); // localeID = "en-Latn-US"
```
### minimize
minimize(): Locale
Minimizes information of the **Locale** object. If the script and country/region information is present, delete the information.
**Widget capability**: Since API version 11, this feature is supported in ArkTS widgets.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Return value**
| Type | Description |
| ----------------- | ---------- |
| [Locale](#locale) | **Locale** object without the script or country/region information.|
**Example**
```ts
// Create a Locale object named zh-Hans-CN.
let locale = new intl.Locale("zh-Hans-CN");
// Remove the script and region of the Locale object.
let minimizedLocale = locale.minimize();
let localeID = minimizedLocale.toString(); // localeID = "zh"
// Create a Locale object named en-US.
locale = new intl.Locale("en-US");
// Remove the region of the Locale object.
minimizedLocale = locale.minimize();
localeID = minimizedLocale.toString(); // localeID = "en"
```
## LocaleOptions
Options for initializing the **Locale** object. Since API version 9, the **LocaleOptions** attribute is changed from mandatory to optional.
**Widget capability**: Since API version 11, this feature is supported in ArkTS widgets.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
| Name | Type | Mandatory | Description |
| --------------- | ------- | ---- |---------------------------------------- |
| calendar | string | No |Calendar parameter. The value can be:
"buddhist", "chinese", "coptic", "dangi", "ethioaa", "ethiopic", "gregory", "hebrew", "indian", "islamic", "islamic-umalqura", "islamic-tbla", "islamic-civil", "islamic-rgsa", "iso8601", "japanese", "persian", "roc", or "islamicc".|
| collation | string | No |Collation parameter. The value can be:
"big5han", "compat", "dict", "direct", "ducet", "emoji", "eor", "gb2312", "phonebk", "phonetic", "pinyin", "reformed **search**, **searchjl**, **standard**, **stroke**, **trad**, **unihan**, **zhuyin**.|
| hourCycle | string | No |Hour cycle. The value can be:
"h11", "h12", "h23", or "h24".|
| numberingSystem | string | No |Numbering system. The value can be:
**adlm**, **ahom**, **arab**, **arabext**, **bali**, **beng**, **bhks**, **brah**, **cakm**, **cham**, **deva**, **diak**, **fullwide**, **gong**, **gonm**, **gujr**, **guru**, **hanidec**, **hmng**, **hmnp**, **java**, **kali**, **khmr**, **knda**, **lana**, **lanatham**, **laoo**, **latn**, **lepc**, **limb**, **mathbold**, **mathdbl**, **mathmono**, **mathsanb**, **mathsans**, **mlym**, **modi**, **mong**, **mroo**, **mtei**, **mymr**, **mymrshan**, **mymrtlng**, **newa**, **nkoo**, **olck**, **orya**, **osma**, **rohg**, **saur**, **segment**, **shrd**, **sind**, **sinh**, **sora**, **sund**, **takr**, **talu**, **tamldec**, **telu**, **thai**, **tibt**, **tirh**, **vaii**, **wara**, or **wcho**.|
| numeric | boolean | No | Wether to use special sorting rules for digits. The value **true** means to use special sorting rules for digits, and the value **false** means the opposite. The default value is **false**. |
| caseFirst | string | No | Whether upper case or lower case is sorted first. The value can be:
"upper", "lower", or "false".|
> **NOTE**
>
> - For details about **calendar**, see Table 1 in [Calendar Setting](../../internationalization/i18n-calendar.md).
>
> - For details about **hourCycle**, see Table 5 in [Date and Time Formatting](../../internationalization/i18n-time-date.md).
>
> - For details about **caseFirst** and **collation**, see Table 1 in [Sorting by Local Habits ](../../internationalization/i18n-sorting-local.md).
## DateTimeFormat
### constructor8+
constructor()
Creates a **DateTimeOptions** object for the specified locale.
**Widget capability**: Since API version 11, this feature is supported in ArkTS widgets.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Example**
```ts
// Use the current system locale to create a DateTimeFormat object.
let datefmt= new intl.DateTimeFormat();
```
### constructor
constructor(locale: string | Array<string>, options?: DateTimeOptions)
Creates a **DateTimeOptions** object for the specified locale.
**Widget capability**: Since API version 11, this feature is supported in ArkTS widgets.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Parameters**
| Name | Type | Mandatory | Description |
| -------------------- | ------------------------------------ | ---- | ---------------------------- |
| locale | string \| Array<string> | Yes | A string containing locale information, including the language, optional script, and region.
The locale can any or all of the preceding information.|
| options | [DateTimeOptions](#datetimeoptions) | No | Options for creating the **DateTimeOptions** object.
If no options are set, the default values of **year**, **month**, and **day** are **numeric**.|
**Example**
```ts
// Use locale zh-CN to create a DateTimeFormat object. Set dateStyle to full and timeStyle to medium.
let datefmt= new intl.DateTimeFormat("zh-CN", { dateStyle: 'full', timeStyle: 'medium' });
// Use the locale list ["ban**, **zh"] to create a DateTimeFormat object. Because ban is an invalid locale ID, locale zh is used to create the DateTimeFormat object.
let datefmt= new intl.DateTimeFormat(["ban", "zh"], { dateStyle: 'full', timeStyle: 'medium' });
```
### format
format(date: Date): string
Formats the date and time.
**Widget capability**: Since API version 11, this feature is supported in ArkTS widgets.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Parameters**
| Name | Type | Mandatory | Description |
| ---- | ---- | ---- | ------- |
| date | Date | Yes | Date and time. Note: The month starts from **0**. For example, **0** indicates January.|
**Return value**
| Type | Description |
| ------ | ------------ |
| string | A string containing the formatted date and time.|
**Example**
```ts
let date = new Date (2021, 11, 17, 3, 24, 0); // The date and time is 2021.12.17 03:24:00.
// Use locale en-GB to create a DateTimeFormat object.
let datefmt = new intl.DateTimeFormat("en-GB");
let formattedDate = datefmt.format(date); // formattedDate "17/12/2021"
// Use locale en-GB to create a DateTimeFormat object. Set dateStyle to full and timeStyle to medium.
datefmt = new intl.DateTimeFormat("en-GB", { dateStyle: 'full', timeStyle: 'medium' });
formattedDate = datefmt.format(date); // formattedDate "Friday, 17 December 2021 at 03:24:00"
```
### formatRange
formatRange(startDate: Date, endDate: Date): string
Formats date and time ranges.
**Widget capability**: Since API version 11, this feature is supported in ArkTS widgets.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Parameters**
| Name | Type | Mandatory | Description |
| --------- | ---- | ---- | -------- |
| startDate | Date | Yes | Start date and time. Note: The month starts from **0**. For example, **0** indicates January.|
| endDate | Date | Yes | End date and time. Note: The month starts from **0**. For example, **0** indicates January.|
**Return value**
| Type | Description |
| ------ | -------------- |
| string | A string containing the formatted date and time ranges.|
**Example**
```ts
let startDate = new Date(2021, 11, 17, 3, 24, 0); // The date and time is 2021.12.17 03:24:00.
let endDate = new Date(2021, 11, 18, 3, 24, 0);
// Use locale en-GB to create a DateTimeFormat object.
let datefmt = new intl.DateTimeFormat("en-GB");
let formattedDateRange = datefmt.formatRange(startDate, endDate); // formattedDateRange = "17/12/2021 - 18/12/2021"
```
### resolvedOptions
resolvedOptions(): DateTimeOptions
Obtains the options for creating a **DateTimeOptions** object.
**Widget capability**: Since API version 11, this feature is supported in ArkTS widgets.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Return value**
| Type | Description |
| ------------------------------------ | ----------------------------- |
| [DateTimeOptions](#datetimeoptions) | Options for the **DateTimeOptions** object.|
**Example**
```ts
let datefmt = new intl.DateTimeFormat("en-GB", { dateStyle: 'full', timeStyle: 'medium' });
// Obtain the options of the DateTimeFormat object.
let options = datefmt.resolvedOptions();
let dateStyle = options.dateStyle; // dateStyle = "full"
let timeStyle = options.timeStyle; // timeStyle = "medium"
```
## DateTimeOptions
Defines the options for a **DateTimeOptions** object. Since API version 9, the **DateTimeOptions** attribute is changed from mandatory to optional.
**Widget capability**: Since API version 11, this feature is supported in ArkTS widgets.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
| Name | Type | Mandatory | Description |
| --------------- | ------- | ---- | ---------------------------------------- |
| locale | string | No |Locale, for example, **zh-Hans-CN**. |
| dateStyle | string | No |Date display format. The value can be:
"long", "short", "medium", "full", or "auto".
For details about their display effects, see Table 1 in [Date and Time Formatting](../../internationalization/i18n-time-date.md).|
| timeStyle | string | No |Time display format. The value can be:
"long", "short", "medium", "full", or "auto".
For details about their display effects, see Table 2 in [Date and Time Formatting](../../internationalization/i18n-time-date.md).|
| hourCycle | string | No |Hour cycle. The value can be:
"h11", "h12", "h23", or "h24".
For details about the display effect when **dateStyle** or **timeStyle** is not set, see Table 5 in [Date and Time Formatting](../../internationalization/i18n-time-date.md).
For details about the display effect when **dateStyle** or **timeStyle** is set, see Table 6 in [Date and Time Formatting](../../internationalization/i18n-time-date.md).|
| timeZone | string | No |Time zone in use. The value is a valid IANA time zone ID. |
| numberingSystem | string | No |Numbering system. The value can be:
**adlm**, **ahom**, **arab**, **arabext**, **bali**, **beng**, **bhks**, **brah**, **cakm**, **cham**, **deva**, **diak**, **fullwide**, **gong**, **gonm**, **gujr**, **guru**, **hanidec**, **hmng**, **hmnp**, **java**, **kali**, **khmr**, **knda**, **lana**, **lanatham**, **laoo**, **latn**, **lepc**, **limb**, **mathbold**, **mathdbl**, **mathmono**, **mathsanb**, **mathsans**, **mlym**, **modi**, **mong**, **mroo**, **mtei**, **mymr**, **mymrshan**, **mymrtlng**, **newa**, **nkoo**, **olck**, **orya**, **osma**, **rohg**, **saur**, **segment**, **shrd**, **sind**, **sinh**, **sora**, **sund**, **takr**, **talu**, **tamldec**, **telu**, **thai**, **tibt**, **tirh**, **vaii**, **wara**, or **wcho**.|
| hour12 | boolean | No | Whether to use the 12-hour clock. The value **true** means to use the 12-hour clock, and the value **false** means the opposite.
If both **hour12** and **hourCycle** are set, **hourCycle** does not take effect.
If **hour12** and **hourCycle** are not set and the 24-hour clock is turned on, the default value of **hour12** is **false**.|
| weekday | string | No | Week display format. The value can be:
"long", "short", "narrow", or "auto".
For details about their display effects, see Table 4 in [Date and Time Formatting](../../internationalization/i18n-time-date.md).|
| era | string | No | Epoch display format. The value can be:
"long", "short", "narrow", or "auto".
For details about their display effects, see Table 9 in [Date and Time Formatting](../../internationalization/i18n-time-date.md).|
| year | string | No | Year display format. The value can be:
"numeric" or "2-digit".
For details about their display effects, see Table 3 in [Date and Time Formatting](../../internationalization/i18n-time-date.md). |
| month | string | No | Month display format. The value can be:
"numeric", "2-digit", "long", "short", "narrow", or "auto".
For details about their display effects, see Table 6 in [Date and Time Formatting](../../internationalization/i18n-time-date.md).|
| day | string | No | Day display format. The value can be:
"numeric" or "2-digit". |
| hour | string | No | Hour display format. The value can be:
"numeric" or "2-digit". |
| minute | string | No | Minute display format. The value can be:
"numeric" or "2-digit". |
| second | string | No | Second display format. The value can be:
"numeric" or "2-digit". |
| timeZoneName | string | No | Localized representation of a time zone name. The value can be:
"long", "short", or "auto".
For details about their display effects, see Table 8 in [Date and Time Formatting](../../internationalization/i18n-time-date.md). |
| dayPeriod | string | No | Time period display format. The value can be:
"long", "short", "narrow", or "auto".
For details about their display effects, see Table 10 in [Date and Time Formatting](../../internationalization/i18n-time-date.md).|
| localeMatcher | string | No | Locale matching algorithm. The value can be:
- "lookup": exact match.
- "best fit": best match.|
| formatMatcher | string | No | Format matching algorithm. The value can be:
- "basic": exact match.
- "best fit": best match.|
## NumberFormat
### constructor8+
constructor()
Creates a **NumberFormat** object for the specified locale.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Example**
```ts
// Use the current system locale to create a NumberFormat object.
let numfmt = new intl.NumberFormat();
```
### constructor
constructor(locale: string | Array<string>, options?: NumberOptions)
Creates a **NumberFormat** object for the specified locale.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Parameters**
| Name | Type | Mandatory | Description |
| -------------------- | -------------------------------- | ---- | ---------------------------- |
| locale | string \| Array<string> | Yes | A string containing locale information, including the language, optional script, and region.|
| options | [NumberOptions](#numberoptions) | No | Options for creating the **NumberFormat** object. |
**Example**
```ts
// Use locale en-GB to create a NumberFormat object. Set style to decimal and notation to scientific.
let numfmt = new intl.NumberFormat("en-GB", {style:'decimal', notation:"scientific"});
```
### format
format(number: number): string
Formats a number.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Parameters**
| Name | Type | Mandatory | Description |
| ------ | ------ | ---- | ---- |
| number | number | Yes | Number to be formatted.|
**Return value**
| Type | Description |
| ------ | ---------- |
| string | Formatted number.|
**Example**
```ts
// Use locale list ["en-GB**, **zh"] to create a NumberFormat object. Because en-GB is a valid locale ID, it is used to create the NumberFormat object.
let numfmt : intl.NumberFormat = new intl.NumberFormat(["en-GB", "zh"], {style:'decimal', notation:"scientific"});
let formattedNumber : string = numfmt.format(1223); // formattedNumber = 1.223E3
let options : intl.NumberOptions = {
roundingPriority: "lessPrecision",
maximumFractionDigits: 3,
maximumSignificantDigits: 3
}
let numberFmt : intl.NumberFormat = new intl.NumberFormat("en", options);
let result : string = numberFmt.format(1.23456); // result = 1.23
```
### formatRange18+
formatRange(startRange: number, endRange: number): string
Formats number ranges.
**Atomic service API**: This API can be used in atomic services since API version 18.
**System capability**: SystemCapability.Global.I18n
**Parameters**
| Name | Type | Mandatory | Description |
| ------ | ------ | ---- | ---- |
| startRange | number | Yes | Start number.|
| endRange | number | Yes | End number.|
**Return value**
| Type | Description |
| ------ | ---------- |
| string | Formatted number range.|
**Example**
```ts
let numfmt : intl.NumberFormat = new intl.NumberFormat("en-US", {style:'unit', unit:"meter"});
let formattedRange : string = numfmt.formatRange(0, 3); // formattedRange: 0–3 m
```
### resolvedOptions
resolvedOptions(): NumberOptions
Obtains the options for creating a **NumberFormat** object.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Return value**
| Type | Description |
| -------------------------------- | --------------------------- |
| [NumberOptions](#numberoptions) | Options for creating the **NumberFormat** object.|
**Example**
```ts
let numfmt = new intl.NumberFormat(["en-GB", "zh"], {style:'decimal', notation:"scientific"});
// Obtain the options of the NumberFormat object.
let options = numfmt.resolvedOptions();
let style = options.style; // style = decimal
let notation = options.notation; // notation = scientific
```
## NumberOptions
Options for creating the **NumberFormat** object. Since API version 9, the **NumberOptions** attribute is changed from mandatory to optional.
**System capability**: SystemCapability.Global.I18n
| Name | Type | Mandatory | Description |
| ------------------------ | ------- | ---- | ---------------------------------------- |
| locale | string | No | Locale, for example, **zh-Hans-CN**.
The default value of **locale** is the system locale.
**Atomic service API**: This API can be used in atomic services since API version 12. |
| currency | string | No | Currency unit. The value must comply with the [ISO-4217 standard](https://www.iso.org/iso-4217-currency-codes.html), for example, EUR, CNY, and USD.
From API version 12, a three-digit number is supported, for example, **978**, **156**, or **840**.
**Atomic service API**: This API can be used in atomic services since API version 12. |
| currencySign | string | No | Currency unit symbol. The value can be **standard** or **accounting**.
The default value is **standard**.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| currencyDisplay | string | No | Currency display mode. The value can be **symbol**, **narrowSymbol**, **code**, or **name**.
The default value is **symbol**.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| unit | string | No | Unit name, for example, **meter**, **inch**, or **hectare**.
The combination units supported since API version 18 are as follows: beat-per-minute, body-weight-per-second, breath-per-minute, foot-per-hour, jump-rope-per-minute, meter-per-hour, milliliter-per-minute-per-kilogram, rotation-per-minute, step-per-minute, and stroke-per-minute.
**Atomic service API**: This API can be used in atomic services since API version 12. |
| unitDisplay | string | No | Display format of units. The value can be **long**, **short**, or **narrow**.
The default value is **short**.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| unitUsage8+ | string | No | Application scenario of units. The value can be any of the following: "default**, **area-land-agricult**, **area-land-commercl**, **area-land-residntl**, **length-person**, **length-person-small**, **length-rainfall**, **length-road**, **length-road-small**, **length-snowfall**, **length-vehicle**, **length-visiblty**, **length-visiblty-small**, **length-person-informal**, **length-person-small-informal**, **length-road-informal**, **speed-road-travel**, **speed-wind**, **temperature-person**, **temperature-weather**, **volume-vehicle-fuel**, **elapsed-time-second**, **size-file-byte**, or **size-shortfile-byte**.
The default value is **default**.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| signDisplay | string | No | Number sign display format. The value can be:
- "auto": automatically determines whether to display the plus or minus sign.
- "never": do not display the plus or minus sign.
- "always": always displays the plus or minus sign.
- "exceptZero": displays the plus or minus sign for all values except 0.
The default value is **auto**.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| compactDisplay | string | No | Compact display format. The value can be **long** or **short**.
The default value is **short**.
**Atomic service API**: This API can be used in atomic services since API version 12. |
| notation | string | No | Number formatting specification. The value can be **standard**, **scientific**, **engineering**, or **compact**.
The default value is **standard**.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| localeMatcher | string | No | Locale matching algorithm. The value can be **lookup** or **best fit**.
The default value is **best fit**.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| style | string | No | Number display format. The value can be **decimal**, **currency**, **percent**, or **unit**.
The default value is **decimal**.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| numberingSystem | string | No | Numbering system. The value can be:
The value can be any of the following: **adlm**, **ahom**, **arab**, **arabext**, **bali**, **beng**, **bhks**, **brah**, **cakm**, **cham**, **deva**, **diak**, **fullwide**, **gong**, **gonm**, **gujr**, **guru**, **hanidec**, **hmng**, **hmnp**, **java**, **kali**, **khmr**, **knda**, **lana**, **lanatham**, **laoo**, **latn**, **lepc**, **limb**, **mathbold**, **mathdbl**, **mathmono**, **mathsanb**, **mathsans**, **mlym**, **modi**, **mong**, **mroo**, **mtei**, **mymr**, **mymrshan**, **mymrtlng**, **newa**, **nkoo**, **olck**, **orya**, **osma**, **rohg**, **saur**, **segment**, **shrd**, **sind**, **sinh**, **sora**, **sund**, **takr**, **talu**, **tamldec**, **telu**, **thai**, **tibt**, **tirh**, **vaii**, **wara**, or **wcho**. The default value is the default numbering system of the specified locale.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| useGrouping | boolean | No | Whether to enable grouping for display. The value **true** means to enable grouping for display, and the value **false** means the opposite. The default value is **auto**.
**Atomic service API**: This API can be used in atomic services since API version 12. |
| minimumIntegerDigits | number | No | Minimum number of digits allowed in the integer part of a number. The value ranges from **1** to **21**.
The default value is **1**.
**Atomic service API**: This API can be used in atomic services since API version 12. |
| minimumFractionDigits | number | No | Minimum number of digits in the fraction part of a number. The value ranges from **0** to **20**.
The default value is **0**.
**Atomic service API**: This API can be used in atomic services since API version 12. |
| maximumFractionDigits | number | No | Maximum number of digits in the fraction part of a number. The value ranges from **1** to **21**.
The default value is **3**.
**Atomic service API**: This API can be used in atomic services since API version 12. |
| minimumSignificantDigits | number | No | Minimum number of the least significant digits. The value ranges from **1** to **21**.
The default value is **1**.
**Atomic service API**: This API can be used in atomic services since API version 12. |
| maximumSignificantDigits | number | No | Maximum number of the least significant digits. The value ranges from **1** to **21**.
The default value is **21**.
**Atomic service API**: This API can be used in atomic services since API version 12. |
| roundingPriority18+ | string | No | Rounding priority used when both the maximum number of fraction digits and the maximum number of valid digits are set. The value can be **auto**, **morePrecision**, or **lessPrecision**. The value **morePrecision** indicates that the maximum number of fraction digits is used. The value **lessPrecision** indicates that the maximum number of valid digits is used.
The default value is **auto**.
**Atomic service API**: This API can be used in atomic services since API version 18. |
| roundingIncrement18+ | number | No | Rounding increment. The value can be **1**, **2**, **5**, **10**, **20**, **25**, **50**, **100**, **200**, **250**, **500**, **1000**, **2000**, **2500**, or **5000**.
The default value is **1**.
**Atomic service API**: This API can be used in atomic services since API version 18. |
| roundingMode18+ | string | No | Rounding mode. The value can be:
- "ceil": rounding up.
- "floor": rounding down.
- "expand": rounding away from 0.
- "trunc": rounding toward 0.
- "halfCeil": half-rounding up; that is, rounding up when the decimal number is greater than or equal to half of the increment, and rounding down otherwise.
- "halfFloor": half-rounding down; that is, rounding up when the decimal number is greater than half of the increment, and rounding down otherwise.
- "halfExpand": half-rounding away from 0; that is, rounding away from 0 when the decimal number is greater than or equal to half of the increment, and rounding toward 0 otherwise.
- "halfTrunc": half-rounding toward 0; that is, rounding away from 0 when the decimal number is greater than half of the increment, and rounding toward 0 otherwise.
- "halfEven": half-rounding to the nearest even number; that is, rounding away from 0 when the decimal number is greater than half of the increment, rounding toward 0 when the decimal number is less than half of the increment, and rounding to the nearest even number when the decimal number is exactly half of the increment.
The default value is **halfExpand**.
**Atomic service API**: This API can be used in atomic services since API version 18.|
> **NOTE**
>
> - For details about the meaning or display effect of different values, see [Number and Unit of Measurement Formatting](../../internationalization/i18n-numbers-weights-measures.md).
## Collator8+
### constructor8+
constructor()
Creates a **Collator** object.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Example**
```ts
// Use the system locale to create a Collator object.
let collator = new intl.Collator();
```
### constructor8+
constructor(locale: string | Array<string>, options?: CollatorOptions)
Creates a **Collator** object.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Parameters**
| Name | Type | Mandatory | Description |
| -------------------- | ------------------------------------ | ---- | ---------------------------- |
| locale | string \| Array<string> | Yes | A string containing locale information, including the language, optional script, and region. |
| options | [CollatorOptions](#collatoroptions8) | No | Options for creating a **Collator** object. |
**Example**
```ts
// Use locale zh-CN to create a Collator object. Set localeMatcher to lookup and usage to sort.
let collator = new intl.Collator("zh-CN", {localeMatcher: "lookup", usage: "sort"});
```
### compare8+
compare(first: string, second: string): number
Compares two strings based on the specified collation rules.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Parameters**
| Name | Type | Mandatory | Description |
| ------ | ------ | ---- | ------------ |
| first | string | Yes | First string to compare. |
| second | string | Yes | Second string to compare.|
**Return value**
| Type | Description |
| ------ | ---------------------------------------- |
| number | Comparison result.
- If the value is a negative number, the first string comes before the second string.
- If the value is **0**, the first and second strings are in the same sequence.
- If the value is a positive number, the first string is comes after the second string.|
**Example**
```ts
// Use locale en-GB to create a Collator object.
let collator = new intl.Collator("en-GB");
// Compare the sequence of the first and second strings.
let compareResult = collator.compare("first", "second"); // compareResult = -1
```
### resolvedOptions8+
resolvedOptions(): CollatorOptions
Obtains the options for creating a **Collator** object.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Return value**
| Type | Description |
| ------------------------------------ | ----------------- |
| [CollatorOptions](#collatoroptions8) | Options for creating a **Collator** object.|
**Example**
```ts
let collator = new intl.Collator("zh-Hans", { usage: 'sort', ignorePunctuation: true });
// Obtain the options of the Collator object.
let options = collator.resolvedOptions();
let usage = options.usage; // usage = "sort"
let ignorePunctuation = options.ignorePunctuation; // ignorePunctuation = true
```
## CollatorOptions8+
Defines the options for creating a **Collator** object.
Since API version 9, the attributes in **CollatorOptions** are optional.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
| Name | Type | Mandatory | Description |
| ----------------- | ------- | ---- | ---------------------------------------- |
| localeMatcher | string | No | Locale matching algorithm. The value can be **lookup** or **best fit**.
The default value is **best fit**.|
| usage | string | No | Whether the comparison is for sorting or for searching. The value can be **sort** or **search**.
The default value is **sort**. |
| sensitivity | string | No | Differences in the strings that lead to non-zero return values. The value can be **base**, **accent**, **case**, or **letiant**.
The default value is **variant**.|
| ignorePunctuation | boolean | No | Whether to ignore punctuation. The value **true** means to ignore punctuation, and the value **false** means the opposite.
The default value is **false**. |
| collation | string | No | Collation rule.
The value can be any of the following: **big5han**, **compat**, **dict**, **direct**, **ducet**, **eor**, **gb2312**, **phonebk**, **phonetic**, **pinyin**, **reformed**, **searchjl**, **stroke**, **trad**, **unihan**, or **zhuyin**.
The default value is **default**.|
| numeric | boolean | No | Whether to use numeric collation. The value **true** means to use numeric collation, and the value **false** means the opposite.
The default value is **false**. |
| caseFirst | string | No | Whether upper case or lower case is sorted first. The value can be **upper**, **lower**, or **false**.
The default value is **false**.|
> **NOTE**
>
> - For details about the meanings of different field values, see [Sorting by Local Habits](../../internationalization/i18n-sorting-local.md).
## PluralRules8+
### constructor8+
constructor()
Creates a **PluralRules** object to obtain the singular-plural type of numbers.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Example**
```ts
// Use the system locale to create a PluralRules object.
let pluralRules = new intl.PluralRules();
```
### constructor8+
constructor(locale: string | Array<string>, options?: PluralRulesOptions)
Creates a **PluralRules** object to obtain the singular-plural type of numbers.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Parameters**
| Name | Type | Mandatory | Description |
| -------------------- | ---------------------------------------- | ---- | ---------------------------- |
| locale | string \| Array<string> | Yes | A string containing locale information, including the language, optional script, and region.|
| options | [PluralRulesOptions](#pluralrulesoptions8) | No | Options for creating a **PluralRules** object. |
**Example**
```ts
// Use locale zh-CN to create a PluralRules object. Set localeMatcher to lookup and type to cardinal.
let pluralRules= new intl.PluralRules("zh-CN", {"localeMatcher": "lookup", "type": "cardinal"});
```
### select8+
select(n: number): string
Obtains a string that represents the singular-plural type of the specified number.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Parameters**
| Name | Type | Mandatory | Description |
| ---- | ------ | ---- | ------------ |
| n | number | Yes | Number for which the singular-plural type is to be obtained.|
**Return value**
| Type | Description |
| ------ | ---------------------------------------- |
| string | Singular-plural type. The value can be any of the following: **zero**, **one**, **two**, **few**, **many**, **others**.
For details about the meanings of different values, see [Language Plural Rules](https://www.unicode.org/cldr/charts/45/supplemental/language_plural_rules.html).|
**Example**
```ts
// Use locale zh-Hans to create a PluralRules object.
let zhPluralRules = new intl.PluralRules("zh-Hans");
// Determine the singular-plural type corresponding to number 1 in locale zh-Hans.
let plural = zhPluralRules.select(1); // plural = other
// Use locale en-US to create a PluralRules object.
let enPluralRules = new intl.PluralRules("en-US");
// Determine the singular-plural type corresponding to number 1 in locale en-US.
plural = enPluralRules.select(1); // plural = one
```
## PluralRulesOptions8+
Defines the options for creating a **PluralRules** object. Since API version 9, the **PluralRulesOptions** attribute is changed from mandatory to optional.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
| Name | Type | Readable | Writable | Description |
| ------------------------ | ------ | ---- | ---- | ---------------------------------------- |
| localeMatcher | string | Yes | Yes | Locale matching algorithm. The value can be **lookup** or **best fit**.
The default value is **best fit**.|
| type | string | Yes | Yes | Collation type. The value can be **cardinal** or **ordinal**.
The default value is **cardinal**.
The value **cardinal** indicates a cardinal number and the value **ordinal** indicates an ordinal number. |
| minimumIntegerDigits | number | Yes | Yes | Minimum number of digits allowed in the integer part of a number. The value ranges from **1** to **21**.
The default value is **1**. |
| minimumFractionDigits | number | Yes | Yes | Minimum number of digits in the fraction part of a number. The value ranges from **0** to **20**.
The default value is **0**. |
| maximumFractionDigits | number | Yes | Yes | Maximum number of digits in the fraction part of a number. The value ranges from **1** to **21**.
The default value is **3**. |
| minimumSignificantDigits | number | Yes | Yes | Minimum number of the least significant digits. The value ranges from **1** to **21**.
The default value is **1**. |
| maximumSignificantDigits | number | Yes | Yes | Maximum number of the least significant digits. The value ranges from **1** to **21**.
The default value is **21**. |
## RelativeTimeFormat8+
### constructor8+
constructor()
Creates a **RelativeTimeFormat** object.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Example**
```ts
// Use the system locale to create a RelativeTimeFormat object.
let relativetimefmt = new intl.RelativeTimeFormat();
```
### constructor8+
constructor(locale: string | Array<string>, options?: RelativeTimeFormatInputOptions)
Creates a **RelativeTimeFormat** object.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Parameters**
| Name | Type | Mandatory | Description |
| -------------------- | ---------------------------------------- | ---- | ---------------------------- |
| locale | string \| Array<string> | Yes | A string containing locale information, including the language, optional script, and region.|
| options | [RelativeTimeFormatInputOptions](#relativetimeformatinputoptions8) | No | Options for creating a **RelativeTimeFormat** object. |
**Example**
```ts
// Use locale zh-CN to create a RelativeTimeFormat object. Set localeMatcher to lookup, numeric to always, and style to long.
let relativeTimeFormat = new intl.RelativeTimeFormat("zh-CN", {"localeMatcher": "lookup", "numeric": "always", "style": "long"});
```
### format8+
format(value: number, unit: string): string
Formats the value and unit based on the specified locale and formatting options.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Parameters**
| Name | Type | Mandatory | Description |
| ----- | ------ | ---- | ---------------------------------------- |
| value | number | Yes | Value to format. |
| unit | string | Yes | Unit of the relative time.
The value can be any of the following: **year**, **quarter**, month**, **week**, **day**, **hour**, **minute**, or **second**.|
**Return value**
| Type | Description |
| ------ | ---------- |
| string | Relative time after formatting.|
**Example**
```ts
// Use locale zh-CN to create a RelativeTimeFormat object.
let relativetimefmt = new intl.RelativeTimeFormat("zh-CN");
// Obtain the localized representation (in unit of quarter) of number 3 in locale zh-CN.
let formatResult = relativetimefmt.format(3, "quarter"); // formatResult = "3 quarters later"
```
### formatToParts8+
formatToParts(value: number, unit: string): Array<object>
Custom relative time for the specified locale.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Parameters**
| Name | Type | Mandatory | Description |
| ----- | ------ | ---- | ---------------------------------------- |
| value | number | Yes | Value to format. |
| unit | string | Yes | Unit of the relative time.
The value can be any of the following: **year**, **quarter**, month**, **week**, **day**, **hour**, **minute**, or **second**.|
**Return value**
| Type | Description |
| ------------------- | --------------------------- |
| Array<object> | Object array of the relative time format.|
**Example**
```ts
// Use locale en to create a RelativeTimeFormat object. Set numeric to auto.
let relativetimefmt = new intl.RelativeTimeFormat("en", {"numeric": "auto"});
let parts = relativetimefmt.formatToParts(10, "seconds"); // parts = [ {type: "literal", value: "in"}, {type: "integer", value: 10, unit: "second"}, {type: "literal", value: "seconds"} ]
```
### resolvedOptions8+
resolvedOptions(): RelativeTimeFormatResolvedOptions
Obtains the formatting options for **RelativeTimeFormat** objects.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
**Return value**
| Type | Description |
| ---------------------------------------- | --------------------------------- |
| [RelativeTimeFormatResolvedOptions](#relativetimeformatresolvedoptions8) | Formatting options for **RelativeTimeFormat** objects.|
**Example**
```ts
// Use locale en-GB to create a RelativeTimeFormat object.
let relativetimefmt= new intl.RelativeTimeFormat("en-GB", { style: "short" });
// Obtain the options of the RelativeTimeFormat object.
let options = relativetimefmt.resolvedOptions();
let style = options.style; // style = "short"
```
## RelativeTimeFormatInputOptions8+
Defines the options for creating a **RelativeTimeFormat** object.
Since API version 9, the attributes in **RelativeTimeFormatInputOptions** are optional.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
| Name | Type | Mandatory |Description |
| ------------- | ------ | ---- | ---------------------------------------- |
| localeMatcher | string | No | Locale matching algorithm. The value can be **lookup** or **best fit**.
The default value is **best fit**.|
| numeric | string | No | Format of the output message. The value can be **always** or **auto**.
The default value is **always**. |
| style | string | No | Length of an internationalized message. The value can be **long**, **short**, or **narrow**.
The default value is **long**.|
> **NOTE**
>
> For details about the display effects of **numeric** and **style**, see [Date and Time Formatting](../../internationalization/i18n-time-date.md#relative-time-formatting).
## RelativeTimeFormatResolvedOptions8+
Represents the properties of a **RelativeTimeFormat** object.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Global.I18n
| Name | Type | Mandatory |Description |
| --------------- | ------ | ---- | ---------------------------------------- |
| locale | string | Yes | A string containing locale information, including the language, optional script, and region. |
| numeric | string | Yes | Format of the output message. The value can be **always** or **auto**. |
| style | string | Yes | Length of an internationalized message. The value can be **long**, **short**, or **narrow**.|
| numberingSystem | string | Yes | Numbering system. The value can be:
**adlm**, **ahom**, **arab**, **arabext**, **bali**, **beng**, **bhks**, **brah**, **cakm**, **cham**, **deva**, **diak**, **fullwide**, **gong**, **gonm**, **gujr**, **guru**, **hanidec**, **hmng**, **hmnp**, **java**, **kali**, **khmr**, **knda**, **lana**, **lanatham**, **laoo**, **latn**, **lepc**, **limb**, **mathbold**, **mathdbl**, **mathmono**, **mathsanb**, **mathsans**, **mlym**, **modi**, **mong**, **mroo**, **mtei**, **mymr**, **mymrshan**, **mymrtlng**, **newa**, **nkoo**, **olck**, **orya**, **osma**, **rohg**, **saur**, **segment**, **shrd**, **sind**, **sinh**, **sora**, **sund**, **takr**, **talu**, **tamldec**, **telu**, **thai**, **tibt**, **tirh**, **vaii**, **wara**, or **wcho**.|
> **NOTE**
>
> For details about the display effects of **numeric** and **style**, see [Date and Time Formatting](../../internationalization/i18n-time-date.md#relative-time-formatting).