QT 国际化(翻译) 24-11-14带源码

QT中英文切换,让你的软件有多国语言功能。


今天写一篇有关于Qt程序如何实现中英文切换的例子,之所以写这个,是因为这是最近项目的一个需求。

Qt国际化,网上的例子,很多很多.... 看似很简单,但是真正去做的时候,总是会遇到各种各样的问题,说实话,挺让人头疼的。

今天,把自己遇到的一些问题,分享一下,当做笔记,记录一下

1.在.pro手动输入testExcel_qMake_zh_CN.tstestExcel_qMake_zh_EN.ts 这两个文件。

TRANSLATIONS += \
    testExcel_qMake_zh_CN.ts \
    testExcel_qMake_zh_EN.ts

2.按照图片,生成上面这两个文件。

3.去翻译 .st 语言文件 

到这里,testExcel_qMake_zh_CN.qm 和 testExcel_qMake_zh_EN.qm 就生成了。很多教程是不教这部分内容(我个人理解是:其余的文章都是给懂的人看的,根本不针对小白。我都不懂,我怎看?所以最好一步一步教,你照做就懂什么意思了。

4.在main文件添加:开机默认是中文还是英文。 

#include "mainwindow.h"

#include <QApplication>

/**************************添加1/2 如下*************************************/
#include <QDebug>
#include <QLocale>
#include <QTranslator>   

QTranslator trans;      //必须要声明此外部变量

/**************************添加1/2 如上*************************************/



int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


/*开机默认是什么语言你可以不添加,看自己需要*/
/**************************添加2/2 如下*************************************/
    // 获取系统当前语言
    QLocale locale;
    QString language = locale.name();

    // 根据系统语言加载相应的翻译文件
    if (language.startsWith("zh_CN")) {
        if (trans.load("testExcel_qMake_zh_CN", ":/i18n")) {
            a.installTranslator(&trans);
            qDebug() << "加载中文翻译文件成功";
        } else {
            qDebug() << "加载中文翻译文件失败";
        }
    } else {
        if (trans.load("testExcel_qMake_en", ":/i18n")) {
            a.installTranslator(&trans);
            qDebug() << "加载英文翻译文件成功";
        } else {
            qDebug() << "加载英文翻译文件失败";
        }
    }
/**************************添加2/2 如上*************************************/


    MainWindow w;
    w.show();
    return a.exec();
}

 5.mainwindow.cpp 更改的部分

#include "mainwindow.h"
#include "qdebug.h"
#include "ui_mainwindow.h"

/**************************添加1/2 如下*************************************/
extern QTranslator trans;      //必须要声明此外部变量

/**************************添加1/2 如上*************************************/


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);


}

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

/**************************添加2/2 如下*************************************/
void MainWindow::EN()   // 英文按键的槽函数,槽函数关联到按键的connect我省略了,自己加
{                        // 因为槽函数我自己手动拉过去关联的,所以你看不出来
    if (trans.load("testExcel_qMake_zh_EN", ":/i18n")) {
        qApp->installTranslator(&trans);
        ui->retranslateUi(this);  // 重新翻译界面文字
        qDebug() << "英文";
    } else {
        qDebug() << "加载英文翻译文件失败";
    }
}
void MainWindow::CN()  // 中文按键的槽函数,槽函数关联到按键的connect我省略了,自己加
{                        // 因为槽函数我自己手动拉过去关联的,所以你看不出来
    if (trans.load("testExcel_qMake_zh_CN", ":/i18n")) {
        qApp->installTranslator(&trans);
        ui->retranslateUi(this);  // 重新翻译界面文字
        qDebug() << "中文";
    } else {
        qDebug() << "加载中文翻译文件失败";
    }
}
/**************************添加2/2 如上*************************************/

完结:这都看不懂,你留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值