Qt 多语言切换

本文通过Qt语言家实现中英文语言的切换。

1.pro文件中增加如下内容

2.编辑好界面

3.生成.ts翻译文件,ts文件其实就是xml格式的文件

4.通过Qt语言家打开.ts文件,编辑。

  • 修改.ts文件后需要发布翻译文件,生成.qm文件后才能被程序使用
  • 方法1:工具-》外部工具-》Qt语言家-》发布翻译,可以用文本的方式打开.ts文件,自己改好,再通过此方法发布翻译
  • 方法2:用QtLinguist打开.ts文件,文件->发布翻译

这个主要是由于默认的.ui文件中,文本是英文,如过默认是中文,

上图中左边“源文”应该是“文件”,而“汉语 译文”应该是file,右边“源文”应该是“文件”,而“汉语 译文”应该是文件

默认的语言是中文,则zh_cn.ts(中文翻译文件)的源文和译文一致,en_US.ts的译文需要些英文来翻译。

默认的语言是英文,则en_US.ts(英文翻译文件)的源文和译文一致,zh_cn.ts的译文需要些中文来翻译。

注意:如果是在文件中new的方式创建控件,在Qt语言家中打开.ts文件,对应的按钮的短语和表单中是代码,而不是Ui。

5.添加.qm文件到资源文件中

6.核心代码:

#pragma execution_character_set("utf-8")
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QTranslator>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QTranslator translator;
    translator.load(":/zh_CN.qm");//en_US
//    qApp->installTranslator(&translator);
//    ui->retranslateUi(this);
    connect(ui->radioButton,SIGNAL(clicked(bool)),this,SLOT(changeLanguage(bool)));
    btn = new QPushButton(tr("测试"),this);
//    btn->setObjectName("btnTest");
    btn->move(00,00);

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::changeLanguage(bool ch)
{
    QTranslator translator;
    if(ch)
    {
        translator.load(":/en_US.qm");
    }
    else
    {
        translator.load(":/zh_CN.qm");

    }
    qApp->installTranslator(&translator);//会触发QEvent::LanguageChange事件
    ui->retranslateUi(this);//用于更新界面,F2可以查看没有更新btn,所以增加如下代码
    btn->setText(tr("测试"));//此步骤很关键。  由于btn不是通过Ui创建的,所以必须增加此代码。
}

7.截图:

猜你喜欢

转载自blog.csdn.net/weixin_41882459/article/details/113846886