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)