Qt QTranslator多语言翻译例子

28 篇文章 28 订阅
订阅专栏

                                                            Qt QTranslator多语言翻译例子

一、简述

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

例子:外链:https://wwm.lanzouq.com/b0caf1u5e 密码:bjvt

二、效果

三、工程结构

四、代码

TranslationTest.pro文件

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = TranslationTest
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

TRANSLATIONS += 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_OBJECT

public:
    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-自动在线翻译工具,适用于国际化语言应用
u013083044的博客
12-19 1956
有时候我们在多语言版本的时候,如果是手动翻译的话需要将我们的文文本拷贝到百度翻译或者谷歌翻译翻译译文,然后再填入对应的翻译内容,这种操作如果 是量少的话还能接受,当时但是如果是大量的翻译文本,那就真的要哭死了,基于这个麻烦事儿,我们是自己手动写个翻译工具比较合适,整个的基本思路如下:1、申请百度翻译免费账户,一天5万字使用,自己够够的。2、根据http的api接口,测试上传源文和接收的译文。3、然后根据格式自己去拆分出来。
qt 英文翻译
qq_42815643的博客
01-31 789
QTranslator类的对象包含一组从源语言到目标语言翻译QTranslator提供了在翻译文件查找翻译的功能。翻译文件是使用Qt Linguist创建的。QTranslator最常见的用途是:加载一个翻译文件,并使用QCoreApplication::installTranslator()安装它。
QtQTranslator类配置成功后不生效
最新发布
qq_43667603的博客
09-20 198
我遇到的坑是项目结构较为复杂,主pro文件下跟着多个子pro文件。此时生成ts文件的操作需要直接对主pro文件进行luqdate,而不能直接对负责ui的子pro文件进行,否则语言切换功能就会失效;完成以上步骤之后,界面应该会重新加载,并且显示英文界面;遇到相似问题的朋友可以试试是不是该原因。
QT翻译步骤(转)
zhouwengui的专栏
11-14 734
  默认分类   2008-10-26 23:27   阅读355   评论0   字号: 大大    小小 第一步在你的pro里面加入 TRANSLATIONS = myexec_zh.ts (根据对应的ts文件修改)第二步用lupdate 操作pro 将要翻译的提取到ts文件 命令是 lupdate my.pro第三步用 linguist 打开刚才的ts
