QML程序实现动态切换多语言(ListModel/ListElement中的文本的多语言处理)

Posted Fu_Lin_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QML程序实现动态切换多语言(ListModel/ListElement中的文本的多语言处理)相关的知识,希望对你有一定的参考价值。

前言

Qt程序中实现多语言有Qt自己的一套机制,然而在Qt5.9版本下该机制无法在程序运行期间动态切换语言。本文向大家介绍一种切实可行的walkaround方法,在Qt5.10+以上版本可以自由在程序运行期间动态切换语言。同时支持对普通文本以及在 ListModel/ListElement 中的文本的多语言处理。

回顾Qt多语言机制

Qt自身的多语言机制分下面几个步骤:

  1. 在源码中用QObject::tr()(C++)或者qsTr()(QML)将字符串包起来;
  2. 用Qt自带的lupdate生成.ts文件;
  3. 用linguist工具翻译并发布为.qm文件;
  4. 程序刚启动还未加载任何界面元素之前,根据某些规则加载对应的.qm文件即可实现显示对应的语言的效果。

之所以Qt5.9及以下 该机制不支持动态加载语言就在于第四步。该步骤核心代码是:

QTranslator translator

以上是关于QML程序实现动态切换多语言(ListModel/ListElement中的文本的多语言处理)的主要内容,如果未能解决你的问题,请参考以下文章

wpf 多语言对应 切换了 dll后 如何刷新窗体(window)

qml中英文切换部分不能切换

Qt系列文章之三十九(Qt多语言国际化程序实例设计实现)

Qt系列文章之三十九(Qt多语言国际化程序实例设计实现)

如何使用 QML (Qt5.3) for Windows 8.1 RT 创建多语言应用程序?

DotNetCore 3.0 助力 WPF本地化