鸿蒙系统(HarmonyOS)理论基础合集(五):国际化能力的支持

·时间日期国际化
·电话号码国际化
·文本识别
·度量衡格式化
·敏感禁忌

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

示例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 locale1 = builder.build();
String displayName = PhoneNumberAttribution.getAttribute("+8615611xxxxxx", “CN”, locale); //x为任意数字,返回值为"北京市"

文本识别
提供了对地址、时间日期与电话号码的文本识别能力,可以调用相关接口识别一段文本中包含的地址、时间日期与电话号码。
示例
//当Locale.getDefault().getLanguage()为"en"时
String source = “it is 123 test St”;
int[] re = TextRecognitionUtils.getAddress(source);
if (re[0] == 1) {
String result = source.substring(re[1], re[2] + 1); //返回值为"123 main St"
}

度量衡格式化
提供了对度量衡国际化能力的支持,可支持度量衡体系和维度之间的转换,与不同国家度量衡体系的自动转换。在开发包含度量衡的功能时,可以调用此能力满足多语言和不同国家用户的需求。
示例1
Locale zhCN = Locale.CHINA;
MeasureFormatter mes = MeasureFormatter.getInstance(zhCN);
try {
mes.format(MeasureOptions.Unit.AREA_UK_ACRE,
10000,
MeasureOptions.Usage.AREA_LAND_AGRICULT,
MeasureOptions.FormatStyle.WIDE,
MeasureOptions.Style.AUTO_STYLE_ON); //返回值为"4,046.856公顷"
} catch (NotSupportConvertException e) {
e.printStackTrace();
}

示例2
Locale enUS = Locale.US;
MeasureFormatter mes2 = MeasureFormatter.getInstance(enUS);
try {
mes2.format(MeasureOptions.Unit.VOLUME_US_CUP,
1000,
MeasureOptions.Unit.VOLUME_SI_LITER,
MeasureOptions.FormatStyle.WIDE); //返回值为"236.588 liters"
} catch (NotSupportConvertException e) {
e.printStackTrace();
}

敏感禁忌
提供对政治敏感地区、城市、及语言的获取能力,以及对地区名称更正的能力。
示例
Locale locale2 = Locale.getDefault();
ArrayList result = LocaleHelperUtils.getBlockedRegions(this, locale);
//返回值包含"EH"与"XK"(西撒哈拉与科索沃),这两个地区为有政治争议的地区需谨慎使用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值