QML程序实现动态切换多语言(ListModel/ListElement中的文本的多语言处理)
Posted Fu_Lin_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QML程序实现动态切换多语言(ListModel/ListElement中的文本的多语言处理)相关的知识,希望对你有一定的参考价值。
前言
Qt程序中实现多语言有Qt自己的一套机制,然而在Qt5.9版本下该机制无法在程序运行期间动态切换语言。本文向大家介绍一种切实可行的walkaround方法,在Qt5.10+以上版本可以自由在程序运行期间动态切换语言。同时支持对普通文本以及在 ListModel/ListElement 中的文本的多语言处理。
回顾Qt多语言机制
Qt自身的多语言机制分下面几个步骤:
- 在源码中用QObject::tr()(C++)或者qsTr()(QML)将字符串包起来;
- 用Qt自带的lupdate生成.ts文件;
- 用linguist工具翻译并发布为.qm文件;
- 程序刚启动还未加载任何界面元素之前,根据某些规则加载对应的.qm文件即可实现显示对应的语言的效果。
之所以Qt5.9及以下 该机制不支持动态加载语言就在于第四步。该步骤核心代码是:
QTranslator translator
以上是关于QML程序实现动态切换多语言(ListModel/ListElement中的文本的多语言处理)的主要内容,如果未能解决你的问题,请参考以下文章
wpf 多语言对应 切换了 dll后 如何刷新窗体(window)