【最新鸿蒙应用开发】——鸿蒙国际化

1. 国际化

鸿蒙应用开发的国际化主要是指让应用支持多种语言和适应不同地区的用户习惯。这包括对不同语言环境的支持,如文本和布局的本地化设置。要实现国际化,开发者需要准备应用程序支持的每种语言环境的一些资源,比如翻译后的文本、特定区域的图像等。

在鸿蒙OS中,国际化的实现主要依赖于两套API:IntlI18n

  1. Intl模块:这个模块提供符合ECMA 402标准的基础国际化功能,如日期时间格式化、数字格式化等。这些功能可以帮助应用根据用户的语言和地区设置来显示相应的格式。

  2. I18n模块:这个模块提供鸿蒙OS特有的国际化功能,以及对ECMA 402标准的补充,例如区域管理、电话号码处理等。这些功能与Intl模块结合使用,可以提供更完整的国际化支持能力。

在具体操作上,开发者需要在应用的资源目录下为每种语言创建相应的文件夹和资源文件。例如,对于中文,可以在resources目录下创建zh文件夹,并在该文件夹中添加对应的类别文件,如string.json。然后,在代码中通过特定的方法来引用这些资源,以实现多语言支持。

例如,在ArkUI开发框架中,可以通过在index.ets文件中使用$r("app.string.calculator")的方式来引用多语言资源。在i18nintl模块中,可以使用如i18n.getSystemLanguage()来获取设备系统语言,或者使用intl.DateTimeFormat来进行日期时间的格式化。

总的来说,鸿蒙应用开发的国际化是一个涉及多方面技术和步骤的过程,包括资源文件的配置、API的使用,以及代码中对这些资源的正确引用。通过这些步骤,开发者可以为不同语言环境的用户提供更好的用户体验。

1.1. @ohos.i18n (国际化-I18n)

本模块提供系统相关的或者增强的国际化能力,包括区域管理、电话号码处理、日历等,相关接口为ECMA 402标准中未定义的补充接口。Intl模块提供了ECMA 402标准定义的基础国际化接口,与本模块共同使用可提供完整地国际化支持能力。

导入模块

import I18n from '@ohos.i18n';

System9+

getDisplayCountry9+

static getDisplayCountry(country: string, locale: string, sentenceCase?: boolean): string

获取指定国家的本地化显示文本。

系统能力:SystemCapability.Global.I18n

参数:

参数名类型必填说明
countrystring指定国家。
localestring显示指定国家的区域ID。
sentenceCaseboolean本地化显示文本是否要首字母大写。默认值:true。

示例:

import { BusinessError } from '@ohos.base';try {let displayCountry: string = I18n.System.getDisplayCountry("zh-CN", "en-GB"); // displayCountry = "China"
} catch (error) {let err: BusinessError = error as BusinessError;console.error(`call System.getDisplayCountry failed, error code: ${err.code}, message: ${err.message}.`);
}

1.2. @ohos.intl (国际化-Intl)

本模块提供基础的应用国际化能力,包括时间日期格式化、数字格式化、排序等,相关接口在ECMA 402标准中定义。

I18N模块提供其他非ECMA 402定义的国际化接口,与本模块共同使用可提供完整地国际化支持能力。

说明

  • 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

  • Intl模块包含国际化能力基础接口(在ECMA 402中定义),包括时间日期格式化、数字格式化、排序等,国际化增强能力请参考I18N模块。

  • 从API version 11开始,本模块部分接口支持在ArkTS卡片中使用。

导入模块

import Intl from '@ohos.intl';

Locale

属性

卡片能力:从API version 11开始,该接口支持在ArkTS卡片中使用。

系统能力:SystemCapability.Global.I18n

