• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# I18n开发指导
2
3本模块提供系统相关的或者增强的国际化能力,包括区域管理、电话号码处理、日历等,相关接口为ECMA 402标准中未定义的补充接口。更多接口和使用方式请见[I18N](../reference/apis/js-apis-i18n.md)。
4
5[Intl](intl-guidelines.md)模块提供了ECMA 402标准定义的基础国际化接口,与本模块共同使用可提供完整地国际化支持能力。
6
7## 获取和设置系统国际化相关信息
8
9调用接口访问和设置系统语言、偏好语言、地区、24小时制、本地数字等国际化信息。
10
11### 接口说明
12
13| 类名        | 接口名称                                     | 描述                    |
14| --------- | ---------------------------------------- | --------------------- |
15| System | getDisplayCountry(country:string,locale:string,sentenceCase?:boolean):string<sup>9+</sup> | 获取国家的本地化表示。           |
16| System | getDisplayLanguage(language:string,locale:string,sentenceCase?:boolean):string<sup>9+</sup> | 获取语言的本地化表示。           |
17| System | getSystemLanguages():Array<string><sup>9+</sup>               | 获取系统语言列表。               |
18| System | getSystemCountries(language: string):Array<string><sup>9+</sup>               | 获取针对输入语言系统支持的国家或地区列表。               |
19| System | isSuggested(language: string, region?: string): boolean<sup>9+</sup>               | 判断当前语言和地区是否匹配               |
20| System | getSystemLanguage():string<sup>9+</sup>               | 获取系统语言。               |
21| System | setSystemLanguage(language: string)<sup>9+</sup>               | 设置系统语言。               |
22| System | getSystemRegion():string<sup>9+</sup>                 | 获取系统地区。               |
23| System | setSystemRegion(region: string)<sup>9+</sup>                 | 设置系统地区。               |
24| System | getSystemLocale():string<sup>9+</sup>                 | 获取系统Locale。           |
25| System | setSystemLocale(locale: string)<sup>9+</sup>                 | 设置系统Locale。           |
26| System | is24HourClock():boolean<sup>9+</sup>     | 判断系统时间是否为24小时制。    |
27| System | set24HourClock():boolean<sup>9+</sup>     | 修改系统时间的24小时制设置。    |
28| System | addPreferredLanguage(language: string, index?: number)<sup>9+</sup>     | 在系统偏好语言列表的指定位置添加偏好语言。    |
29| System | removePreferredLanguage(index: number)<sup>9+</sup>     | 删除系统偏好语言列表中指定位置的偏好语言。    |
30| System | getPreferredLanguageList()<sup>9+</sup>     | 获取系统偏好语言列表。    |
31| System | getFirstPreferredLanguage()<sup>9+</sup>     | 获取系统偏好语言列表中的第一个偏好语言。    |
32| System | getAppPreferredLanguage()<sup>9+</sup>     | 获取应用偏好语言。    |
33| System | setUsingLocalDigit(flag: boolean)<sup>9+</sup>     | 设置系统是否使用本地数字。    |
34| System | getUsingLocalDigit()<sup>9+</sup>     | 判断系统是否使用本地数字。    |
35|  | isRTL(locale:string):boolean<sup>9+</sup> | locale对应的语言是否为从右到左语言。 |
36
37### 开发步骤
381. 导入I18n模块。
39
40   ```js
41   import I18n from '@ohos.i18n';
42   ```
43
442. 获取和设置系统语言。
45
46   调用setSystemLanguage接口设置系统语言(该接口为系统接口,只有具有UPDATE_CONFIGURATION权限的系统应用可以调用)。
47   调用getSystemLanguage接口获取系统语言。
48
49   ```js
50   try {
51      I18n.System.setSystemLanguage("en"); // 将系统语言设置为 "en"
52      let language = I18n.System.getSystemLanguage(); // language = "en"
53   } catch(error) {
54      console.error(`call i18n.System interface failed, error code: ${error.code}, message: ${error.message}`);
55   }
56   ```
57
583. 获取和设置系统区域。
59
60   调用setSystemRegion接口设置系统国家(该接口为系统接口,只有具有UPDATE_CONFIGURATION权限的系统应用可以调用)。
61   调用getSystemRegion接口获取系统国家。
62
63   ```js
64   try {
65      I18n.System.setSystemRegion("CN"); // 将系统国家设置为 "CN"
66      let region = I18n.System.getSystemRegion(); // region = "CN"
67   } catch(error) {
68      console.error(`call i18n.System interface failed, error code: ${error.code}, message: ${error.message}`);
69   }
70   ```
71
724. 获取和设置系统Locale。
73
74   调用setSystemLocale接口设置系统Locale(该接口为系统接口,只有具有UPDATE_CONFIGURATION权限的系统应用可以调用)。Locale的定义请见[Locale](../internationalization/intl-guidelines.md#设置区域信息)
75   调用getSystemLocale接口获取系统Locale。
76
77   ```js
78   try {
79      I18n.System.setSystemLocale("zh-Hans-CN"); // 将系统Locale设置为 "zh-Hans-CN"
80      let locale = I18n.System.getSystemLocale(); // locale = "zh-Hans-CN"
81   } catch(error) {
82      console.error(`call i18n.System interface failed, error code: ${error.code}, message: ${error.message}`);
83   }
84   ```
85
865. 判断Locale的语言是否为从右到左语言。
87
88   调用isRTL接口获取Locale的语言是否为从右到左语言。
89
90   ```js
91   try {
92      let rtl = I18n.isRTL("zh-CN"); // rtl = false
93      rtl = I18n.isRTL("ar"); // rtl = true
94   } catch(error) {
95      console.error(`call i18n.System interface failed, error code: ${error.code}, message: ${error.message}`);
96   }
97   ```
98
996. 获取和设置系统24小时制设置。
100
101   调用set24HourClock接口打开系统24小时制设置。
102   调用is24HourClock接口来判断当前是否打开系统24小时制设置。
103
104   ```js
105   try {
106      I18n.System.set24HourClock(true);
107      let hourClock = I18n.System.is24HourClock(); // hourClock = true
108   } catch(error) {
109      console.error(`call i18n.System interface failed, error code: ${error.code}, message: ${error.message}`);
110   }
111   ```
112
1137. 获取语言的本地化表示。
114
115   调用getDisplayLanguage接口获取某一语言的本地化表示。其中,language表示待本地化显示的语言,locale表示本地化的Locale,sentenceCase结果是否需要首字母大写。
116
117   ```js
118   try {
119      let language = "en";
120      let locale = "zh-CN";
121      let sentenceCase = false;
122      let localizedLanguage = I18n.System.getDisplayLanguage(language, locale, sentenceCase); // localizedLanguage = "英语"
123   } catch(error) {
124      console.error(`call i18n.System interface failed, error code: ${error.code}, message: ${error.message}`);
125   }
126   ```
127
1288. 获取国家的本地化表示。
129
130   调用getDisplayCountry接口获取某一国家的本地化表示。其中,country表示待本地化显示的国家,locale表示本地化的Locale,sentenceCase结果是否需要首字母大写。
131
132   ```js
133   try {
134      let country = "US";
135      let locale = "zh-CN";
136      let sentenceCase = false;
137      let localizedCountry = I18n.System.getDisplayCountry(country, locale, sentenceCase); // localizedCountry = "美国"
138   } catch(error) {
139      console.error(`call i18n.System interface failed, error code: ${error.code}, message: ${error.message}`);
140   }
141   ```
142
1439. 获取系统语言列表和某个语言系统支持的国家列表。
144
145   调用getSystemLanguages接口获取系统支持的语言列表。
146   调用getSystemCountries接口获取某一语言系统支持的地区列表。
147   ```js
148
149   try {
150      let languageList = I18n.System.getSystemLanguages();  // languageList = ["en-Latn-US", "zh-Hans"]
151      let countryList = I18n.System.getSystemCountries("zh"); // countryList = ["ZW", "YT", ..., "CN", "DE"], 共240个国家和地区
152   } catch(error) {
153      console.error(`call i18n.System interface failed, error code: ${error.code}, message: ${error.message}`);
154   }
155   ```
156
15710. 判断语言和国家是否匹配。
158
159   调用isSuggested接口判断语言和地区是否匹配。
160
161   ```js
162   try {
163      let isSuggest = I18n.System.isSuggested("zh", "CN"); // isSuggest = true
164   } catch(error) {
165      console.error(`call i18n.System interface failed, error code: ${error.code}, message: ${error.message}`);
166   }
167   ```
168
16911. 获取与设置偏好语言。
170
171   调用addPreferredLanguage接口在当前系统偏好语言列表中插入偏好语言。
172   调用removePreferredLanguage接口移除系统偏好语言列表中的某个语言。(addPreferredLanguage接口和removePreferredLanguage接口为系统接口,只有具有UPDATE_CONFIGURATION权限的系统应用可以调用。)
173   调用getPreferredLanguageList接口获取系统当前偏好语言列表。
174   调用getFirstPreferredLanguage接口获取系统偏好语言列表中的第一个偏好语言。
175   调用getAppPreferredLanguageList接口获取应用偏好语言,应用偏好语言为系统偏好语言列表中第一个与应用的资源匹配的语言。
176
177   ```js
178   try {
179      I18n.System.addPreferredLanguage("en-GB", 0); // 将"en-GB"设置为系统偏好语言列表的第一个语言
180      let list = I18n.System.getPreferredLanguageList(); // 获取当前系统偏好语言列表 list = ["en-GB", ...]
181      I18n.System.removePreferredLanguage(list.length - 1); // 移除当前系统偏好语言列表中的最后一个偏好语言
182      let firstPreferredLanguage = I18n.System.getFirstPreferredLanguage(); // firstPreferredLanguage = "en-GB"
183      let appPreferredLanguage = I18n.System.getAppPreferredLanguage(); // 当应用中包含 "en-GB"资源时,应用偏好语言为"en-GB"
184   } catch(error) {
185      console.error(`call i18n.System interface failed, error code: ${error.code}, message: ${error.message}`);
186   }
187   ```
188
18912. 获取和设置系统本地化数字开关。
190
191   调用setUsingLocalDigit接口打开本地化数字开关。(此接口为系统接口,只有具有UPDATE_CONFIGURATION权限的系统应用可以调用。)
192   调用getUsingLocalDigit接口访问本地化数字开关状态。
193   当前只有 "ar", "as", "bn", "fa", "mr", "my", "ne", "ur" 8个语言支持使用本地数字。
194
195```js
196try {
197   I18n.System.setUsingLocalDigit(true); // 打开本地化数字开关
198   let status = I18n.System.getUsingLocalDigit(); // status = true
199} catch(error) {
200   console.error(`call i18n.System interface failed, error code: ${error.code}, message: ${error.message}`);
201}
202```
203
204## 获取日历信息
205
206调用日历[Calendar](../reference/apis/js-apis-i18n.md#calendar8)相关接口来获取日历的相关信息,例如获取日历的本地化显示、一周起始日、一年中第一周的最小天数等。
207
208### 接口说明
209
210| 类名        | 接口名称                                     | 描述                    |
211| --------- | ---------------------------------------- | --------------------- |
212|  | getCalendar(locale:string,type?:string):Calendar<sup>8+</sup> | 获取指定locale和type的日历对象。 |
213| Calendar | setTime(date:Date): void<sup>8+</sup>    | 设置日历对象内部的时间日期。        |
214| Calendar | setTime(time:number): void<sup>8+</sup>  | 设置日历对象内部的时间日期。        |
215| Calendar | set(year:number,month:number,date:number,hour?:number,minute?:number,second?:number): void<sup>8+</sup> | 设置日历对象的年、月、日、时、分、秒。   |
216| Calendar | setTimeZone(timezone:string): void<sup>8+</sup> | 设置日历对象的时区。            |
217| Calendar | getTimeZone():string<sup>8+</sup>        | 获取日历对象的时区。            |
218| Calendar | getFirstDayOfWeek():number<sup>8+</sup>  | 获取日历对象的一周起始日。         |
219| Calendar | setFirstDayOfWeek(value:number): void<sup>8+</sup> | 设置日历对象的一周起始日。         |
220| Calendar | getMinimalDaysInFirstWeek():number<sup>8+</sup> | 获取一年中第一周的最小天数。        |
221| Calendar | setMinimalDaysInFirstWeek(value:number): void<sup>8+</sup> | 设置一年中第一周的最小天数。        |
222| Calendar | getDisplayName(locale:string):string<sup>8+</sup> | 获取日历对象的本地化表示。         |
223| Calendar | isWeekend(date?:Date):boolean<sup>8+</sup> | 判断给定的日期在日历中是否是周末。     |
224
225### 开发步骤
226
2271. 导入I18n模块。
228
229   ```js
230   import I18n from '@ohos.i18n';
231   ```
232
2332. 实例化日历对象。
234
235   调用getCalendar接口获取指定locale和type的时区对象(i18n为导入的模块)。其中,type表示合法的日历类型,目前合法的日历类型包括:"buddhist", "chinese", "coptic", "ethiopic", "hebrew", "gregory", "indian", "islamic_civil", "islamic_tbla", "islamic_umalqura", "japanese", "persian"。当type没有给出时,采用区域默认的日历类型。
236
237   ```js
238   let calendar = I18n.getCalendar("zh-CN", "chinese"); // 创建中文农历日历
239   ```
240
2413. 设置日历对象的时间。
242
243     调用setTime接口设置日历对象的时间。setTime接口接收两种类型的参数。一种是传入一个Date对象,另一种是传入一个数值表示从1970.1.1 00:00:00 GMT逝去的毫秒数。
244
245   ```js
246   let date1 = new Date();
247   calendar.setTime(date1);
248   let date2 = 1000;
249   calendar.setTime(date2);
250   ```
251
2524. 设置日历对象的年、月、日、时、分、秒。
253
254     调用set接口设置日历对象的年、月、日、时、分、秒。
255
256   ```js
257   calendar.set(2021, 12, 21, 6, 0, 0);
258   ```
259
2605. 设置、获取日历对象的时区。
261
262   调用setTimeZone接口和getTimeZone接口来设置、获取日历对象的时区。其中,setTimeZone接口需要传入一个字符串表示需要设置的时区。
263
264   ```js
265   calendar.setTimeZone("Asia/Shanghai");
266   let timezone = calendar.getTimeZone();  // timezone = "China Standard Time"
267   ```
268
2696. 设置、获取日历对象的一周起始日。
270
271   调用setFirstDayOfWeek接口和getFirstDayOfWeek接口设置、获取日历对象的一周起始日。其中,setFirstDayOfWeek需要传入一个数值表示一周的起始日,1代表周日,7代表周六。
272
273   ```js
274   calendar.setFirstDayOfWeek(1);
275   let firstDayOfWeek = calendar.getFirstDayOfWeek(); // firstDayOfWeek = 1
276   ```
277
2787. 设置、获取日历对象第一周的最小天数。
279     调用setMinimalDaysInFirstWeek接口和getMinimalDaysInFirstWeek接口来设置、获取日历对象第一周的最小天数。
280
281   ```js
282   calendar.setMinimalDaysInFirstWeek(3);
283   let minimalDaysInFirstWeek = calendar.getMinimalDaysInFirstWeek(); // minimalDaysInFirstWeek = 3
284   ```
285
2868. 获取日历对象的本地化显示。
287   调用getDisplayName来获取日历对象的本地化显示。
288
289   ```js
290   let localizedName = calendar.getDisplayName("zh-CN"); // localizedName = "农历"
291   ```
292
2939. 判断某一个日期是否为周末。
294
295   调用isWeekend接口来判断输入的Date是否为周末。
296
297   ```js
298   let date = new Date(2022, 12, 12, 12, 12, 12);
299   let weekend = calendar.isWeekend(date); // weekend = false
300   ```
301
302## 电话号码格式化
303
304调用电话号码格式化[PhoneNumberFormat](../reference/apis/js-apis-i18n.md#phonenumberformat8)的接口,实现对针对不同国家电话号码的格式化以及判断电话号码格式是否正确的功能。
305
306### 接口说明
307
308| 类名        | 接口名称                                     | 描述                      |
309| --------- | ---------------------------------------- | ----------------------- |
310| PhoneNumberFormat | constructor(country:string,options?:PhoneNumberFormatOptions)<sup>8+</sup> | 实例化PhoneNumberFormat对象。 |
311| PhoneNumberFormat | isValidNumber(number:string):boolean<sup>8+</sup> | 判断number是否是一个格式正确的电话号码。 |
312| PhoneNumberFormat | format(number:string):string<sup>8+</sup> | 对number按照指定国家及风格进行格式化。  |
313| PhoneNumberFormat | getLocationName(number: string, locale: string): string<sup>9+</sup> | 获取电话号码归属地。  |
314
315### 开发步骤
316
3171. 导入I18n模块。
318
319   ```js
320   import I18n from '@ohos.i18n';
321   ```
322
3232. 实例化电话号码格式化对象。
324
325   调用PhoneNumberFormat的构造函数来实例化电话号码格式化对象,需要传入电话号码的国家代码及格式化选项。其中,格式化选项是可选的,包括style选项,该选项的取值包括:"E164", "INTERNATIONAL", "NATIONAL", "RFC3966"。
326
327   ```js
328   let phoneNumberFormat = new I18n.PhoneNumberFormat("CN", {type: "E164"});
329   ```
330
3313. 判断电话号码格式是否正确。
332
333     调用isValidNumber接口来判断输入的电话号码的格式是否正确。
334
335   ```js
336   let validNumber = phoneNumberFormat.isValidNumber("15812341234"); // validNumber = true
337   ```
338
3394. 电话号码格式化。
340
341     调用电话号码格式化对象的format接口来对输入的电话号码进行格式化。
342
343   ```js
344   let formattedNumber = phoneNumberFormat.format("15812341234"); // formattedNumber = "+8615812341234"
345   ```
346
347## 度量衡转换
348
349度量衡转换接口可以实现度量衡转换的相关功能。
350
351### 接口说明
352
353| 类名        | 接口名称                                     | 描述                                      |
354| --------- | ---------------------------------------- | --------------------------------------- |
355| I18NUtil | unitConvert(fromUnit:UnitInfo,toUnit:UnitInfo,value:number,locale:string,style?:string):string<sup>9+</sup> | 将fromUnit的单位转换为toUnit的单位,并根据区域与风格进行格式化。 |
356
357### 开发步骤
358
3591. 导入I18n模块。
360
361   ```js
362   import I18n from '@ohos.i18n';
363   ```
364
3652. 度量衡单位转换。
366
367   调用[unitConvert](../reference/apis/js-apis-i18n.md#unitconvert9)接口实现度量衡单位转换,并进行格式化显示的功能。
368
369   ```js
370   let fromUnit = {unit: "cup", measureSystem: "US"};
371   let toUnit = {unit: "liter", measureSystem: "SI"};
372   let number = 1000;
373   let locale = "en-US";
374   let style = "long";
375   let converttedUnit = I18n.I18NUtil.unitConvert(fromUnit, toUnit, number, locale, style); // converttedUnit = "236.588 liters"
376   ```
377
378## 字母表索引
379
380调用字母表索引[IndexUtil](../reference/apis/js-apis-i18n.md#indexutil8)的接口可以获取不同Locale的字母表索引,以及实现计算字符串所属索引的功能。
381
382### 接口说明
383
384| 类名        | 接口名称                                     | 描述                      |
385| --------- | ---------------------------------------- | ----------------------- |
386|  | getInstance(locale?:string):IndexUtil<sup>8+</sup> | 实例化字母表索引对象。             |
387| IndexUtil | getIndexList():Array&lt;string&gt;<sup>8+</sup> | 获取当前Locale的索引列表。        |
388| IndexUtil | addLocale(locale:string): void<sup>8+</sup> | 将新的Locale对应的索引加入当前索引列表。 |
389| IndexUtil | getIndex(text:string):string<sup>8+</sup> | 获取text对应的索引。            |
390
391### 开发步骤
392
3931. 导入I18n模块。
394
395   ```js
396   import I18n from '@ohos.i18n';
397   ```
398
3992. 实例化字母表索引对象。
400
401   调用getInstance接口来实例化特定locale对应的字母表索引对象。当locale参数为空时,实例化系统默认Locale的字母表索引对象。
402
403
404   ```js
405   let indexUtil = I18n.getInstance("zh-CN");
406   ```
407
4083. 获取索引列表。
409
410     调用getIndexList接口来获取当前Locale对应的字母表索引列表。
411
412   ```js
413   let indexList = indexUtil.getIndexList(); // indexList = ["...", "A", "B", "C", ..., "X", "Y", "Z", "..."]
414   ```
415
4164. 增加新的索引。
417
418     调用addLocale接口,将新的Locale对应的字母表索引添加到当前字母表索引列表中。
419
420   ```js
421   indexUtil.addLocale("ar");
422   ```
423
4245. 获取字符串对应的索引。
425
426     调用getIndex接口来获取某一字符串对应的字母表索引。
427
428   ```js
429   let text = "access index";
430   let index = indexUtil.getIndex(text); // index = "A"
431   ```
432
433## 获取文本断点位置
434
435当文本比较长无法在一行进行显示时,调用文本断点[BreakIterator8](../reference/apis/js-apis-i18n.md#breakiterator8)的接口,来获取文本可以断行的位置。
436
437### 接口说明
438
439| 类名        | 接口名称                                     | 描述                             |
440| --------- | ---------------------------------------- | ------------------------------ |
441|  | getLineInstance(locale:string):BreakIterator<sup>8+</sup> | 实例化断行对象。                       |
442| BreakIterator | setLineBreakText(text:string): void<sup>8+</sup> | 设置要处理的文本。                      |
443| BreakIterator | getLineBreakText():string<sup>8+</sup>   | 获取要处理的文本。                      |
444| BreakIterator | current():number<sup>8+</sup>            | 获取当前断行对象在处理文本的位置。              |
445| BreakIterator | first():number<sup>8+</sup>              | 将断行对象设置到第一个可断句的分割点。            |
446| BreakIterator | last():number<sup>8+</sup>               | 将断行对象设置到最后一个可断句的分割点。           |
447| BreakIterator | next(index?:number):number<sup>8+</sup>  | 将断行对象移动index个分割点的位置。           |
448| BreakIterator | previous():number<sup>8+</sup>           | 将断行对象移动到前一个分割点的位置。             |
449| BreakIterator | following(offset:number):number<sup>8+</sup> | 将断行对象移动到offset指定位置的后面一个分割点的位置。 |
450| BreakIterator | isBoundary(offset:number):boolean<sup>8+</sup> | 判断某个位置是否是分割点。                  |
451
452### 开发步骤
453
4541. 导入I18n模块。
455
456   ```js
457   import I18n from '@ohos.i18n';
458   ```
459
4602. 实例化断行对象。
461
462   调用getLineInstance接口来实例化断行对象。
463
464   ```js
465   let locale = "en-US";
466   let breakIterator = I18n.getLineInstance(locale);
467   ```
468
4693. 设置、访问要断行处理的文本。
470
471   调用setLineBreakText接口和getLineBreakText接口来设置、访问要断行处理的文本。
472
473   ```js
474   let text = "Apple is my favorite fruit";
475   breakIterator.setLineBreakText(text);
476   let breakText = breakIterator.getLineBreakText();  // breakText = "Apple is my favorite fruit"
477   ```
478
4794. 获取断行对象当前的位置。
480
481   调用current接口来获取断行对象在当前处理文本中的位置。
482
483   ```js
484   let pos = breakIterator.current(); // pos = 0
485   ```
486
4875. 设置断行对象的位置。
488
489   系统提供了很多接口可以用于调整断行对象在处理文本中的位置,包括first, last, next, previous, following。
490
491   ```js
492   let firstPos = breakIterator.first(); // 将断行对象设置到第一个分割点的位置,即文本的起始位置;firstPos = 0
493   let lastPos = breakIterator.last();  // 将断行对象设置到最后一个分割点的位置,即文本末尾的下一个位置;lastPos = 26
494   // 将断行对象向前或向后移动一定数量的分割点。
495   // 当传入正数时,向后移动;当传入负数时,向前移动;当未传入数值时,则向后移动一个位置;
496   // 当移动超出了文本的长度范围,则返回-1;
497   let nextPos = breakIterator.next(-2); // nextPos = 12
498   let previousPos = breakIterator.previous();  // 将断行对象向前移动向前移动一个分割点,当超出文本长度范围时返回-1; previousPos = 9
499   // 将断行对象移动到offset指定位置的后面一个分割点。如果offset所指定的位置的下一个分割点超出了文本的长度范围,则返回-1;
500   let followingPos = breakIterator.following(10); // followingPos = 12
501   ```
502
5036. 判断某个位置是否为分割点。
504
505   调用isBoundary接口来判断一个接口是否为分割点;如果该位置是分割点,则返回true,并且将断行对象移动到该位置;如果该位置不是分割点,则返回false,并且将断行对象移动到该位置后的一个分割点。
506
507   ```js
508   let isboundary = breakIterator.isBoundary(5); // isboundary = false
509   ```
510
511## 获取时区
512
513调用时区[TimeZone](../reference/apis/js-apis-i18n.md#timezone)相关接口来获取时区的相关信息,例如获取时区的ID、本地化显示、时区偏移量等。
514
515### 接口说明
516
517| 类名        | 接口名称                                     | 描述                             |
518| --------- | ---------------------------------------- | ------------------------------ |
519|  | getTimeZone(zoneID?: string): TimeZone<sup>7+</sup> | 获取时区对象。                       |
520| TimeZone | getID(): string<sup>7+</sup> | 获取时区ID。                      |
521| TimeZone | getDisplayName(locale?: string, isDST?: boolean): string<sup>7+</sup>   | 获取时区的本地化显示。                      |
522| TimeZone | getRawOffset(): number<sup>7+</sup>            | 获取时区对象与UTC时区的偏移量。              |
523| TimeZone | getOffset(date?: number): number<sup>7+</sup>              | 获取某一时间点时区对象与UTC时区的偏移量。            |
524| TimeZone | getAvailableIDs(): Array<string><sup>9+</sup>               | 获取系统支持的时区ID列表。           |
525| TimeZone | getAvailableZoneCityIDs(): Array<string><sup>9+</sup>  | 获取系统支持的时区城市ID列表。           |
526| TimeZone | getCityDisplayName(cityID: string, locale: string): string<sup>9+</sup>           | 获取时区城市ID的本地化显示。             |
527| TimeZone | getTimezoneFromCity(cityID: string): TimeZone<sup>9+</sup> | 获取时区城市ID对应的时区对象。 |
528
529### 开发步骤
530
5311. 导入I18n模块。
532
533   ```js
534   import I18n from '@ohos.i18n';
535   ```
536
5372. 实例化时区对象,并获取相关时区信息。
538
539   调用getTimeZone接口来获取时区对象。
540
541   ```js
542   let timezone = I18n.getTimeZone(); // 使用默认参数可以获取系统时区对象。
543   ```
544
545   获取时区ID、本地化显示、时区偏移量、某一时刻的时区偏移量信息。
546
547   ```js
548   let timezoneID = timezone.getID(); // timezoneID = "Asia/Shanghai"
549   let timezoneDisplayName = timezone.getDisplayName(); // timezoneDisplayName = "中国标准时间"
550   let rawOffset = timezone.getRawOffset(); // rawOffset = 28800000
551   let offset = timezone.getOffset(new Date().getTime()); // offset = 28800000
552   ```
553
5543. 获取系统支持的时区ID。
555
556   调用getAvailableIDs接口获取系统支持的时区ID列表。
557   时区ID列表中的时区ID可以作为getTimeZone接口的参数,来创建TimeZone对象。
558
559   ```js
560   let timezoneIDs = I18n.TimeZone.getAvailableIDs(); // timezoneIDs = ["America/Adak", ...],共包含24个时区ID
561   let timezone = I18n.getTimeZone(timezoneIDs[0]);
562   let timezoneDisplayName = timezone.getDisplayName(); // timezoneDisplayName = "夏威夷-阿留申时间"
563   ```
564
5654. 获取系统支持的时区城市ID。
566
567   调用getAvailableZoneCityIDs接口获取系统支持的时区城市ID列表。
568   调用getCityDisplayName接口获取时区城市ID的本地化显示。
569   调用getTimezoneFromCity接口基于时区城市ID创建时区对象。
570
571   ```js
572   let zoneCityIDs = I18n.TimeZone.getAvailableZoneCityIDs(); // ["Auckland", "Magadan", ...]
573   let cityDisplayName = I18n.TimeZone.getCityDisplayName(zoneCityIDs[0], "zh-Hans"); // cityDisplayName = "奥克兰(新西兰)"
574   let timezone = I18n.TimeZone.getTimezoneFromCity(zoneCityIDs[0]);
575   let timezoneDisplayName = timezone.getDisplayName(); // timezoneDisplayName = "新西兰时间"
576   ```
577
578## 获取音译对象
579
580调用音译[Transliterator](../reference/apis/js-apis-i18n.md#transliterator9)相关接口来创建音译对象,获取音译字符串。
581
582### 接口说明
583
584| 类名        | 接口名称                                     | 描述                             |
585| --------- | ---------------------------------------- | ------------------------------ |
586| Transliterator | getAvailableIDs():Array<string><sup>9+</sup> | 获取音译支持的ID列表。                       |
587| Transliterator | getInstance(): Transliterator<sup>9+</sup> | 创建音译对象。                      |
588| Transliterator | transform(text: string): string<sup>9+</sup>   | 获取音译字符串。                      |
589
590### 开发步骤
591
5921. 导入I18n模块。
593
594   ```js
595   import I18n from '@ohos.i18n';
596   ```
597
5982. 获取支持音译的ID列表。
599
600   调用getAvailableIDs接口来获取支持音译的ID列表。
601   每个ID的格式为 source-destination,例如 ASCII-Latin,表示将ASCII转换为Latin的音译ID。
602
603   ```js
604   let ids = I18n.Transliterator.getAvailableIDs(); // ids = ["ASCII-Latin", "Accents-Any", ... ],共支持671个语言
605   ```
606
6073. 创建音译对象,获取音译字符串。
608
609   支持音译的ID列表中的ID可以作为getInstance接口的参数,创建音译对象。
610   调用transform接口,获取音译字符串。
611
612   ```js
613   let transliterator = I18n.Transliterator.getInstance("Any-Latn"); // Any-Latn表示将任意文本转换为Latn文本
614   let transformText = transliterator.transform("你好"); // transformText = "nǐ hǎo "
615   ```
616
617## 字符类型判断
618
619调用字符[Unicode](../reference/apis/js-apis-i18n.md#unicode9)相关接口来获取字符的相关信息,例如字符是否是数字、字符是否是空格符等。
620
621### 接口说明
622
623| 类名        | 接口名称                                     | 描述                             |
624| --------- | ---------------------------------------- | ------------------------------ |
625| Unicode | isDigit(char: string): boolean<sup>9+</sup> | 判断字符是否是数字。                       |
626| Unicode | isSpaceChar(char: string): boolean<sup>9+</sup> | 判断字符是否是空格符。                      |
627| Unicode | isWhitespace(char: string): boolean<sup>9+</sup>   | 判断字符是否是空白符。                      |
628| Unicode | isRTL(char: string): boolean<sup>9+</sup>            | 判断字符是否是从左到右显示的字符。              |
629| Unicode | isIdeograph(char: string): boolean<sup>9+</sup>              | 判断字符是否是表意文字。            |
630| Unicode | isLetter(char: string): boolean<string><sup>9+</sup>               | 判断字符是否是字母。           |
631| Unicode | isLowerCase(char: string): boolean<string><sup>9+</sup>  | 判断字符是否是小写字母。           |
632| Unicode | isUpperCase(char: string): boolean<sup>9+</sup>           | 判断字符是否是大写字母。             |
633| Unicode | getType(char: string): string<sup>9+</sup> | 获取字符的类型。 |
634
635### 开发步骤
636
6371. 导入I18n模块。
638
639   ```js
640   import I18n from '@ohos.i18n';
641   ```
642
6432. 判断字符是否具有某种性质。
644
645   判断字符是否是数字。
646
647   ```js
648   let isDigit = I18n.Unicode.isDigit("1"); // isDigit = true
649   isDigit = I18n.Unicode.isDigit("a"); // isDigit = false
650   ```
651
652   判断字符是否是空格符。
653
654   ```js
655   let isSpaceChar = I18n.Unicode.isSpaceChar(" "); // isSpaceChar = true
656   isSpaceChar = I18n.Unicode.isSpaceChar("\n"); // isSpaceChar = false
657   ```
658
659   判断字符是否是空白符。
660
661   ```js
662   let isWhitespace = I18n.Unicode.isWhitespace(" "); // isWhitespace = true
663   isWhitespace = I18n.Unicode.isWhitespace("\n"); // isWhitespace = true
664   ```
665
666   判断字符是否是从左到右书写的文字。
667
668   ```js
669   let isRTL = I18n.Unicode.isRTL("مرحبًا"); // isRTL = true,阿拉伯语的文字是从左到右书写的文字
670   isRTL = I18n.Unicode.isRTL("a"); // isRTL = false
671   ```
672
673   判断字符是否是表意文字。
674
675   ```js
676   let isIdeograph = I18n.Unicode.isIdeograph("你好"); // isIdeograph = true
677   isIdeograph = I18n.Unicode.isIdeograph("a"); // isIdeograph = false
678   ```
679
680   判断字符是否是字母。
681
682   ```js
683   let isLetter = I18n.Unicode.isLetter("a"); // isLetter = true
684   isLetter = I18n.Unicode.isLetter("."); // isLetter = false
685   ```
686
687   判断字符是否是小写字母。
688
689   ```js
690   let isLowerCase = I18n.Unicode.isLowerCase("a"); // isLetter = true
691   isLowerCase = I18n.Unicode.isLowerCase("A"); // isLetter = false
692   ```
693
694   判断字符是否是大写字母。
695
696   ```js
697   let isUpperCase = I18n.Unicode.isUpperCase("a"); // isUpperCase = false
698   isUpperCase = I18n.Unicode.isUpperCase("A"); // isUpperCase = true
699   ```
700
7013. 获取字符的类型。
702
703   调用getType接口获取字符的类型。
704
705   ```js
706   let type = I18n.Unicode.getType("a"); // type = U_LOWER_CASE_LETTER
707   ```
708
709## 获取日期中年月日的排列顺序
710
711### 接口说明
712
713| 类名        | 接口名称                                     | 描述                             |
714| --------- | ---------------------------------------- | ------------------------------ |
715| I18NUtil | getDateOrder(locale: string): string<sup>9+</sup> | 判断日期中年月日的排列顺序。                       |
716
717### 开发步骤
718
7191. 导入I18n模块。
720
721   ```js
722   import I18n from '@ohos.i18n';
723   ```
724
7252. 判断日期的年月日的排序顺序。
726
727   调用getDateOrder接口判断某一Locale的日期中,年月日的排列顺序。
728   接口返回一个字符串,由"y","L","d"三部分组成,分别表示年、月、日,使用中划线进行拼接。例如,"y-L-d"。
729
730   ```js
731   let order = I18n.I18NUtil.getDateOrder("zh-CN"); // order = "y-L-d",表示中文中年月日的顺序为年-月-日。
732   ```