Qt 多语言切换——Qt语言家
1.修改程序文件
1.1在pro文件中加入说明
TRANSLATIONS = lang_English.ts \
lang_Chinses.ts
在pri文件中,加入说明,其中“lang_English.ts”与“llang_Chinses.ts”为设置语言文件的名称,这里使用中文与英语两种语言,当你需要其他更多的语言时,添加多个语言文档即可。
1.2语言文字在程序中说明
为了Qt识别你在程序中需要语言准换的文字,需要将需要转换的文字使用QObject::tr(“…”) 进行标记,否则程序中并不能对其进行识别。例如:
label->setText(tr( "Hello World"));
而在ui窗口直接进行添加一些插件中的语言,一般默认可以识别进行翻译的。如果我们想将其关掉,可以选择插件的属性,将toolTip中“可翻译的”直接取消勾选即可。
2.生成ts文件
在Qt的菜单栏之中选择:工具->外部->Qt预言家->更新翻译(lupdate)。
生成ts文件
2.修改ts文件
3. 生成qm文件
ts文件翻译结束以后,点击保存,然后在Qt Creator中,使用:工具->外部->Qt预言家->部署翻译(lrelease),就会生成需要的qm文件。
4. 加载qm语言包
将生成的qm文件移动到发布版本中的相应位置,然后在程序中加载。
void MainWindow::changeTr(int language_label)
{
QString qmFilename;
static QTranslator* translator;
if (translator != NULL)
{
qApp->removeTranslator(translator);
delete translator;
translator = NULL;
}
translator = new QTranslator;
QString runPath = QCoreApplication::applicationDirPath(); //获取文件运行路径
if(language_label==1)
{
qmFilename = runPath + "/lang_Chinese.qm";
}
else
{
qmFilename = runPath + "/lang_English.qm";
}
if (translator->load(qmFilename))
{
qApp->installTranslator(translator);
}
ui->retranslateUi(this); // 重新设置界面显示
}
5. 重新设置界面显示
当实现“qApp->installTranslator(translator)”以后,还应该将显示界面重新显示一次进行更新。主界面可以直接借助步骤4中ui->retranslateUi(this)进行重新设置界面显示,但是这个只能更新当前页面,其余页面并不能直接显示出来。需要按照以下格式将每一个需要显示的页面添加相应的程序。
添加示例
dialogdebug.h添加
void changeEvent(QEvent *e);
dialogdebug.cpp
void Dialogdebug::changeEvent(QEvent *e)
{
QDialog::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
问题:Cannot run compiler 'cl'. Maybe you forgot to setup the environment?
如果运行的时候提示上边的错误,则说明是没有设置编译器的环境变量,我使用的是VS2017,就以VS2017为例进行设置。
首先进入VS2017安装目录找到cls.exe的目录,一般是”..\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\bin\Hostx64\x64”。
然后右击我的电脑属性,按照下图的顺序进行设置,将VS2017目录添加进去即可。