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多语言翻译例子相关推荐

  1. Qt的多语言翻译功能及步骤

    1. 生成*.qm文件 一般Qt环境下会有lupdate.lrelease.linguist等工具,路径在"Qt安装目录/~~/gcc/bin/"下面,介绍如下: 1) lupda ...

  2. 好工具推荐系列:Qt多国语言翻译国产软件digital translate

    官网: http://translate.digitser.cn/ http://dt.digitser.cn/zh-CN/app/translate/download.html 官方软件说明:(详细 ...

  3. QT在QML下实现多国语言翻译

    在某些情况下,我们使用QT开发的界面需要完成多国语言的翻译工作.QT在这方面其实已经给出了支持,本文主要讲述在使用QML编写界面的情况下如何实现多国语言的翻译. 若要实现QT多国语言翻译,必须要搞清楚 ...

  4. QT QTranslator 中英文翻译linguist语言家 翻译过程

    1.QT项目中,.pro文件内添加如下代码 TRANSLATIONS += test_zh.ts test_zh是自己起的名字,名字部分可以修改(一般中文为zh,英文为en) .ts是后缀,后缀不能改 ...

  5. VS中使用QT,多国语言翻译问题

    VS版本:VS2010 Qt版本:Qt5.5.1 例 子:英译汉 以下介绍是我站在巨人们的肩膀上,并结合自己在工作中所遇到的问题作出的总结. 在VS中使用Qt编程,VS是不支持中文格式的,所以遇到了语 ...

  6. qt 增加的翻译没有作用上_Qt语言翻译工具的使用 及 QT-Linguist国际化的简单实现...

    通过使用Qt Linguist工具时,可以有两种方式进行下一步操作(Windows操作系统).首先说明第一种,在一个软件系统中存在*.pro的工程文件,因而我们可以借此通过采用命令行的形式生成最终所需 ...

  7. 在VS中使用Qt Linguist完成国际化翻译

    1.  在Qt Vs Tool中点击Create New Translation File,创建翻译文件,此时项目文件夹目录中会生成一个后缀为.ts的文件,同时此文件也在出现在Vs的解决方案资源管理器 ...

  8. QT 多国语言详细步骤

    在网上看了很多qt多国语言的实现,总感觉不够详细,因此写一篇记录下,希望对新手有用 在.Pro文档中加入需要国际化转化的语言 TRANSLATIONS += English.ts\ Chinese.t ...

  9. 2.4 Qt多国语言切换

     如果要实现qt程序动态语言切换,最简单有效的方法是使用QTranslator类,首先使用QTranslator对象加载相应的翻译语言文件,然后用 QApplication::installTrans ...

最新文章

  1. 系统架构师笔记(2)
  2. 链表的基本操作 java_JAVA实现单链表的基本操作
  3. python模块安装路径
  4. 方立勋_30天掌握JavaWeb_Cookie
  5. mysql 唯一索引 死锁_MySQL 死锁套路:唯一索引 S 锁与 X 锁的爱恨情仇
  6. 开源开放 | 中文相对复杂词汇识别数据集RCWI-Dataset(CCKS2021)
  7. MySQL 索引的面试题总结
  8. 计算机网络——OSI参考模型和TCP/IP协议
  9. 2021 ACDU China Tour启航,首站邀您北京共话行业数据库技术实践
  10. oracle数据库表excel文件位置,Excel数据导入到oracle数据库表方法
  11. 智能快递柜10月1日起按新规管理
  12. Cosmos OpenSSD--greedy_ftl1.2.0(二)
  13. 开源KVM管理工具和平台
  14. matlab计算复活节概率,复活节是几月几日_计算复活节日期_我爱历史网
  15. 180902 逆向-网鼎(4-dalao)
  16. 计算机专业保研英语自我介绍,计算机专业保研面试英文自我介绍
  17. 使用EditPlus替换文件中的某一字符为换行符
  18. 非华为电脑使用EMUI10多屏协同教程
  19. 法兰克机器人外部自动_(完整版)KUKA机器人外部自动配置方法
  20. java高级软件工程师面试_高级软件工程师的新面试问题

热门文章

  1. 基于php的个人财务管理系统
  2. 挂耳式耳机品牌排行榜,几款佩戴舒适的挂耳式耳机推荐
  3. HFSS初探日志(三):螺旋天线设计
  4. 苹果手机怎么用计算机看别人密码,各种小技巧,带你玩转iPhone手机
  5. jquery 百度百科
  6. 智能音箱下沉市场速写
  7. 【多媒体封装格式详解】---MP4
  8. Deep Bilateral Learning for Real-Time Image Enhancement
  9. python:实现Bilateral Filter双边滤波器算法(附完整源码)
  10. Dockers更新镜像(保留原始数据)