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. 效果

相关推荐
顾温6 小时前
default——C#/C++
java·c++·c#
凉茶钱6 小时前
【c语言】动态内存管理:malloc,calloc,realloc,柔性数组
c语言·c++·vscode·柔性数组
脏脏a6 小时前
【C++模版】泛型编程:代码复用的终极利器
开发语言·c++·c++模版
island13146 小时前
【C++仿Muduo库#3】Server 服务器模块实现上
服务器·开发语言·c++
散峰而望6 小时前
【算法竞赛】C/C++ 的输入输出你真的玩会了吗?
c语言·开发语言·数据结构·c++·算法·github
小龙报6 小时前
【C语言】内存里的 “数字变形记”:整数三码、大小端与浮点数存储真相
c语言·开发语言·c++·创业创新·学习方法·visual studio
刃神太酷啦6 小时前
扒透 STL 底层!map/set 如何封装红黑树?迭代器逻辑 + 键值限制全手撕----《Hello C++ Wrold!》(23)--(C/C++)
java·c语言·javascript·数据结构·c++·算法·leetcode
2301_789015626 小时前
C++:继承
c语言·开发语言·c++
星河耀银海7 小时前
C++ 运算符重载:自定义类型的运算扩展
android·java·c++
feng_blog66887 小时前
C++线程池|解决死锁、崩溃、丢任务所有痛点
java·开发语言·c++