# @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**. |
| script | string | Yes | Script type of the language, for example, **Hans**. |
| region | string | Yes | Country or region associated with the locale, for example, **CN**. |
| 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**.|
| calendar | string | Yes | Calendar for the locale.
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**.|
| collation | string | Yes | Collation rules for the locale.
The value can be any of the following: The value can be any of the following: **big5han**, **compat**, **dict**, **direct**, **ducet**, **eor**, **gb2312**, **phonebk**, **phonetic**, **pinyin**, **reformed**, **searchjl**, **stroke**, **trad**, **unihan**, **zhuyin**.|
| hourCycle | string | Yes | Time system for the locale.
The value can be **h12**, **h23**, **h11**, **h24**.|
| numberingSystem | string | Yes | Numbering system for the locale.
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**, **wcho**.|
| numeric | boolean | Yes | Whether to apply special collation rules for numeric characters.
The default value is **false**. |
> **NOTE**
>
> - For details about **caseFirst** and **collation**, see Table 1 in [Sorting by Local Habits ](../../internationalization/i18n-sorting-local.md).
>
> - 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).
### 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 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**.|
| collation | string | No |Collation parameter.
The value can be any of the followings: **big5han**, **compat**, **dict**, **direct**, **ducet**, **emoji**, **eor**, **gb2312**, **phonebk**, **phonetic**, **pinyin**, or **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 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**, **wcho**.|
| numeric | boolean | No | Whether to apply special collation rules for numeric characters. 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 to be formatted.|
**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);
// 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.|
| endDate | Date | Yes | End date and time.|
**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);
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 format.
The value can be **long**, **short**, **medium**, **full**, or **auto**.|
| timeStyle | string | No |Time format.
The value can be **long**, **short**, **medium**, **full**, or **auto**.|
| hourCycle | string | No |Hour cycle.
The value can be **h11**, **h12**, **h23**, or **h24**.|
| timeZone | string | No |Time zone represented by a valid IANA time zone ID. |
| numberingSystem | string | No |Numbering system.
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**, **wcho**.|
| hour12 | boolean | No | Whether to use the 12-hour clock.
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 | Workday display format.
The value can be **long**, **short**, **narrow**, or **auto**.|
| era | string | No | Era display format.
The value can be **long**, **short**, **narrow**, or **auto**.|
| year | string | No | Year display format.
The value can be **numeric** or **2-digit**. |
| month | string | No | Month display format.
The value can be **numeric**, **2-digit**, **long**, **short**, or **narrow**.|
| day | string | No | Date 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**. |
| dayPeriod | string | No | Time period display format.
The value can be **long**, **short**, **narrow**, or **auto**.3|
| localeMatcher | string | No | Locale matching algorithm.
The value can be **lookup** or **best fit**.|
| formatMatcher | string | No | Format matching algorithm.
The value can be **basic** or **best fit**.|
> **NOTE**
>
> - For details about the display effects of **dateStyle**, **timeStyle**, **weekday**, and **year**, see Table 1 in [Date and Time Formatting](../../internationalization/i18n-time-date.md).
>
> - For details about the parameter values in different scenarios, see [Date and Time Formatting](../../internationalization/i18n-time-date.md).
## 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 = new intl.NumberFormat(["en-GB", "zh"], {style:'decimal', notation:"scientific"});
let formattedNumber = numfmt.format(1223); // formattedNumber = 1.223E3
```
### 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.
**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**.
The default value of **locale** is the system locale. |
| 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**. |
| currencySign | string | No | Currency unit symbol. The value can be **standard** or **accounting**.
The default value is **standard**.|
| currencyDisplay | string | No | Currency display mode. The value can be **symbol**, **narrowSymbol**, **code**, or **name**.
The default value is **symbol**.|
| unit | string | No | Unit name, for example, **meter**, **inch**, or **hectare**. |
| unitDisplay | string | No | Display format of units. The value can be **long**, **short**, or **narrow**.
The default value is **short**.|
| 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**.|
| signDisplay | string | No | Number sign display format. The value can be **auto**, **never**, **always**, or **expectZero**.
The default value is **auto**.|
| compactDisplay | string | No | Compact display format. The value can be **long** or **short**.
The default value is **short**. |
| notation | string | No | Number formatting specification. The value can be **standard**, **scientific**, **engineering**, or **compact**.
The default value is **standard**.|
| localeMatcher | string | No | Locale matching algorithm. The value can be **lookup** or **best fit**.
The default value is **best fit**.|
| style | string | No | Number display format. The value can be **decimal**, **currency**, **percent**, or **unit**.
The default value is **decimal**.|
| numberingSystem | string | No | Numbering system for the locale. 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**, **wcho**. The default value is the default numbering system of the specified locale.|
| useGrouping | boolean | No | Whether to use grouping for display. The default value is **auto**. |
| 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 of is **1**. |
| 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**. |
| 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**. |
| minimumSignificantDigits | number | No | Minimum number of the least significant digits. The value ranges from **1** to **21**.
The default value of is **1**. |
| maximumSignificantDigits | number | No | Maximum number of the least significant digits. The value ranges from **1** to **21**.
The default value is **21**. |
> **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 punctuation is ignored. The value can be **true** or **false**.
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 numeric collation is used. The value can be **true** or **false**.
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 **usage**, **sensitivity**, **collation**, and **caseFirst**, 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. |