本文共 1842 字,大约阅读时间需要 6 分钟。
Qt强的的功能之一就是支持多语言切换,本文主要介绍如何去支持多语言开发。
Qt多语言开发主要流程如下:1、Qt tr()和qsTr()标记待翻译字符串2、Pro文件中,添加生成ts的代码3、Qt语言专家更新ts文件4、Qt语言专家打开ts文件,填写对应的翻译5、Qt语言专家将翻译后的ts文件生成qm文件6、QTranslator加载qm语言文件7、qApp->installTranslator() 安装语言文件
Qt代码包括c++代码和qml代码,不同风格的代码标记字符串的函数不同。C++代码中,使用tr()函数标记字符串;QML代码中,使用qsTr()函数。具体使用方法如下:
C++代码:
int ShowConnectState(){ ui->label->setText(tr("Wired device is disconnected")); return 0;}或者int ShowConnectState(){ QString showInfo = tr("Wired device is disconnected"); ui->label->setText(showInfo); return 0;}
qml代码:
Text { id: stringInfo text: isChinese ? qsTr("Chinese") : qsTr("English") color: "black" anchors.fill: parent horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter font.bold: true font.pixelSize: 30}
TRANSLATIONS = language_zh_EN.ts \ language_zh_CN.ts
在pro文件最后面添加上面两行命令,重新编译运行,会自动生成上面的两个ts文件。其中EN代表英文,CN代表中文。如果有其他国家,建议新增其他国家的ts文件。
Qt语言专家是Qt自带的一种软件工具,在安装QtCreator时就默认已经安装了,下面从windows和linux两个平台教大家运行语言专家:
打开命令行,输入lin然后tab键自动补全,会出现linguist,然后回车会自动打开语言专家。
root@Xubuntu18:~$ linguist
然后File->open,选择要打开的ts文件
在windows平台,推荐大家使用everything工具去搜索,下面给出常用软件的连接:
用everything搜索“linguist”,单机打开对应的exe,注意下你用的是64位编译还是32位编译。
左侧栏是对应的文件,字符串栏对应识别出来的字符串
选择原文字符串,然后在下面填写对应的翻译
翻译成功后,单机原文的❓,让其变成√
将所有的文件中的字符串翻译完成后保存,并关闭ts文件。在main函数中,加载qm文件
QTranslator translator;if (translator.load(":/language/language_zh_CN.qm")) { qApp->installTranslator(&translator);}
初始化完成后会显示当前加载的语言。
动态切换语言,例如页面有一个切换语言的按钮,触发按钮后,如何刷新所有的语言?下面分两部分来介绍。
7.1、 QWidget 刷新语言 每个Widget窗口或页面都需要通过UI 调用命令:ui->retranslateUi(this);
7.2、 QML刷新语言
engine->retranslate();
关于qml刷新,详情可以看
转载地址:http://qxuun.baihongyu.com/