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

    文章

    7640

    浏览量

    148496
  • 鸿蒙
    +关注

    关注

    55

    文章

    1630

    浏览量

    42120
收藏 人收藏

    评论

    相关推荐

    1月18号“纯鸿蒙”千帆启航,程序员预备!

    8.安全技能 9.任务管理 10.WebGL 11.国际化开发 12.应用测试 13.DFX面向未来设计 14.鸿蒙系统移植和裁剪定制 15…… 《鸿蒙进阶实战》http://qr
    发表于 01-16 22:13

    鸿蒙这么大声势,为何迟迟看不见岗位?最新数据来了

    管理 多媒体技术 安全技能 任务管理 WebGL 国际化开发 应用测试 DFX面向未来设计 鸿蒙系统移植和裁剪定制 …… 《鸿蒙开发实战
    发表于 02-29 20:53

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

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

    应用开发国际化(1)#硬声创作季

    移动开发
    学习电子
    发布于 :2022年12月29日 08:09:42

    应用开发国际化(2)#硬声创作季

    移动开发
    学习电子
    发布于 :2022年12月29日 08:10:07

    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

    《HarmonyOS原子服务卡片原理与实战》清华大学出版社李洋著

    对原子服务未来发展的展望;继续努力体验与成长,持续奋斗。本书主要阐述鸿蒙操作系统( HarmonyOS )应用开发中全新的服务形式,原子服务与服务卡片技术发展的必然趋势、运行的基本
    发表于 12-29 12:14

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

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

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

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

    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 2782次阅读

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

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

    华为开发者大会分论坛HarmonyOS测试技术与实战-鸿蒙智联认证生态设备测试挑战

    HDC 2021华为开发者大会分论坛HarmonyOS测试技术与实战-鸿蒙智联认证生态设备测试挑战
    的头像 发表于 10-23 16:40 1526次阅读
    华为<b class='flag-5'>开发</b>者大会分论坛HarmonyOS测试技术与<b class='flag-5'>实战</b>-<b class='flag-5'>鸿蒙</b>智联认证生态设备测试挑战