Qt之国际化--多语言动态切换
2016-07-29 22:02
465 查看
1.创建语言文件:
打开.pro文件,加入
工具->外部->Qt语言家->更新翻译(lupdate),将生成翻译文件cn.ts、en.ts
2、编辑翻译文件
启动Linguist(Qt语言家),打开cn.ts、en.ts,然后进行编辑,主要是将源文对应的译文填写上,最后保存
3、发布翻译文件
工具->外部->Qt语言家->发布翻译(lrelease),将生成语言文件cn.qm、en.qm
头文件:
参考git:借助百度翻译API实现一个在线翻译工具
参考文档:百度翻译API接口
打开.pro文件,加入
TRANSLATIONS+=cn.ts\
en.ts
工具->外部->Qt语言家->更新翻译(lupdate),将生成翻译文件cn.ts、en.ts
2、编辑翻译文件
启动Linguist(Qt语言家),打开cn.ts、en.ts,然后进行编辑,主要是将源文对应的译文填写上,最后保存
3、发布翻译文件
工具->外部->Qt语言家->发布翻译(lrelease),将生成语言文件cn.qm、en.qm
头文件:
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QTranslator> #include <QEvent> #include <QLabel> #include <QComboBox> #include <QTableWidget> class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ~MainWindow(); void init(); //初始化 void refresh(); //刷新 protected: // virtual void changeEvent(QEvent *e); private slots: void slot_cBox(int index); private: QLabel *label1; QLabel *label2; QComboBox *cBox; QTableWidget *tableWidget; QTranslator translator; QStringList strList; }; #endif // MAINWINDOW_H源文件:
#include "mainwindow.h" #include <QApplication> #include <QHBoxLayout> #include <QVBoxLayout> #include <QHeaderView> #include <QDebug> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { init(); } MainWindow::~MainWindow() { } void MainWindow::init() { translator.load(":/cn.qm"); qApp->installTranslator( &translator ); setWindowTitle(tr("switch language")); QWidget *widget = new QWidget(this); QVBoxLayout *vLayout = new QVBoxLayout(widget); //垂直布局 QHBoxLayout *hLayout = new QHBoxLayout(widget); //水平布局 label1 = new QLabel(tr("hello world"), this); label2 = new QLabel(tr("Welcome to Beijing"), this); cBox = new QComboBox(this); cBox->addItem(tr("Chinese")); cBox->addItem(tr("English")); tableWidget = new QTableWidget(7, 5, widget); tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); //自适应宽度 strList << tr("One") << tr("Two") << tr("Three") << tr("Four") << tr("Five"); tableWidget->setHorizontalHeaderLabels(strList); strList.clear(); strList << tr("Monday") << tr("Tuesday") << tr("Wednesday") << tr("Thursday") << tr("Friday") << tr("Saturday") << tr("Sunday"); tableWidget->setVerticalHeaderLabels(strList); hLayout->addWidget(label1); hLayout->addWidget(label2); hLayout->addSpacing(10); hLayout->addWidget(cBox); vLayout->addLayout(hLayout); vLayout->addSpacing(5); vLayout->addWidget(tableWidget); //设为中心控件 setCentralWidget(widget); resize(500, 285); connect(cBox, SIGNAL(currentIndexChanged(int)), this, SLOT(slot_cBox(int))); } //每次切换语言后,需调该函数 void MainWindow::refresh() { setWindowTitle(tr("switch language")); label1->setText(tr("hello world")); label2->setText(tr("Welcome to Beijng")); cBox->setItemText(0, tr("Chinese")); cBox->setItemText(1, tr("English")); // strList << tr("One") << tr("Two") << tr("Three") << tr("Four") << tr("Five"); tableWidget->setHorizontalHeaderLabels(QStringList() << tr("One") << tr("Two") << tr("Three") << tr("Four") << tr("Five")); tableWidget->setVerticalHeaderLabels(QStringList() << tr("Monday") << tr("Tuesday") << tr("Wednesday") << tr("Thursday") << tr("Friday") << tr("Saturday") << tr("Sunday")); } //void MainWindow::changeEvent(QEvent *e) //{ // if ( e->type() == QEvent::LanguageChange){ // } //} //实现动态切换 void MainWindow::slot_cBox(int index) { qDebug() << "index:" << index; switch (index) { case 0: translator.load(":/cn.qm"); break; case 1: translator.load(":/en.qm"); break; default: break; } qApp->installTranslator( &translator ); this->refresh(); }
参考git:借助百度翻译API实现一个在线翻译工具
参考文档:百度翻译API接口
相关文章推荐
- Qt多语言实现和动态切换(国际化)
- Qt的国际化示例程序以及步骤--实现Qt程序的动态切换语言功能
- Qt国际化之动态语言切换
- QT实现动态翻译和语言切换
- Qt动态语言的切换
- QT国际化示例, 检测系统语言,设置适合语言,按键切换显示语言
- Qt 国际化之二:多国语界面动态切换的实现
- Qt GUI设计 界面语言动态切换(1)
- QT实现动态翻译和语言切换
- Qt 国际化之二:多国语界面动态切换的实现
- struts2通过ajax动态改变系统后台的语言来达到国际化页面切换的功能
- Qt实现动态切换语言
- Qt动态语言切换
- qt多国语言及其动态切换的学习笔记
- struts--动态访问国际化资源(国家/语言切换)
- WPF实现无刷新动态切换多语言(国际化)
- QT实现多国语言的动态切换
- Qt学习笔记--动态切换语言
- QT实现多国语言的动态切换
- Qt实现动态切换语言