0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙实战开发:【国际化部件】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-03-21 22:07 次阅读

简介

国际化部件为应用提供了一系列国际化接口,包括:时间日期格式化、数字格式化、月份星期格式化、单复数、度量衡等相关接口。基于这些国际化接口,开发者可以设计并实现具有良好国际化能力的应用,从而可以高效、低成本的实现应用的本地化。国际化部件支持如下设备:Multi-modal V200Z-R BES2600。

国际化部件架构图说明:

  • Kits为提供的c++国际化接口。
  • frameworks为c++接口的底层c++实现。
  • binary data generate tool为数据打包工具。数据打包工具的输入为文本数据文件,输出为二进制数据文件i18n.dat,i18n.dat中包含了国际化接口所依赖的国际化数据。数据打包工具位于tools/i18n-dat-tool目录下,i18n.dat位于frameworks目录下。 数据打包工具的使用方法:执行tools/i18n-dat-tool/src/main/java/ohos/global/i18n/Fetcher.java中的main方法。
  • source data文本格式的国际化数据,位于tools/i18n-dat-tool/resource目录下。

鸿蒙知识已更新完整gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md可以前往参考。

或者添+mau123789是卫心

全网首发-纯血版鸿蒙OpenHarmony4.0&Next中高级鸿蒙技术学习路线图.png

说明

  1. 提供时间日期格式化接口,使时间日期格式(如年月日顺序、月份和星期词汇、使用12或24小时制等)跟随系统设置满足不同区域用户的文化习惯。更详细的内容见API文档。示例如下:
    #include "date_time_format.h"
    using namespace OHOS::I18N
    
    LocaleInfo locale("zh", "Hans", "CN");  // 获得区域
    DateTimeFormat formatter(AvailableDateTimeFormatPattern::HOUR_MINUTE, locale); // 初始化时间日期示例,并获取该区域时间格式化所需数据,第一个参数为时间日期格式化模板类型,所支持的模板类型见API文档types.h
    time_t time = 3600 * 3; // 所需要格式化的时间
    std::string zoneInfo = "+1:00"; // 设置时区,相对于UTC 0时区加一小时
    std::string out; // 时间日期格式化结果保存在out中
    Ii8nStatus status = Ii8nStatus::ISUCCESS;
    formatter.Format(time, zoneInfo, out, status); // 判断status状态
    
    output:  4:00
    
  2. 提供数字格式化接口,使数字格式(如数字体系、数字分组、小数点、百分号等)跟随应用系统设置满足不同区域用户的文化习惯。更详细的内容见API文档。示例如下:
    #include "number_format.h"
    using namespace OHOS::I18N
    
    LocaleInfo locale("en", "US");
    int status = 0;
    NumberFormat formatter(locale, status);  // 初始化数据格式化实例,并获取指定locale数字格式化所需数据;status为初始化的结果,等于1时表示初始化失败
    int num = 1234
    std::string out = formatter.Format(num, status);  // 判断status状态
    
    output: 1,234
    
  3. 提供获取指定区域月份、星期不同格式名称的能力。示例如下:
    #include "date_time_format.h"
    using namespace OHOS::I18N
    
    LocaleInfo locale("en", "US");  // 获得区域
    DateTimeFormat formatter(AvailableDateTimeFormatPattern::HOUR_MINUTE, locale);
    std::string month = formatter.GetMonthName(0, DateTimeDataType::FORMAT_WIDE); // 获取format类型的长格式
    
    output: January
    
  4. 不同语言下名称跟随数字有不同的表达,如英文下会有:“one apple”、“two apples”。单复数规范总结多种语言的语法规范将名词的单数和复数形式划分为zero、one、two、few、many、other六种类型。不同语言支持不同数量的单复数类型,如中文只支持other一种,英文支持one和other两种,阿拉伯语支持全部6种类型。提供单复数接口来计算不同语言下不同数字时应该使用的名词复数类型,使“数字+名词”这种表达形式跟随应用语言满足不同语言用户的文化习惯。示例如下:
    #include "plural_format.h"
    using namespace OHOS::I18N
    
    Locale locale("en", "US"); // 获得区域
    Ii8nStatus status = Ii8nStatus::ISUCCESS;
    PluralFormatter formatter = PluralFormatter(locale, status);  // 判断status状态
    int out = formatter.GetPluralFormatter(1, status);  // 判断status状态
    
    output: 1 // 获取单复数六条规则中的第二条规则
    
  5. 提供获取指定区域不同单复数、不同格式对应的度量衡名称的能力。示例如下:
    #include "measure_format.h"
    using namespace OHOS::I18N
    
    LocaleInfo locale("en", "US");  // 获得区域
    int num = 1;  // 度量衡前的数字,如 1h
    std::string unit = "h";  // 度量衡
    I18nStatus status = I18nStatus::ISUCCESS;
    MeasureFormatType type = MeasureFormatType::MEASURE_FULL;  // 指定度量衡格式,包括SHORT、MEDIUM、LONG、FULL四种格式。
    MeasureFormat formatter(locale, status);  // 判断status状态
    std::string unit = formatter.Format(num, unit, status, type); // 获取前置数字1、FULL格式下,度量衡h(小时)的格式化表示。
    
    output: hour
    

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    8595

    浏览量

    151142
  • 鸿蒙
    +关注

    关注

    57

    文章

    2351

    浏览量

    42847
