VS + Qt 开发多语言,中英文
1 在工程 Translation Files 筛选目录下新建 multilingual_en.ts 和 multilingual_zh.ts
1) 右击 Translation Files / 添加 / 新建项
2) 弹框左侧选择 Visual C++/Qt, 右侧选择 Qt Translation Files
3) 选择语言
4) Finish
2 更新 ts 文件,
右击 multilingual_en.ts 选择 lupdate , 右击 multilingual_zh.ts 选择 lupdate
3 编辑 multilingual_en.ts 和 multilingual_zh.ts
4 生成 qm 文件:multilingual_en.qm 和 multilingual_zh.qm
右击 multilingual_en.ts 选择 lrelease, 右击 multilingual_zh.ts 选择 lrelease
5 工程加载 qm 文件 multilingual_en.qm 和 multilingual_zh.qm
6 main 函数中加载默认 qm 文件,或根据配置加载
static const QMap<int, QString> g_mapLanguage
{{0, "English"},{1, "Chinese"},
};QString strLang = g_mapLanguage.value(1); // 默认中文
QTranslator translator;
if (strLang == XmlConfig::GetCfgInstance()->GetLanguageCfg())
{translator.load("./Resources/multilingual_zh.qm");
}
else
{translator.load("./Resources/multilingual_en.qm");
}
app.installTranslator(&translator);7 在每个要切换语言的类文件实现
protected:void changeEvent(QEvent* event) override;void TranslateUI();void MonitoringClass::changeEvent(QEvent* event)
{if (0 != event){switch (event->type()){case QEvent::LanguageChange:TranslateUI();break;default:break;}}QWidget::changeEvent(event);
}void MonitoringClass::TranslateUI()
{LOG4_TRACE("MonitoringClass::TranslateUI");qDebug() << "Test string:" << tr("QuickStart") << " , " << tr("NewEntry");ui.btnQuickStart->setText(tr("QuickStart"));ui.btnStepByStep->setText(tr("NewEntry"));ui.btnMonitor->setText(tr("Monitoring")); ui.btnHelp->setText(tr("Help"));ui.btnGoHome->setText(tr("Home"));
}8 重新编译
如果重新编辑ts文件,或重新生成qm文件,可以删除后,在工程目录下 选择ts文件右击 执行 lupdate 或 lrelease