名称类型必填说明
languagestring与区域设置相关的语言,如:zh。
scriptstring语言的书写方式,如:Hans。
regionstring与区域设置相关的地区,如:CN。
baseNamestringLocale的基本核心信息(由语言脚本与地区组成),如:zh-Hans-CN。
caseFirststring区域的整理规则是否考虑大小写,取值包括:"upper", "lower", "false"。
calendarstring区域的日历信息,取值包括:"buddhist", "chinese", "coptic","dangi", "ethioaa", "ethiopic", "gregory", "hebrew", "indian", "islamic", "islamic-umalqura", "islamic-tbla", "islamic-civil", "islamic-rgsa", "iso8601", "japanese", "persian", "roc", "islamicc"。
collationstring区域的排序规则,取值包括:"big5han", "compat", "dict", "direct", "ducet", "eor", "gb2312", "phonebk", "phonetic", "pinyin", "reformed", "searchjl", "stroke", "trad", "unihan", "zhuyin"。
hourCyclestring区域的时制信息,取值包括:"h12", "h23", "h11", "h24"。
numberingSystemstring区域使用的数字系统,取值包括:"adlm", "ahom", "arab", "arabext", "bali", "beng", "bhks", "brah", "cakm", "cham", "deva", "diak", "fullwide", "gong", "gonm", "gujr", "guru", "hanidec", "hmng", "hmnp", "java", "kali", "khmr", "knda", "lana", "lanatham", "laoo", "latn", "lepc", "limb", "mathbold", "mathdbl", "mathmono", "mathsanb", "mathsans", "mlym", "modi", "mong", "mroo", "mtei", "mymr", "mymrshan", "mymrtlng", "newa", "nkoo", "olck", "orya", "osma", "rohg", "saur", "segment", "shrd", "sind", "sinh", "sora", "sund", "takr", "talu", "tamldec", "telu", "thai", "tibt", "tirh", "vaii", "wara", "wcho"。
numericboolean是否对数字字符具有特殊的排序规则处理。默认值:false。

constructor8+

constructor()

创建区域对象

示例:

// 默认构造函数使用系统当前locale创建Locale对象
let locale = new Intl.Locale();
// 返回系统当前locale
let localeID = locale.toString();

constructor

constructor(locale: string, options?: LocaleOptions)

创建区域对象

参数:

参数名类型必填说明
localestring区域信息的字符串,由语言、脚本、国家或地区组成。
optionsLocaleOptions用于创建区域对象的选项。

示例:

// 创建 "zh-CN" Locale对象
let locale = new Intl.Locale("zh-CN");
let localeID = locale.toString(); // localeID = "zh-CN"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/37442.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

理解论文笔记:基于贝叶斯网络和最大期望算法的可维护性研究

看了与上一篇研究方向一致的文章,上一篇19年的,这一篇22年的更新。若有侵权,请联系删除。 I. INTRODUCTION 介绍 主要介绍了使用贝叶斯网络和历史数据对无线传感器网络可维护性研究的重要性和必要性,并对下面的各章进行了…

【高性能服务器】单进程服务器

🔥博客主页: 我要成为C领域大神🎥系列专栏:【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ 单进程服务器 …

深入解析MSE在深度学习回归中的双重角色-损失函数-评价指标

深入解析MSE在深度学习回归中的双重角色 在深度学习特别是回归任务中,均方误差(Mean Squared Error, MSE)是一种广泛使用的方法,既可作为损失函数也可作为评价指标。这种使用方式可能会引起一些疑问:作为损失函数和评…

认识100种电路之稳压电路

在电子电路中,稳压电路扮演着至关重要的角色。那么,为什么电路需要稳压?稳压的原理又是什么?以及稳压需要用到哪些元器件,数量又有多少呢?今天,就让我们一同揭开稳压电路的神秘面纱。 【电路为什…

Apple Final Cut Pro 10.8 - 专业后期制作 (视频编辑)

Apple Final Cut Pro 10.8 - 专业后期制作 (视频编辑) Final Cut Pro 10.8 Compressor 4.8 Motion 5.8 (Universal) 请访问原文链接:https://sysin.org/blog/apple-final-cut-pro/,查看最新版。原创作品,转载请保留出处。 作者主页&…

供应商关系管理(SRM)中的供应商绩效评估

供应商绩效评估是供应商关系管理(SRM)的核心组成部分,它涉及到对供应商在合作过程中的表现进行全面的分析和评价。一个有效的供应商绩效评估系统不仅可以帮助企业识别和解决供应链中的潜在问题,还可以促进供应商的持续改进和优化&…

7.javaSE基础进阶_设计模式和代理模式(静态代理JDK和动态代理CGLIB)

文章目录 一.设计模式1.简介1)设计模式基本要素2)设计模式的分类1.模式依据其目的可分为:2.第二是范围准则3.创建模式4.结构模式5、行为模式 2.工厂模式1)定义2)结构3)创建工厂 3.单例(Singleton)模式1)定义2)应用3)分类1.饿汉式EngerSingLeton2.懒汉式LazySingLeto…

Java学习 - Redis缓存问题与优化

缓存收益与成本 收益 加速读写降低后端、持久层的负载和压力 成本 可能导致数据不一致代码运维成本redis节点运维成本 缓存更新策略 策略一致性维护成本介绍LRU/LIRS算法剔除最差底剔除最近最少使用的数据超时剔除较差底定时删除、惰性删除主动更新最好高持久层更新&#x…

监控 Promethus的监控告警Alertmanager、Grafana

