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 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值