收藏 人收藏

    评论

    相关推荐

    鸿蒙开发接口资源管理:【@ohos.intl (国际化-Intl)】

    Intl模块包含国际化能力基础接口(在ECMA 402中定义)。
    的头像 发表于 06-03 09:28 883次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>接口资源管理:【@ohos.intl (<b class='flag-5'>国际化</b>-Intl)】

    华为的国际化怪圈如何破解

    贝恩资本与华为试图联合收购美国3Com公司,但也是因未通过CFIUS的审查而最终失败,一直在国际化征途上攻城略地的华为,似乎进入了一个怪圈
    发表于 03-25 10:42 1004次阅读

    鸿蒙实战项目开发:【短信服务】

    数据管理 电话服务 分布式应用开发 通知与窗口管理 多媒体技术 安全技能 任务管理 WebGL 国际化开发 应用测试 DFX面向未来设计 鸿蒙系统移植和裁剪定制 …… ​ 《鸿蒙
    发表于 03-03 21:29

    鸿蒙Flutter实战:07混合开发

    # 鸿蒙Flutter实战:混合开发 鸿蒙Flutter混合开发主要有两种形式。 ## 1.基于har 将flutter module
    发表于 10-23 16:00

    Qt多国语言(国际化)问题小结

    的需求,笔者就教学与项目开发中的经历,小结了Qt多国语言(国际化)问题,仅供参考。 假设我们已经建好一个工程,且可以运行出基本的界面。1、打开项目工程文件QTDemo.pro,添加如下语句
    发表于 05-18 10:35

    用OpenHarmony设置zh_CN国际化以后总是报错的原因是什么

    用OpenHarmony [Standard]Empty Ability模板new一个新项目设置zh_CN国际化以后一直提示或在zh_element 的字符串。总是在哪里提示以下错误,或者在下
    发表于 04-19 11:09

    OpenHarmony数据转码应用开发实战(下)

    《OpenHarmony数据转码应用开发实战(中)》我们讲述了核心解转码工具包的实现,以及UI组件数据绑定,那么接下来将讲述项目的国际化适配、调测和发布。2 国际化适配OpenHarm
    发表于 11-10 09:31

    浅议基于JSF的Java国际化编程及其实现

    本文从实际操作的角度,讨论了利用JSF 开发Web 应用程序时实现程序的国际化和本地的方法。提出了解决应用程序国际化的MVC-R 四层框架模型。
    发表于 01-27 13:47 9次下载

    柳传志谈联想国际化:看中目标拐大弯

    柳传志谈联想国际化:看中目标拐大弯 然而,无论从哪个角度来说,联想国际化都是一种必然与必须。按照张瑞敏的说法,“如果不国际化,风险可能更大”。1994年,
    发表于 12-21 17:27 501次阅读

    iOS的国际化功能方便了APP走向国际

    iOS的国际化功能可以使APP很方便的在不同国家的不同语言之间进行切换,大大的方便了APP走向国际国际化的时候主要分为三个方面的国际化:InfoPlist、Xib/Storyboar
    发表于 09-22 19:26 0次下载
    iOS的<b class='flag-5'>国际化</b>功能方便了APP走向<b class='flag-5'>国际</b>

    携安世半导体迈入A股 闻泰科技更加国际化

    闻泰是有国际梦想的公司,我们希望从过去服务中国的品牌,到现在服务全球的品牌,我们也是希望依托安世的国际化,能够让我们闻泰科技也更加国际化
    的头像 发表于 11-15 16:51 2974次阅读

    闻泰科技加速国际化布局,印度分公司正式开业

    闻泰印度产品印度造,是闻泰科技加速走向国际化的重要战略。
    的头像 发表于 05-29 14:04 5317次阅读

    中科创达荣获2019年京交会“国际化战略服务示范”奖项

    近日,在2019年中国国际服务贸易交易会上, 凭借稳定的国际化经营战略和优秀的智能驾驶舱解决方案平台,中科创达荣获2019年京交会“国际化战略服务示范”奖项。
    的头像 发表于 06-05 13:50 3010次阅读

    剑指国际化,谁能抢滩新大陆?

    这次在央视还曾讨论国际化的议题,当时还不出名的拼多多创始人黄峥作为嘉宾,建议张一鸣更加激进的做国际化:“当你整个公司布局到全球,并且反过来用全球的资源,集中回来打中国市场的时候,会更加从容一些。”
    的头像 发表于 06-18 15:58 4511次阅读

    国际化测试和本地测试的特点和区别

    软件的国际化和软件的本地开发面向全球不同地区用户使用的软件系统的两个过程。而本地测试和国际化测试则是针对这类软件产品进行的测试。由于软
    的头像 发表于 06-29 11:29 5284次阅读