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列表中查找。
热门推荐
神话故事改编为何经久不息?|文艺评论
怎么用Obsidian高效实现卡片笔记法?
人类为何没有尾巴?这个跳跃基因抹去了人类的尾巴
如何区分宝马是几系的
鱼缸消毒杀菌用什么药好?这些药物特点和使用注意事项请收好
70多岁老人腿疼得厉害怎么办
1月的物价指数如何?
DeepSeek是“最强婚恋军师”?与其迷信不如理性
中国楼梯产业未来5个发展趋势
牛肉干上的白点是什么?牛肉干会变质吗?
揭秘凶杀案破案技巧:从现场勘查到公众参与
特殊批次线与一本线对比:2024年全国各省高考录取分数线全解析
怎样知道高速是否堵车更及时?这种了解方式的及时性怎样保证?
星际争霸2国服回归时间表最新消息-玩家期待已久的回归日程揭晓
如何寻找一家专业靠谱的代账公司?
新能源汽车直流快充原理与维修详解
酷炫航模飞手飞行技术详解
双人舞蹈成功的秘诀:如何培养至关重要的默契感
健康减肥,选择营养素密度适中的食物是关键
除夕年夜饭,提前做好6道“硬菜”放冰箱,想吃就拿,方便省事
八字命理中的“调候”:平衡五行的关键方法
掌控急事:慢思考的力量
金领金刚鹦鹉的饲养方法(宠物金刚鹦鹉怎样护理才健康快乐)
算命怎么合法?算命的人是如何算命的?
市场热议“游资被量化精准收割”,数据告诉你这个可能性有多大?
探索古代刀的起源与发展
佛说人生有八苦?八苦有哪些?如何才能去除痛苦,获得快乐?
Go语言上下文(context)包:处理取消与超时
历史探秘:清军为何要和明朝死磕山海关?绕道不行吗?
玉桂狗简笔画教程:7步画出可爱的大耳狗