kanzi3.6.10动态加载和替换多语言方案

背景:kanzi项目中需要动态加载多语言,轻量升级,替换旧的语言包

1. 动态加载多语言

kanzi提供了本地化方案,通过Localization Table实现多语言切换。

每一组多语言支持单独kzb导出,方便独立加载。

1.1 导出kzb

官方案例Localization中,点一下标题的kzb图标,变蓝色,导出kzb时候,会把这一列多语言单独导出kzb

1.2 动态加载kzb语言包

官方案例Localization中也给出了代码,核心代码

c 复制代码
getResourceManager()->addKzbFile("Locale_packs/xx.kzb");

2. 轻量升级,替换旧的语言包

场景:旧的语言包翻译有错误,需要修正,因为程序已经加载了旧的语言包,需要加载新语言包,通过更新方式替换旧的翻译。

2.1 导出kzb

这里模拟导出汉语包1,汉语包2

界面如下

  • 按钮【简体1】,替换汉语包1
  • 按钮【简体2】,替换汉语包2

2.2 动态加载语言包,更新语言包

c 复制代码
{
  getResourceManager()->addKzbFile("Locale_packs/zh-HansX.kzb");

  ResourceDictionarySharedPtr localeDictionary = getResourceManager()->acquireResource<ResourceDictionary>("kzb://multilanguage/Locales/zh-Hans");
  ResourceDictionarySharedPtr localeDictionary2 = getResourceManager()->acquireResource<ResourceDictionary>("kzb://multilanguage/Locales/zh-HansX");
  localeDictionary->merge(*localeDictionary2);
}

解释

  1. addKzbFile加载新的kzb
  2. kzb内容如下,所以资源字典的路径是"kzb://multilanguage/Locales/zh-HansX"
  3. 通过资源字典的merge方法,更新新语言包

3. 效果

相关推荐
王老师青少年编程3 小时前
gesp(C++五级)(14)洛谷:B4071:[GESP202412 五级] 武器强化
开发语言·c++·算法·gesp·csp·信奥赛
DogDaoDao3 小时前
leetcode 面试经典 150 题:有效的括号
c++·算法·leetcode·面试··stack·有效的括号
一只小bit4 小时前
C++之初识模版
开发语言·c++
CodeClimb5 小时前
【华为OD-E卷 - 第k个排列 100分(python、java、c++、js、c)】
java·javascript·c++·python·华为od
apz_end6 小时前
埃氏算法C++实现: 快速输出质数( 素数 )
开发语言·c++·算法·埃氏算法
仟濹6 小时前
【贪心算法】洛谷P1106 - 删数问题
c语言·c++·算法·贪心算法
北顾南栀倾寒7 小时前
[Qt]系统相关-网络编程-TCP、UDP、HTTP协议
开发语言·网络·c++·qt·tcp/ip·http·udp
old_power8 小时前
【PCL】Segmentation 模块—— 基于图割算法的点云分割(Min-Cut Based Segmentation)
c++·算法·计算机视觉·3d
涛ing8 小时前
21. C语言 `typedef`:类型重命名
linux·c语言·开发语言·c++·vscode·算法·visual studio
PaLu-LI9 小时前
ORB-SLAM2源码学习:Initializer.cc⑧: Initializer::CheckRT检验三角化结果
c++·人工智能·opencv·学习·ubuntu·计算机视觉