Qt之国际化--多语言动态切换
来源:互联网 发布:传奇霸业翅膀升级数据 编辑:程序博客网 时间:2024/04/28 13:43
1.创建语言文件:
打开.pro文件,加入
TRANSLATIONS+=cn.ts\
en.ts
工具->外部->Qt语言家->更新翻译(lupdate),将生成翻译文件cn.ts、en.ts2、编辑翻译文件
启动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_OBJECTpublic: 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接口
0 0
- Qt之国际化--多语言动态切换
- Qt国际化之动态语言切换
- Qt多语言实现和动态切换(国际化)
- QT国际化动态切换
- Qt之动态语言切换
- Qt之动态语言切换
- Qt之动态语言切换
- spring3国际化 动态语言切换
- Qt 国际化之二:多国语界面动态切换的实现
- Qt动态语言切换
- Qt语言动态切换
- Qt动态切换语言
- Qt的国际化示例程序以及步骤--实现Qt程序的动态切换语言功能
- iOS 之国际化语言切换
- QT多窗口语言动态切换
- QT国际化动态语言切换的实现(原创) (2012-02-20 11:23:20)
- qt 之 国际化(中英文切换)
- Qt动态语言的切换
- 多重背包模板
- openwrt 开机启动
- 模拟strstr函数
- Directx学习笔记【二】 将win32基本框架封装成类
- Java中的位运算机制详解
- Qt之国际化--多语言动态切换
- (中国剩余定理模版)hdoj 5768 Lucky7
- 深度学习-LeCun、Bengio和Hinton的联合综述(上)
- Linux mint17操作系统下mentohust校园网认证解决方法
- POJ 1252 DP
- HDU - 5711 Ingress DP+Flody+贪心
- 深度学习-LeCun、Bengio和Hinton的联合综述(下)
- [leetcode]经典算法题- String to Integer (atoi)
- Leetcode Counting Bits