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

相关推荐
计算机安禾5 小时前
【c++面向对象编程】第32篇:移动语义与右值引用:现代C++性能优化核心
java·c++·性能优化
fish_xk5 小时前
c++11的初见
开发语言·c++·算法
不知名的老吴6 小时前
C++ 中函数对象的形式概述
开发语言·c++
Shan12056 小时前
C++中函数对象之重载 operator()
开发语言·c++·算法
djarmy6 小时前
一级函数头地址指针,(*p_func)的函数头的返回值,(*p_func)的函数头的参数列表
c++
小明同学016 小时前
C++后端项目:统一大模型接入 SDK(一)
linux·c++·chatgpt
林夕076 小时前
Qt 6.x 新特性概览:从 Qt 5 到 Qt 6 的升级之路
c++·qt6·跨平台开发
basketball6167 小时前
C++ 强制类型转换:从 C 风格到 C++ 四大金刚
java·c语言·c++
无限进步_7 小时前
C++11概览与统一初始化
开发语言·c++
吃着火锅x唱着歌7 小时前
深度探索C++对象模型 学习笔记 第五章 构造、解构、拷贝语意学(1)
c++·笔记·学习