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
1011

被折叠的 条评论
为什么被折叠?



