QT国际化(中英转换)
QT国际化(中英转换)
我们都知道在安卓中,想做国际化很简单,只需要建立对应的资源文件,在对应的strings里面修改字符即可。但在QT中相对会比较麻烦,没安卓那么简单,不过也不是很复杂,最近在弄国际化时,因为刚接触QT,对QT的了解还不是很深,所以有点无从下手,在经过各种百度谷歌之后,以及向法国人请教之后,总算搞定了,然后发现之前网上那些教程都很复杂,而且都是抄来抄去,完成之后我都没能理解他们的做法,也许是因为我刚接触QT还没法理解他们的写法。
首先我现在所做的QT项目,绝大部分都是通过qml直接实现的,QT的C++部分用的很少,只是用来获取数据封装成Model提供给qml使用,所以我所有需要转换的字符都是在qml当中,不过C++成字符的转换应该也是类似的,因为没做,不确定在c++层也同样有效,在qml是可以提取和实现的。
一. 将所有需要翻译的字符用qsTr()包起来,列如:
Text{
width: parent.width
height: 89
anchors.left: parent.left
anchors.leftMargin: 70
text:qsTr("蓝牙")
color:"#a97a54"
font.pixelSize: textSize
fontSizeMode:Text.HorizontalFit
verticalAlignment: Text.AlignVCenter
}
二. 在项目的.pro文件中添加两句话
//设置生成的语言库存放的路径,我这边是放在resources文件夹下面,生成中文和英文两种,不要认为是直接翻译好的,这两个文件刚生成的时内容是一样的,需要自己去翻译,这个后面会说。
TRANSLATIONS +=resources/tr_zh.ts \
resources/tr_en.ts
//这个设置所需要提取字符的文件路径,也就是你项目中包含字符的文件路径,可以使用通配符,如果后面提取失败,大都是这边路径写错,我一开始一直提取不出来就是路径写错,再啰嗦几句,在QT中,有实际路径跟虚拟路径,实际路径就是在你电脑盘符里面可以直接看到的,而虚拟路径是指通过QT编译器来创建的路径,在实际盘符中是不存在的。而此处写的应该是实际路径,相对于项目.pro文件的位置
lupdate_only{
SOURCES+ =文件路径
}
三. 然后通过工程的菜单: 工具 -> 外部 -> 语言专家 ->更新翻译(lupdate) 可以生成ts文件;
如果在控制台看到如上图的信息,那么所需翻译字符的提取就成功了,并且在resources文件夹下生成了.ts文件,如果为0,则需要再好好检查下路径是否有写错。
四.启动QT文件夹下的Linguist工具,打开刚刚所生成的.ts文件,进行翻译。
五.ts文件翻译保存之后,然后通过工程的菜单: 工具 -> 外部 -> 语言专家 ->发布翻译(lrelease) 可以生成对应的.qm文件,会跟.ts文件在同一目录,.qm文件就是我们所需要的语言库。
六.在main.cpp主函数中读取tr_en.qm文件
七.前面说了,在QT中有虚拟路径跟实际路径,qm文件虽然是在项目工程文件夹下,但是如果不通过IDE手动添加进去,IDE是识别不到的,也就无法读取,所以我的做法是,在资源下创建一个translator.qrc用来存放.qm文件,右键–>添加新文件–>QT–>Qt Resource File
将.qm文件添加到translator.qrc中
- 1
右键.qm文件Copy path,也就是第六步load该.qm文件的路径
- 1
至此,QT国际化中文与英文之间的切换就实现了,我这边的需求是项目设置中由用户去手动切换选择语言,对我们开发来说也就是换个.qm文件而已,当然也可以通过QLocale去判断本地语言环境来根据系统语言加载不同的语言库。在查资料的过程中发现有些人说,通过IDE工具更新和发布会出现提取不全的问题,而通过命令行更新和发布不会,如果有人遇到提取不全可以用命令行试试,我是没遇到这种问题。
刚开始学写博客,对QT也是刚刚接触,如果有理解错误的地方还望多多指点,谢谢。
QT国际化(中英转换)的更多相关文章
- 在windows下的QT编程中的_TCHAR与QString之间的转换
由于在windows下的QT编程中,如果涉及到使用微软的API,那么不可避免使用_TCHAR这些类型,因此在网上查了一下,其中一个老外的论坛有人给出了这个转换,因此在这里做一下笔记 : )#ifdef ...
- QT国际化 一 (lupdate/linguits/lrelease)
QT国际化(lupdate/linguits/lrelease) 本文由乌合之众瞎写http://www.cnblogs.com/oloroso/ qt国际化其实就是qt中字符串的字符集编码的设置.当 ...
- eclipse菜单解释及中英对照
在使用Eclipse作为开发工具的时候,建议使用英文版本的(直接百度从官网下就行,这里不详细描述,如果有问题,咱们私聊).虽然中文版本的对于和我一样对英文是小白的看起来特别爽,但是公司大多是英文版本的 ...
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和 ...
- Qt组件中的双缓冲无闪烁绘图
双缓冲绘图在Qt4中,所有的窗口部件默认都使用双缓冲进行绘图.使用双缓冲,可以减轻绘制的闪烁感.在有些情况下,用户要关闭双缓冲,自己管理绘图.下面的语句设置了窗口部件的Qt::WA_PaintOn ...
- 【Qt】Qt国际化【转】
简介 Qt国际化属于Qt高级中的一部分,本想着放到后面来说,上节刚好介绍了Qt Linguist,趁热打铁就一起了解下. 对于绝大多数的应用程序,在刚启动时,需要加载默认的语言(或最后一次设置的语言) ...
- Qt国际化详细介绍,中文乱码以及解决方案
Qt国际化的一般步骤 运行 lupdate,从应用程序的代码中提取所有界面上的可见字符. 这些可见字符必须被 tr() .QCoreApplication::translate().Qt ...
- webstorm快捷键 webstorm keymap内置快捷键英文翻译、中英对照说明
20160114参考网络上的快捷键,整理自己常用的: 查找/代替shift+shift 快速搜索所有文件,简便ctrl+shift+N 通过文件名快速查找工程内的文件(必记)ctrl+shift+al ...
- 在Qt(C++)中与Python混合编程
一.PythonQt库 在Qt(C++)中与Python混合编程,可以使用PythonQt库. 网站首页:http://pythonqt.sourceforge.net 下载页面:https://so ...
随机推荐
- 002.Postfix空客户端配置
一 空客户端介绍 空客户端必须满足(符合)以下条件: 本地发送的任何邮件都会转发到现有出站邮件中继以进行发送 本地postfix服务不接受任何电子邮件的本地发送 用户可以在空客户端运行邮件客户端来读取 ...
- CSS3利用一个div实现内圆角边框效果
*首先要清楚的是,box-shadow的形状会随着border-radius变化.下面的例子可以证明: <!doctype html> <html lang="en&quo ...
- JavaScript 对象Array,Map,Set使用
for(int i = 0 :i < 3 ;i++ ){ //[重点说三遍] 在说明每个对象的用法之前,首先说明 JavaScript 对象的使用一定要注意浏览器的兼容性问题!尤其是IE的版本! ...
- Codeforces Round #501 (Div. 3) F. Bracket Substring
题目链接 Codeforces Round #501 (Div. 3) F. Bracket Substring 题解 官方题解 http://codeforces.com/blog/entry/60 ...
- Codeforces Round #549 (Div. 1) 题解
link 前几天补完了某一场很早以前的div1,突然想来更博客,于是就有了这篇文章 A The Beatles 显然若起点和第一次到达的位置距离为 d ,那么经过的不同站点数为 $\frac{nk}{ ...
- [Java]类的生命周期(下)类的初始化[转]
上接深入java虚拟机——深入java虚拟机(二)——类加载器详解(上),在上一篇文章中,我们讲解了类的生命周期的加载和连接,这一篇我们接着上面往下看. 类的初始化:在类的生命周期执行完加载和连接之后 ...
- Linux学习笔记06—系统用户及用户组的管理
一.认识/etc/passwd和/etc/shadow 1./etc/passwd 由 ‘:’ 分割成7个字段,每个字段的具体含义是: 用户名 存放账号的口令:现在存放在/etc/shadow下,在这 ...
- xcode 拷贝新的ios image 进去以后 出现 the divices is locked
苹果公司时不时的给你更新下ios系统.对于开发者来说.更新xcode是灾难性的. 一直在用xcode7.3.1,可是最新不小心把手机升级到 ios 10.1.1,这下好了,真机调试不行了.提示没有镜像 ...
- Windows平台开发Mapreduce程序远程调用运行在Hadoop集群—Yarn调度引擎异常
共享原因:虽然用一篇博文写问题感觉有点奢侈,但是搜索百度,相关文章太少了,苦苦探寻日志才找到解决方案. 遇到问题:在windows平台上开发的mapreduce程序,运行迟迟没有结果. Mapredu ...
- jquery json 格式教程
介绍 我们知道AJAX技术能够使得每一次请求更加迅捷,对于每一次请求返回的不是整个页面,也仅仅是所需要返回的数据.通常AJAX通过返回XML格式的数据,然后再通过客户端复杂的JavaScript脚本解 ...