当前位置: 首页 > news >正文

Qt多语言翻译

Qt多语言翻译概述


Qt提供了非常简单易用的多语言翻译机制,其核心类为QTranslator.概括来说就是利用Qt的lupdate工具将项目中所有tr函数包裹的字符串提取到.ts文件中,然后使用Qt Linguist由专门的翻译人员对提取的.ts文件进行逐个单词短语的翻译工作. 翻译完成后输出对应的.qm文件;代码中使用QTranslator的load方法加载.qm文件即可.

Qt多语言翻译步骤


以一个简单的Demo来说明
1> 编写代码,过程中需要注意两个点,第一点是所有需要翻译的单词/短语需要用tr函数包裹;第二点就是.pro文件中需要加入lupdate生成的.ts文件

#include <QApplication>
#include <QLabel>
#include <QString>int main(int argc, char *argv[])
{QApplication a(argc, argv);QLabel label(nullptr);label.setText(QObject::tr("Translate Test"));label.show();return a.exec();
}

代码很简单,就是单纯的label显示一个字符串,然后需要在项目的.pro文件中加入生成的.ts文件

TRANSLATIONS = demo_zh_CN.ts

2> 使用lupdate生成.ts文件

lupdate ${项目名}.pro

对应生成的.ts文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<context><name>QObject</name><message><location filename="main.cpp" line="10"/><source>Translate Test</source><translation type="unfinished"></translation></message>
</context>
</TS>

根据文件内容可以看到我们用tr包裹起来待翻译的字符串已经被提取到.ts文件中;type表示是否已经翻译;未翻译为unfinished,翻译完成则显示对应翻译的译文.

3> 使用linguist翻译.ts文件
打开linguist软件,使用"Open"菜单打开我们需要翻译的.ts文件,对提取到的单词/短语逐个进行翻译
在这里插入图片描述
翻译完成之后点击"文件"菜单下"发布"即可生成对应的.qm文件到.ts同级目录下

4> 界面中当用户点击语言切换的时候只需要添加上以下代码即可完成英->汉的翻译

QTranslator translator;
if (translator.load("demo_zh_CN.qm")) {QCoreApplication::installTranslator(&translator);
}
http://www.lryc.cn/news/293689.html

相关文章:

  • Latex学习记录
  • 你在做绩效考核,还是绩效管理?二者有什么区别
  • ele-h5项目使用vue3+vite+vant4开发:第四节、业务组件-SearchView组件开发
  • C系列-柔性数组
  • 【Linux网络编程一】网络基础1(网络框架)
  • springboot156基于SpringBoot+Vue的常规应急物资管理系统
  • 学习MySQL的MyISAM存储引擎
  • nginx 的 ngx_http_upstream_dynamic_module 动态域名解析功能的使用和源码详解
  • 前端vue/react项目压缩图片工具@yireen/squoosh-browser
  • 悬而未决:daterangepicker设置默认选择日期时间后点确认无值的BUG
  • composer常用命令
  • 2024年1月27日~2月2日周报
  • 红黑树,以及其在C++的set、map等数据结构中应用
  • C++(11)——内存管理
  • 《C++ Primer Plus》《3、数据处理》
  • Java 正则匹配sql
  • 服务器入门
  • 云端录制直播流视频,上传云盘
  • 【靶场实战】Pikachu靶场XSS跨站脚本关卡详解
  • 蓝桥杯每日一题-----数位dp
  • sklearn 计算 tfidf 得到每个词分数
  • Qt拖拽事件,实现控件内项的相互拖拽
  • 基于MATLAB实现的OFDM仿真调制解调,BPSK、QPSK、4QAM、16QAM、32QAM,加性高斯白噪声信道、TDL瑞利衰落信道
  • Redis核心技术与实战【学习笔记】 - 21.Redis实现分布式锁
  • 17.Golang channel的基本定义及使用
  • Linux - iptables 防火墙
  • 如何在FBX剔除Lit.shader依赖
  • cesium-测量高度垂直距离
  • Adobe Illustrator CEP插件开发入门指南
  • 【Spring】自定义注解 + AOP 记录用户的使用日志