2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Qt QTranslator多语言翻译例子

Qt QTranslator多语言翻译例子

时间:2023-03-31 12:31:25

相关推荐

Qt QTranslator多语言翻译例子

Qt QTranslator多语言翻译例子

一、简述

记--使用QTranslator实现国际化或多语言翻译的简单例子。

例子:外链:/b0caf1u5e密码:bjvt

二、效果

三、工程结构

四、代码

TranslationTest.pro文件

QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = TranslationTestTEMPLATE = appSOURCES += main.cpp\mainwindow.cppHEADERS += mainwindow.hFORMS += mainwindow.uiTRANSLATIONS += language.zh_CN.ts\language.en.ts

mainwindow.h文件

#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QTranslator>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private slots:void on_actionChinese_triggered();void on_actionEnglish_triggered();void on_pushButton_clicked();private:Ui::MainWindow *ui;QTranslator translator;};#endif // MAINWINDOW_H

main.cpp文件

#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]){QApplication a(argc, argv);MainWindow w;w.show();return a.exec();}

mainwindow.cpp文件

#include "mainwindow.h"#include "ui_mainwindow.h"#include <QMessageBox>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){ui->setupUi(this);//启动时根据系统环境初始化语言版本,或者是根据配置if (translator.load(QLocale(), "language", ".", qApp->applicationDirPath().append("/lan/"), ".qm")) {qApp->installTranslator(&translator);ui->retranslateUi(this);//刷新界面}//默认勾选的语言版本if (QLocale::Chinese == QLocale().language()) {ui->actionChinese->setChecked(true);ui->actionEnglish->setChecked(false);}}MainWindow::~MainWindow(){delete ui;}//切换到中文翻译void MainWindow::on_actionChinese_triggered(){ui->actionChinese->setChecked(true);ui->actionEnglish->setChecked(false);if (translator.load("language.zh_CN.qm", qApp->applicationDirPath().append("/lan/"))) {qApp->installTranslator(&translator);ui->retranslateUi(this);//刷新界面}}//切换到英文翻译void MainWindow::on_actionEnglish_triggered(){ui->actionChinese->setChecked(false);ui->actionEnglish->setChecked(true);if (translator.load("language.en.qm", qApp->applicationDirPath().append("/lan/"))) {qApp->installTranslator(&translator);ui->retranslateUi(this);//刷新界面}}void MainWindow::on_pushButton_clicked(){QMessageBox::information(this, tr("Tips"), tr("Hello World!"), tr("OK"));}

五、总结

5.1 在代码中使用tr()包含需要翻译的文本内容,

UI界面上的控件文本,默认都是可翻译的

5.2 在.pro文件添加要翻译的语言,例子中添加的是中英文

5.3 生成.ts文件

在源码路径下会生成.ts文件 (与.pro文件添加的.ts文件名一致)

5.4 编辑.ts文件进行翻译

使用Linguist 工具编辑.ts文件。

.ts文件实际上格式是xml格式,可以直接使用文本编辑器进行编辑。

5.4 生成.qm文件

可以使用Linguist生成,也可以使用Qt Creator生成

使用Qt Creator生成

生成的.qm文件

可以添加到资源文件: 优点:不会被用户随意修改;缺点:修改翻译需要重新编译。

例子中直接作为外部文件进行加载:优点:修改翻译不需要重新编译,可单独更新翻;缺点:存在被恶意修改风险。

5.5 代码中加载.qm文件

#include <QTranslator>QTranslator translator;//加载中文 language.zh_CN.qmif (translator.load("language.zh_CN.qm", qApp->applicationDirPath().append("/lan/"))) {qApp->installTranslator(&translator);ui->retranslateUi(this);//刷新界面}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。