Promethus的监控告警Alertmanager Alertmanager 介绍 Prometheus的一个组件,用于定义和发送告警通知,内置多种第三方告警通知方式,同时还提供了对Webhook通知的支持基于警报规则对规则产生的警报进行分组、抑制和路由,并把告警发…

深入了解Spring框架的模块组成

目录 Spring CoreSpring ContextSpring AOPSpring DAOSpring ORMSpring WebSpring MVCSpring WebFluxSpring TestSpring BootSpring SecuritySpring BatchSpring IntegrationSpring Cloud结论 Spring Core 1.1 核心容器 Spring Core模块是整个Spring框架的基础。它包含了框架…

vue如何引入图标

方法1&#xff1a;iconify/vue pnpm add iconify/vue -D 网址&#xff1a;https://icon-sets.iconify.design/ 使用哪个需要安装 如下截图,安装指令&#xff1a; > npm install iconify/icons-gg在使用的页面引入 import { Icon } from “iconify/vue”; <template>…

Mysql存储过程用法:使用存储过程编程,来判断数据库中数据表中的字段是否重复,避免重复插入记录

目录 一、mysql的存储过程介绍 二、. 创建存储过程 1、准备 2、创建插入记录的存储过程 三. 调用存储过程 四. 删除存储过程 五. 修改存储过程&#xff0c;避免数据表的姓名出现重复 1、修改存储过程的方式 2、重新创建存储过程 六. 验证新的存储过程 1、插入新的记…

高考后的抉择:专业优先还是学校优先?

随着2024年高考的帷幕落下&#xff0c;高考生们面临的一个重要抉择再度浮上心头&#xff1a;在分数受限的情况下&#xff0c;是选择一个心仪的专业&#xff0c;还是选择一个知名度更高的学校&#xff1f;这是一个困扰了众多考生和家长的长期难题。在这个关键的时刻&#xff0c;…

好用的导航网站有哪些

网址导航网站是我们日常上网的一个重要工具。它们不仅可以帮助我们快速找到所需的资源和信息&#xff0c;还能提高我们的工作效率。以下是小编收藏的几个好用的导航网站&#xff0c;涵盖了办公、学习、娱乐等多个领域&#xff0c;分享给大家。 1. 办公人导航 办公人导航是一个…

Drag Select Compose:实现多平台图片多选功能的利器

Drag Select Compose:实现多平台图片多选功能的利器 在现代移动应用开发中,图片多选功能是一个常见且实用的需求。而实现这种功能可能涉及到复杂的手势处理和状态管理。今天,我将介绍一款强大的Compose多平台库——Drag Select Compose,它能够轻松实现类似于Google Photos…

【鸿蒙】第2天・装饰器・组件和页面生命周期

背景知识 &#xff11;・ArkTS 拓展了 TypeScript&#xff0c;TypeScript 拓展了 JavaScript。 增加了一些约束。 &#xff12;・ArkTS 是声明式编程。 构建对象时类似构建者设计模式。链式赋值。 装饰器 &#xff20;Component 自定义组件 Component装饰器仅能装饰str…

BGP中的TCP连接源地址问题

3.TCP连接源地址&#xff08;用loop back地址是最优选择&#xff09; 应用场景与理论&#xff1a; 由于BGP应用于大型网络中&#xff0c;为了避免单点失败&#xff0c;往往需要通过多条链路连接&#xff0c;当一条链路故障时候就用另一条链路继续工作&#xff0c;但是BGP又无法…

为何重要?解析企业实行网络安全等级保护的必要性

在全球信息化迅速发展的背景下&#xff0c;企业数据资产成为核心竞争力的重要组成部分。然而&#xff0c;随之而来的网络安全威胁亦日益严峻&#xff0c;从数据泄露到勒索软件攻击&#xff0c;每一次安全事件都可能给企业带来不可估量的损失。在此情境下&#xff0c;实行网络安…

Java IO: 使用 FileReader 和 FileWriter 进行文件操作

在 Java 中&#xff0c;进行文件操作是一个常见的任务。FileReader 和 FileWriter 是用于读取和写入文本文件的类&#xff0c;它们提供了一种方便的方法来处理文件内容。本文将介绍如何使用 FileReader 和 FileWriter&#xff0c;并提供一些示例代码。 FileReader 类概述 Fil…

使用PHP创建一个简单的Web爬虫

随着互联网的不断发展&#xff0c;信息的获取变得越来越方便。然而&#xff0c;海量的信息也给我们带来了很多的烦恼&#xff0c;如何高效地获取到我们所需要的信息就成了一项非常重要的任务。在实现自动化获取信息的过程中&#xff0c;web爬虫被广泛应用。 Web爬虫是一种自动…