头文件:
#include <QTranslator>
代码:
myTranslator = new QTranslator; //QTranslator* myTranslator;
connect(ui->actionEnglish,&QAction::triggered,this,[=](){
if(myTranslator) {
qApp->removeTranslator(myTranslator);
delete myTranslator;
myTranslator = nullptr;
}
myTranslator = new QTranslator;
myTranslator->load(qmPath+"./demo_En.qm");
// qm 为翻译后的文件;qmPath可以是自己定义的目录结构,也可以是获取环境变量,
// qt 获取环境变量: QString qmPath = qgetenv("DEMO_PATH");
// .pro文件中加入:
// TRANSLATIONS += demo_Ch.ts \
// demo_En.ts
// qtcreater ->工具->外部->qt语言家->更新翻译 (生成 ts 文件)
// ts 文件通过 linguist 进行翻译
// qtcreater ->工具->外部->qt语言家->发布翻译 (生成 qm 文件)
qApp->installTranslator(myTranslator);
ui->retranslateUi(this);
initUI(); //自己写的界面初始化
});
connect(ui->actionChinese,&QAction::triggered,this,[=](){
if(myTranslator) {
qApp->removeTranslator(myTranslator);
delete myTranslator;
myTranslator = nullptr;
}
myTranslator = new QTranslator;
myTranslator->load(qmPath+"./demo_Ch.qm");
qApp->installTranslator(myTranslator);
ui->retranslateUi(this);
initUI();
});