HarmonyOS-鸿蒙app开发 —基于java_国际化能力的支持

HarmonyOS-鸿蒙app开发 —基于java_国际化能力的支持

时间日期国际化

不同的区域具有不同的时间日期显示习惯。例如,英语(美国)区域short时间格式为“9:31 AM”;简体中文(中国)区域short时间格式为“上午9:31”;芬兰语(芬兰)区域short时间格式为“9.31”。因此为开发者提供了获取不同区域的时间日期规格的能力。

界面时间日期字串和时间类控件显示,应当遵循当地习惯的规则,当需要展示时间或日期时,建议获取当前地区的时间日期规格,并根据获取到的规格对显示的字串进行格式化后再使用。

示例1:

Locale locale = new Locale(“de”, “CH”);

String skeleton = “MMMMd”;

String bestPattern = DateFormatUtil.getBestPattern(skeleton, locale); // 返回值为“d. MMMM”

示例2:

String languageTag = “zh”;

String out = DateFormatUtil.format(“EEEEdMMMMy”, languageTag, “Asia/Shanghai”, 0, 3600 * 1000); // 返回值为“1970年1月1日星期四”

电话号码国际化

不同的区域的电话号码有不同的格式化效果,当需要展示本地电话号码时,应遵循当地电话号码的格式化原则。因此为开发者提供了对不同地区电话号码格式化的能力,以便于在显示电话号码时进行正确的格式化处理。同时,还提供了获取电话号码归属地的能力,开发者可以使用相关接口获取电话号码的归属地信息。

示例1:

InputFormatter formatter = InputFormatter.getInstance(“CN”);

formatter.inputNumberAndRememberPosition(‘1’); // 返回值为“1”

formatter.inputNumber(‘5’); // 返回值为“15”

formatter.inputNumber(‘6’); // 返回值为“156”

formatter.inputNumberAndRememberPosition(‘1’);// 返回值为“156 1”

示例2:Locale.Builder builder = new Locale.Builder();

builder.setLanguage(“zh”);

builder.setRegion(“CN”);

builder.setScript(“Hant”);

Locale locale = builder.build();

String displayName = PhoneNumberAttribution.getAttribute(“+8615611xxxxxx”, “CN”, locale); // x为任意数字,返回值为“北京市”

文本识别

提供了对地址、时间日期与电话号码的文本识别能力,可以调用相关接口识别一段文本中包含的地址、时间日期与电话号码。

示例:

// 当Locale.getDefault().getLanguage()为“en”

String source = “it is 123 main St”;

int[] re = TextRecognitionUtils.getAddress(source);

if (re[0] == 1) {

result = source.substring(re[1], re[2] + 1);// 返回值为“123 main St”

}

度量衡格式化

提供了对度量衡国际化能力的支持,可支持度量衡体系和维度之间的转换,与不同国家度量衡体系的自动转换。在开发包含度量衡的功能时,可以调用此能力满足多语言和不同国家用户的需求。

示例1:

Locale zhCN = Locale.CHINA;

MeasureFormatter mes = MeasureFormatter.getInstance(zhCN);

mes.format(MeasureOptions.Unit.AREA_UK_ACRE,

10000,

MeasureOptions.Usage.AREA_LAND_AGRICULT,

MeasureOptions.FormatStyle.WIDE,

MeasureOptions.Style.AUTO_STYLE_ON));// 返回值为”4,046.856公顷”

示例2:Locale enUS = Locale.US;

MeasureFormatter mes = MeasureFormatter.getInstance(enUS);

mes.format(MeasureOptions.Unit.VOLUME_US_CUP,

1000,

MeasureOptions.Unit.VOLUME_SI_LITER,

MeasureOptions.FormatStyle.WIDE));// 返回值为”236.588 liters”

敏感禁忌

提供对政治敏感地区、城市、及语言的获取能力,以及对地区名称更正的能力。

示例:

Locale locale = Locale.getDefault();

ArrayList<String> result = LocaleHelperUtils.getBlockedRegions(context, locale);

//返回值包含“EH”“XK”(西撒哈拉与科索沃),这两个地区为有政治争议的地区需谨慎使用

🚀 如未找到文章请搜索栏搜素 | Ctrl+D收藏本站 | 联系邮箱:15810050733@qq.com