Qt多语言翻译(简单示例)

1>代码

.h
private slots:
    void changedLanguage(int);

private:
    Ui::Widget *ui;
    QComboBox* m_comboBox;
    QLabel* m_label;
    QLabel* m_text;

.cpp
#include "widget.h"
#include "ui_widget.h"
#include<QVBoxLayout>
#include<QApplication>
#include<QTranslator>

/*
1>tr()函数获取需要翻译的文本
2>lupdate.exe编译生成xxx.ts文件
3>linguist.exe进行编译
4>lrelease.exe生成xxx.qm文件
*/

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    setWindowTitle(tr("翻译文本"));
    resize(400,200);

    m_comboBox = new QComboBox;
    m_comboBox->addItem("中文","zh");
    m_comboBox->addItem("韩文","hw");
    m_comboBox->addItem("日文","rw");
    m_comboBox->addItem("英文","en");
    connect(m_comboBox,SIGNAL(currentIndexChanged(int)),
            this,SLOT(changedLanguage(int)));

    m_label = new QLabel(tr("你好"));
    m_text = new QLabel(tr("翻译开始"));

    QVBoxLayout *mainLayout = new QVBoxLayout(this);
    mainLayout->addWidget(m_comboBox);
    mainLayout->addWidget(m_label);
    mainLayout->addWidget(m_text);
}

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

void Widget::changedLanguage(int index)
{
    static QTranslator* translator;
    if(translator){
        qApp->removeTranslator(translator);
        translator = nullptr;
    }

    translator = new QTranslator;
    QString languageCode = m_comboBox->itemData(index).toString();
    QString qmFile = "lang_" + languageCode;

    if(translator->load(qmFile)){
        qApp->installTranslator(translator);
    }

    //翻译文本
    m_label->setText(tr("TXT_NAME_WORD","hello"));
    m_text->setText(tr("TXT_SIGN_WORD","translated text"));
    setWindowTitle(tr("TXT_TITLE_WORD","translatedtranslated"));
}

2>添加配置文件

在项目.pro中添加

TRANSLATIONS = lang_en.ts\ #英文lang_en文件名 ts文件类型
               lang_hw.ts\ #韩文
               lang_rw.ts\ #日文
               lang_zh.ts #中文

3>生成ts文件

工具–>外部–>Qt语言家–>更新翻译(lupdate)
注意异常:如显示没有g++需要去环境变量中添加g++路径
如:在这里插入图片描述

4>生成qm文件

找到此软件
在这里插入图片描述

5>输入翻译后语言

打开文件–>选择.ts文件–>打开–>选择翻译内容,输入好后按工具栏√–>全输入完后保存
在这里插入图片描述

6>发布翻译

工具–>外部–>Qt语言家–>发布翻译(lrelease)

7>生成

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值