HarmonyOS应用实现APP国际化多语言切换
创作时间:
作者:
@小白创作中心
HarmonyOS应用实现APP国际化多语言切换
引用
CSDN
1.
https://blog.csdn.net/superherowupan/article/details/143157080
在移动应用开发中,国际化(i18n)是一个重要的功能,它能让应用支持多种语言,从而覆盖更广泛的用户群体。本文将详细介绍如何在HarmonyOS中实现应用的多语言切换,包括跟随系统语言切换和应用独立语言切换两种方式。
前言
在鸿蒙系统中实现应用国际化处理,与Android和iOS的基本原理相似,都是通过JSON配置不同的语言文本内容。在UI展示时,使用JSON配置的字段key进行调用,系统会根据当前语言环境选择对应的文本内容。
跟随系统多语言切换
最常见的处理方式是配置不同语言的JSON文件。以中英文为例:
- 首先需要在资源文件对应的语言JSON文本字符串配置表中,进行key和value的配置:
zh_CN
代表中文en_US
代表英文base-element
中的string.json
是默认配置,必须填写。如果创建了对应语言文件夹但未在默认配置中填写对应字段节点,系统会报错。
配置好字段文本内容后,在UI中引用即可:
$r("app.string.xxx"); 例如: $r("app.string.test_content");
创建语言资源文件夹
在资源文件夹
resources
右键,选择新增资源文件夹:在弹出的对话框中选择
Locale
,点击右侧按钮,显示语言和地区:以英语为例,在语言列表中使用英文输入法可以触发筛选搜索框,选择对应的语言和地区,点击OK即可生成。
APP独立多语言切换
当需要APP应用的语言独立于系统设置时,可以通过设置应用优先语言来实现。例如,系统语言是中文,但应用需要显示英文。
try {
i18n.System.setAppPreferredLanguage("zh"); // 设置应用偏好语言为zh-Hans
} catch(error) {
let err: BusinessError = error as BusinessError;
console.error(`call System.setAppPreferredLanguage zh failed, error code: ${err.code}, message: ${err.message}.`);
}
DEMO示例
启动页测试代码:
import { i18n } from '@kit.LocalizationKit';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct Index {
@State message: string | Resource = $r("app.string.test_content");
build() {
Column() {
Text(this.message).fontSize(50)
Text("切换中文").fontSize(50)
.onClick(()=>{
// 设置语言偏好
try {
i18n.System.setAppPreferredLanguage("zh"); // 设置应用偏好语言为zh-Hans
} catch(error) {
let err: BusinessError = error as BusinessError;
console.error(`call System.setAppPreferredLanguage zh failed, error code: ${err.code}, message: ${err.message}.`);
}
})
Text("切换英文").fontSize(50)
.onClick(()=>{
// 设置语言偏好
try {
i18n.System.setAppPreferredLanguage("en");
} catch(error) {
let err: BusinessError = error as BusinessError;
console.error(`call System.setAppPreferredLanguage en failed, error code: ${err.code}, message: ${err.message}.`);
}
})
}
.height('100%')
.width('100%')
}
}
英文配置
{
"string": [
{
"name": "module_desc",
"value": "module description"
},
{
"name": "EntryAbility_desc",
"value": "description"
},
{
"name": "EntryAbility_label",
"value": "label"
},
{
"name": "test_content",
"value": "English"
}
]
}
中文配置
{
"string": [
{
"name": "module_desc",
"value": "模块描述"
},
{
"name": "EntryAbility_desc",
"value": "描述"
},
{
"name": "EntryAbility_label",
"value": "标签"
},
{
"name": "test_content",
"value": "中文"
}
]
}
默认配置
{
"string": [
{
"name": "module_desc",
"value": "模块描述"
},
{
"name": "EntryAbility_desc",
"value": "描述"
},
{
"name": "EntryAbility_label",
"value": "标签"
},
{
"name": "test_content",
"value": "中文"
}
]
}
多语言国际化国家ID列表
更多语言ID可以在【有道云笔记】国家ID列表中查找。
热门推荐
一个家庭有多少钱才算是中产?银行行长:4个条件满足一个即可
高铁上可以带酒吗?最新规定来了
股票热点是什么?如何把握股票热点?
年轻人搜索购买褪黑素,临床上不建议自行服用
大锅饭劳动报酬制度:探究其过去、现在与未来
来徽州,必看非遗鱼灯
房产备案登记如何撤回?全流程指南来了
你好,植树节!
租厨房当卧室是否违法?法律解读与风险分析
PPI是什么意思?屏幕PPI计算方法详解
非遗鱼灯,你见过吗
威士忌和白兰地有什么区别?两大蒸馏酒巨头,究竟有何不同?
开放式厨房为何不能通燃气?怎样的厨房门,才符合通气标准?
数学伪命题伪证:揭示其本质与法律责任
每天做梦正常吗?从睡眠周期到大脑功能的全面解析
如何去除马桶上的霉点?这些霉点的形成与哪些因素有关?
如何选择 ETF 的投资主题?不同主题的 ETF 有何特点和风险?
风廓线应用在风力资源评估中的实践:数据处理与分析案例
供应不足致房价下降,东京2025年将推2万套新房
地球变雪球?史前极端气候真相
脚臭怎么办?脚臭原因分析及5个实用解决方案
智慧分类引领低碳新风尚 宁波又一批智能回收箱“上岗”
家有“小鼻敏感星人”?冬季抗敏秘籍来啦!
二孩"随母姓",你赞成吗?厦门多孩家庭姓氏愈加多元化
黄金消费投资需求升温丨“五一”假期消费市场热点
祁阳:数字技术让浯溪摩崖石刻焕发新生
海风藤的功效与作用
CentOS 7.9 配置VNC Server实现远程VNC连接
怀孕期间去医院要携带哪些文档?
加拿大成绩申请香港大学