Linguist
- 步骤:
- 主程序中添加注册表信息
- action添加语言翻译
步骤:
- 在程序设计阶段,代码中所有用户可见的字符串都需要使用
tr()
函数进行封装,以便 Qt 可以提取这些字符串用于生成翻译资源文件。
2.在项目文件中加入,TRANSLATIONS =samp16_1_cn.ts\
samp16_1_en.ts
(多行文件目录用\号隔开,换行) - 在项目配置文件(.pro 文件)中设置需要导出的翻译文件(.ts 文件)名称,并使用
lupdate
工具扫描项目文件中需要翻译的字符串,生成翻译文件。 - 使用 Qt 的 Linguist 程序打开生成的翻译文件,将程序中的字符串翻译为需要的语言,例如将中文字符串翻译为英文。
- 使用
lrelease
工具编译翻译好的翻译文件,生成 .qm
文件,文件放入项目中。 - 在应用程序中使用
QTranslator
调用不同的 .qm
文件来实现不同的语言界面。
主程序中添加注册表信息
#include <QTranslator>
#include <QSettings>
QTranslator *trans=NULL;
QString readSetting();
int main(int argc, char *argv[])
{QApplication app(argc, argv);trans=new QTranslator;QString curLang=readSetting(); if (curLang=="EN")trans->load("samp16_1_en.qm");elsetrans->load("samp16_1_cn.qm");app.installTranslator(trans);MainWindow w;w.show();return app.exec();
}QString readSetting()
{QString organization="WWB-Qt";QString appName="samp16_1"; QSettings settings(organization,appName);QString Language=settings.value("Language","EN").toString();return Language;
}
action添加语言翻译
void MainWindow::on_actLang_CN_triggered()
{qApp->removeTranslator(trans);delete trans;trans=new QTranslator;trans->load("samp16_1_cn.qm");qApp->installTranslator(trans);ui->retranslateUi(this);QSettings settings("WWB-Qt","samp16_1"); settings.setValue("Language","CN");
}void MainWindow::on_actLang_EN_triggered()
{qApp->removeTranslator(trans);delete trans;trans=new QTranslator;trans->load("samp16_1_en.qm");qApp->installTranslator(trans);ui->retranslateUi(this);QSettings settings("WWB-Qt","samp16_1"); settings.setValue("Language","EN");
}