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列表中查找。
热门推荐
“天龙三号”试车意外坠毁,都有哪些突破与遗憾?
天龙三号事故复盘:商业航天“卷”起来没错,但也要好好反思
中国卫生系统从业者薪资受哪些因素影响?
深入解读云服务器成本:拆分每月的开销
茶花扦插繁殖完全指南:15个关键步骤助你轻松生根
茶花如何繁殖,可扦插也可靠接
深圳中学开设量子计算选修课程:从零构建创新人才培养体系
第五人格守夜人技能详解及前锋时装获取攻略
导弹拦截是怎么拦截的
如何发布Web网站模板
鸭屎香熟茶与清香型茶叶的全方位对比与特点解析
《哪吒3》剧情猜想:孙悟空登场?殷夫人复活?申公豹……
利用普洱茶渣改善土壤,为花卉提供养分的技巧
茶叶渣这样处理就是优质肥料,这些花卉都适用
原神5.1版本九大顶级阵容解析:输出效率大幅提升
湿气重的辨证及中成药
电子烟危害小吗?它对身体的伤害,可能超出你的想象!
电子烟的健康风险与使用注意事项解析
金铲铲阵容推荐最新版本最强,金铲铲最新版最强阵容推荐
妈祖石像在不同地区的风格差异
电脑怎么截图全屏?7种实用方法让你快速掌握
《这城有良田》史话S1赛季阵容大推荐:花木兰系列
女子在起风天睁不开眼 原来是睑板腺功能障碍
南京公务员考试难度大揭秘!
桑托斯主帅:伤停近两年后,内马尔还需要时间找回比赛节奏
没有白等三年!还是那个很燃的雄狮少年
月季扦插枝条选择指南
猴王茶各个级别的特点和鉴方法,哪个级别最适合自己?
电鸡之困破解了吗?广州还能出啥大招?
如何确定产假的开始时间?