QT-Linguist Qt翻译工具
penghuilater的博客
08-12 1693
QT-Linguist工具主要用在项目的多语言翻译处理过程,所有先简单介绍一下整个多语言处理过程,最后介绍Linguist的用法。(一)QT项目实现多语言,必须做两件事:1)确保每一个用户可见的字符串都使用了tr()函数。 2)在应用程序启动的时候,使用QTranslator载入一个翻译文件(.qm)。 tr() 的用法: ? 1 caseCheckBox = new QCheckB
Qt语言动态切换例子源码
12-26
在本文,我们将深入探讨如何在Qt应用实现多语言动态切换,并以"Qt语言动态切换例子源码"为例进行解析。这个示例代码提供了一个简单易懂的方法,允许用户通过点击按钮来改变应用程序语言,包括标题栏的文本。...
QT语言切换功能工程
05-18
Qt通过使用翻译文件(.qm文件)来实现多语言支持。这些文件是由Qt Linguist工具处理的Qt特定的翻译文件,它们基于源语言(通常是英语)的.ts(Translation Source)文件生成。.ts文件是一种XML格式,包含了应用程序...
语言界面例子
06-10
这个"多语言界面例子"提供了这样一个解决方案,使得界面的文字能够根据用户的语言偏好进行切换,而无需修改源代码。这样的设计大大提升了软件的适应性和用户体验。 多语言界面的设计通常涉及到以下几个关键技术点:...
qt的多语言代码-英文切换
01-31
首先,Qt的多语言支持依赖于QTranslator类,该类用于加载和应用翻译文件。翻译文件通常是Qt Linguist工具生成的.ts(Translation Source)文件,最终编译成.qm(Qt Messaging Format)文件。这个过程可以手动完成,...
QT 热键的开发、多语言国际化QTableView 的MVC使用
04-11
本主题将深入探讨QT的三个关键知识点:热键的开发、多语言国际化以及QTableView的Model/View/Controller(MVC)使用。 首先,让我们来谈谈热键的开发。在QT,我们可以利用`QShortcut`类来创建和管理热键。`...
Qt实现多国语言翻译.tar.gz
08-15
Qt实现多国语言翻译.tar.gz --------------- Linux下,基于Qt5.7 若Windows下报错,可将文注释删除即可。 此为QtCreate之Bug qzher.com 二〇一六年八月十五日
QT文显示(使用翻译工具linguist)
07-27
QT能够实现文显示的很好的文档,使用QT自带的linguist翻译工具,非常好用
Qt_翻译小工具
知行合一
08-07 918
搞了这么多天终于搞出点东西来了,用qt写了一个简单的翻译小工具,方法就是接入百度的翻译api。发送http请求,获得内容。
QT工具___语言翻译
Esther_lq的博客
11-09 791
应用程序一般都会有英文语言切换,在QT下有个工具可以做到.步骤: 1.QT菜单栏–>工具–>外部–>Linguist->先 更新翻译(lupdate)–> 再 发布翻译(lrelease)2.在QT的安装文件夹下,以5.4版本为例 5.4文件夹下有个gcc文件夹,进入找到bin文件夹,该文件夹里有很多 执行程序,打开当前路径终端,执行命令: ./linguist 这样就
关于QT的软件翻译QTranslator
jiaoyaziyang的专栏
03-07 6322
做项目需要做文和英语两个版本的就需要用到QT语言翻译功能,这里详细讲述一下使用过程: 加入项目的名称为MyTranslator   :   (1) 在代码需要翻译的控件使用tr()标识,比如: MyTranslator::MyTranslator(QWidget *parent) : QWidget(parent), m_button(new QPu
`lupdate`、`linguist` 和 `lrelease` 是 Qt 处理翻译的三个关键工具
计算机视觉领域
06-25 1525
`lupdate`、`linguist` 和 `lrelease` 是 Qt 处理翻译的三个关键工具
QT 翻译-QT翻译工具-QT翻译流程
刘望的博客
06-04 392
1:如: msgBox.setButtonText(QMessageBox::Save, tr(“Save”)); 2: 工具、外部,语言家 ’ 更新翻译 ts文件 3: linguist 生成翻译 修改ts文件 4:工具、外部,语言家 发布翻译 生成qm文件
QTranslator Class
m0_45463480的博客
05-31 1066
QTranslator 类 公共成员函数 类说明 查找翻译 使用多种翻译 成员函数使用说明
Qt语言翻译
weixin_45001971的博客
08-16 776
Qt语言翻译
qtranslator
07-28
QTranslatorQt框架的一个类,用于实现国际化和本地化功能。它可以将应用程序的文本翻译成不同的语言。\[1\]通过使用QTranslator,可以在应用程序加载和安装翻译文件,从而实现多语言支持。\[2\]在使用QTranslator时,可以使用load()函数加载翻译文件,并使用installTranslator()函数安装翻译器。这样,翻译器将成为应用程序搜索匹配字符串的第一个翻译。\[2\]下面是一个使用QTranslator的main()函数示例,其加载了一个翻译文件并将其安装到应用程序。\[3\]通过使用QCoreApplication::translate()函数,可以将文本翻译为指定的语言。在示例,QPushButton的文本被翻译为"Hello world!"。\[3\] #### 引用[.reference_title] - *1* [QT---之QTranslator【界面语言翻译】及QT-Linguist的用法](https://blog.csdn.net/weixin_39609623/article/details/82802666)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [QtQTranslator类](https://blog.csdn.net/zhizhengguan/article/details/115727646)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
写文章

分类专栏

  • CGI 3篇
  • PS 1篇
  • Python 4篇
  • Linux驱动 2篇
  • FFmpeg  1篇
  • MFC 3篇
  • 设计模式 4篇
  • Web 3篇
  • WPF 1篇
  • C++ 3篇
  • QT 28篇
  • C 22篇
  • 数据结构与算法 10篇
  • HelloWorld 1篇
  • MySQL 3篇
  • 单片机 12篇
  • Android 10篇
  • C# 12篇
  • JavaWeb 2篇
  • Linux 32篇
  • 系统安装 2篇
  • 嵌入式 12篇
  • Windows 3篇
  • Java 2篇
  • STM32 3篇
  • WindowsAPI编程 1篇

最新评论

  • STM32 PWM之实现呼吸灯

    福橘挂会机: 代码一样,没有呼吸灯的效果

  • C语言 在程序中打开网页,模拟鼠标点击、键盘输入

    Ly_Online: 这个你得去学学爬虫和python的自动化测试框架

  • Lighttpd+fastcgi+C语言

    不是猪猪: 有没有人遇到过(gw_backend.c.533) connect() /home/root/lighttpd/sockets/test.socket-0: Connection refused

  • 嵌入式 ALSA库的编译、使用、移植

    XK_0416: 您好,请问一下,这个里面的alsa_play.c,alsa_record,alsa_play.c,head4audio.h和Makefile是需要自己书写的是吗,如果不是的话,它默认是保存在什么地方

  • QT 显示USB摄像头数据

    hijkstra123: 你好!我使用Qt的qcamera类,编译器提示我,setCaptureMode()和setViewfinder()这两个方法都找不到。 刚开始学习Qt,烦请指点一下吧,谢谢

大家在看

  • Mysql入门
  • 智能合约分享
  • C/C++语言基础--C++“神奇”,Lambda表达式 941
  • CANoe_C#调用CDD和CAPL调用CDD方法对比 1480
  • 基于SSM的宠物用品管理系统(含源码+sql+视频导入教程+文档+PPT) 625

最新文章

  • QT QWebEngineView+UEditor富文本编辑器
  • 嵌入式 程序调试之gdb+gdbserver+vscode可视化调试
  • 嵌入式 程序调试之gdb和gdbserver的交叉编译及使用
2023年2篇
2022年15篇
2021年18篇
2020年20篇
2019年29篇
2018年96篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家商场特色美陈花盆现代玻璃钢卡通雕塑鼎湖玻璃钢雕塑价格福建中庭商场美陈批发价新余步行街玻璃钢雕塑生产厂家十一月份商场美陈玻璃钢雕塑小矮人广东大型商场美陈生产厂家新郑人物校园玻璃钢景观雕塑杂技小丑玻璃钢雕塑广东玻璃钢动物雕塑厂家杭州玻璃钢雕塑生产吉林抽象玻璃钢雕塑批发玄武玻璃钢雕塑公司苏州玻璃钢雕塑设计厂家玻璃钢雕塑上什么漆玻璃钢雕塑热线电话广州独特玻璃钢座椅雕塑保定玻璃钢动物雕塑牛固原玻璃钢景观雕塑报价玻璃钢文字音符雕塑代理商马鞍山美陈商场玻璃钢美化雕塑厦门玻璃钢玩偶雕塑大兴安岭地区玻璃钢卡通雕塑熊玻璃钢仿真动物雕塑梅花鹿苏州清远玻璃钢切面动物雕塑普洱市玻璃钢雕塑价格表白云区玻璃钢人物雕塑在线下单青海玻璃钢广场雕塑定制香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化