- 生成ts文件
在QT的项目文件(.pro)中加入:TRANSLATIONS = XXX.ts YYY.ts(假设是多行,则用 \ 切割)
TRANSLATIONS = CN.ts\
EN.ts
工具---外部---Qt语言家--更新翻译,可以获取CN.ts和EN.ts
- 生产qm文件
用Qt Lingust打开EN.ts,将中文翻译成中文
然后 工具---外部---Qt语言家--发布翻译,可以获取CN.qm和EN.qm
- 代码加载qm文件
头文件:
QTranslator * translator;
void changeEvent(QEvent* e);//解决下俩列表中不更新语言的问题
cpp文件:
构造函数中加载,这样刚启动的版本加载EN.qm,显示为英文版
translator = new QTranslator(this);
translator->load("EN.qm"); //加载语言包
qApp->installTranslator(translator); //安装翻译器
void MainWindow::changeEvent(QEvent *e)
{
if(e->type() == QEvent::LanguageChange)
{
//刷新UI
this->ui->retranslateUi(this);
if(!isCH)
{
this->ui->comboBox->setCurrentIndex(1);
}
}
}
void MainWindow::on_radioButton_clicked()
{
if(translator != NULL)
{
qApp->removeTranslator(translator);
delete translator;
translator = NULL;
}
translator = new QTranslator;
if(translator->load("CN.qm"))
{
qApp->installTranslator(translator);
}
ui->retranslateUi(this);//刷新界面字符
}
void MainWindow::on_radioButton_2_clicked()
{
if(translator != NULL)
{
qApp->removeTranslator(translator);
delete translator;
translator = NULL;
}
translator = new QTranslator;
if(translator->load("EN.qm"))
{
qApp->installTranslator(translator);
}
ui->retranslateUi(this);//刷新界面字符
}
void MainWindow::on_comboBox_activated(int index)
{
if(index == 1)
{
translator->load("EN.qm");
qApp->installTranslator(translator);
ui->retranslateUi(this);//刷新界面字符
isCH = false;
}
else
{
translator->load("CN.qm");
qApp->installTranslator(translator);
ui->retranslateUi(this);//刷新界面字符
isCH = true;
}
}
效果图