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

相关推荐
序属秋秋秋13 小时前
《Linux系统编程之进程控制》【进程创建 + 进程终止】
linux·c语言·c++·操作系统·进程·进程创建·进程终止
上天_去_做颗惺星 EVE_BLUE14 小时前
C++学习:学生成绩管理系统
c语言·开发语言·数据结构·c++·学习
John_ToDebug14 小时前
Chromium WebUI 定制实践:从 C++ 注入到 JS 安全展示全链路解析
javascript·c++·chrome
水饺编程14 小时前
开源项目介绍:VirtuaNES 模拟器
c语言·c++·windows·visual studio
十五年专注C++开发14 小时前
CMake进阶:find_package使用总结
开发语言·c++·cmake·跨平台编译
闻缺陷则喜何志丹14 小时前
【计算几何】平面凸包
c++·数学·扫描线·凸包·单调性·上凸包·下凸包
-To be number.wan15 小时前
C++ 运算符重载入门:让“+”也能为自定义类型服务!
开发语言·c++
汉克老师15 小时前
GESP2025年12月认证C++一级真题与解析(编程题1 (小杨的爱心快递))
c++·数据类型·选择结构·格式输出
天赐学c语言15 小时前
12.30 - 合并区间 && C++中class和C语言中struct的区别
c语言·c++·算法·leecode
陳103015 小时前
C++:vector(1)
开发语言·c++