Qt实现多国语言切换

网友投稿 1216 2022-09-06

Qt实现多国语言切换

Qt实现多国语言切换

新建项目

要想进行翻译的文字必须用tr()进行包裹,ui界面中的文字有设置是否进行翻译的选项,默认是选中的

生成语言包

切换到所在的项目,输入

lupdate test.pro -ts zh-CN.ts

其中test.pro是项目的名字,en.ts是你想生成的语言包的名字

项目中会多了一个ts文件

为了对文字进行翻译,你可以直接打开这个文件进行编辑,也可以用Qt安装目录下的linguist.exe打开进行编辑,LZ用linguist.exe编辑,看看文件发生了哪些变化,以后直接修改文件即可

LZ用的是Qt5.7,linguist.exe的位置是,仅供参考

D:\Qt5.7\5.7\mingw53_32\bin

编辑前

MainWindow MainWindow this is a demo to show language switch ok

编辑后

MainWindow MainWindow 主窗口 this is a demo to show language switch 这是一个语言切换的例子 ok 确定

所以用软件翻译也只是给XML标签赋值,你可以直接赋值 在test.pro文件最后加上

TRANSLATIONS = zh-CN.ts

如果有多个语言包,中间用\分隔即可

TRANSLATIONS = en.ts \ zh-TW.ts

接着就是发布翻译了,输入下面即可

lrelease zh-CN.ts -qm zh-CN.qm

文件下多了一个qm文件

源码

mainwindow.h

mainwindow.cpp

#include "mainwindow.h"#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this);}MainWindow::~MainWindow(){ delete ui;}void MainWindow::on_okBtn_clicked(){ if (type) { myTranslator.load("../test/zh-CN.qm"); qApp->installTranslator(&myTranslator); ui->retranslateUi(this); type 0; } else { qApp->removeTranslator(&myTranslator); ui->retranslateUi(this); type 1; }}

main.cpp

#include "mainwindow.h"#include #include #include int main(int argc, char *argv[]){ QApplication a(argc, argv); //如果想一开始就加载语言包,可以用下面的方法,但没想到卸载语言包的方法 /*QTranslator translator; bool flag; //我这里用的是相对路径,一开始就加载为英文 flag = translator.load("../test/zh-CN.qm"); if (flag) qDebug() << "加载成功"; a.installTranslator(&translator);*/ MainWindow w; w.show(); return

源码-

实现语言的切换

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring MVC源码解析:你需要了解的Servlet
下一篇:记一次大数据跨区域流量排查及修复
相关文章

 发表评论

暂时没有评论,来抢沙发吧~