Qt QTranslator多语言翻译例子
Qt QTranslator多语言翻译例子
一、简述
记--使用QTranslator实现国际化或多语言翻译的简单例子。
例子:外链:https://wwm.lanzouq.com/b0caf1u5e 密码:bjvt
二、效果
三、工程结构
四、代码
TranslationTest.pro文件
QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = TranslationTest
TEMPLATE = 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.qm
if (translator.load("language.zh_CN.qm", qApp->applicationDirPath().append("/lan/"))) {qApp->installTranslator(&translator);ui->retranslateUi(this);//刷新界面
}
Qt QTranslator多语言翻译例子相关推荐
- Qt的多语言翻译功能及步骤
1. 生成*.qm文件 一般Qt环境下会有lupdate.lrelease.linguist等工具,路径在"Qt安装目录/~~/gcc/bin/"下面,介绍如下: 1) lupda ...
- 好工具推荐系列:Qt多国语言翻译国产软件digital translate
官网: http://translate.digitser.cn/ http://dt.digitser.cn/zh-CN/app/translate/download.html 官方软件说明:(详细 ...
- QT在QML下实现多国语言翻译
在某些情况下,我们使用QT开发的界面需要完成多国语言的翻译工作.QT在这方面其实已经给出了支持,本文主要讲述在使用QML编写界面的情况下如何实现多国语言的翻译. 若要实现QT多国语言翻译,必须要搞清楚 ...
- QT QTranslator 中英文翻译linguist语言家 翻译过程
1.QT项目中,.pro文件内添加如下代码 TRANSLATIONS += test_zh.ts test_zh是自己起的名字,名字部分可以修改(一般中文为zh,英文为en) .ts是后缀,后缀不能改 ...
- VS中使用QT,多国语言翻译问题
VS版本:VS2010 Qt版本:Qt5.5.1 例 子:英译汉 以下介绍是我站在巨人们的肩膀上,并结合自己在工作中所遇到的问题作出的总结. 在VS中使用Qt编程,VS是不支持中文格式的,所以遇到了语 ...
- qt 增加的翻译没有作用上_Qt语言翻译工具的使用 及 QT-Linguist国际化的简单实现...
通过使用Qt Linguist工具时,可以有两种方式进行下一步操作(Windows操作系统).首先说明第一种,在一个软件系统中存在*.pro的工程文件,因而我们可以借此通过采用命令行的形式生成最终所需 ...
- 在VS中使用Qt Linguist完成国际化翻译
1. 在Qt Vs Tool中点击Create New Translation File,创建翻译文件,此时项目文件夹目录中会生成一个后缀为.ts的文件,同时此文件也在出现在Vs的解决方案资源管理器 ...
- QT 多国语言详细步骤
在网上看了很多qt多国语言的实现,总感觉不够详细,因此写一篇记录下,希望对新手有用 在.Pro文档中加入需要国际化转化的语言 TRANSLATIONS += English.ts\ Chinese.t ...
- 2.4 Qt多国语言切换
如果要实现qt程序动态语言切换,最简单有效的方法是使用QTranslator类,首先使用QTranslator对象加载相应的翻译语言文件,然后用 QApplication::installTrans ...
最新文章
- 系统架构师笔记(2)
- 链表的基本操作 java_JAVA实现单链表的基本操作
- python模块安装路径
- 方立勋_30天掌握JavaWeb_Cookie
- mysql 唯一索引 死锁_MySQL 死锁套路:唯一索引 S 锁与 X 锁的爱恨情仇
- 开源开放 | 中文相对复杂词汇识别数据集RCWI-Dataset(CCKS2021)
- MySQL 索引的面试题总结
- 计算机网络——OSI参考模型和TCP/IP协议
- 2021 ACDU China Tour启航,首站邀您北京共话行业数据库技术实践
- oracle数据库表excel文件位置,Excel数据导入到oracle数据库表方法
- 智能快递柜10月1日起按新规管理
- Cosmos OpenSSD--greedy_ftl1.2.0(二)
- 开源KVM管理工具和平台
- matlab计算复活节概率,复活节是几月几日_计算复活节日期_我爱历史网
- 180902 逆向-网鼎(4-dalao)
- 计算机专业保研英语自我介绍,计算机专业保研面试英文自我介绍
- 使用EditPlus替换文件中的某一字符为换行符
- 非华为电脑使用EMUI10多屏协同教程
- 法兰克机器人外部自动_(完整版)KUKA机器人外部自动配置方法
- java高级软件工程师面试_高级软件工程师的新面试问题