QT国际化,中英文等多语言界面显示的方法
在网上学习了一下QT的国际化使用方法,最后将自己试成功的方法总结例如以下:
当中遇到的问题有:生成的ts文件里 代码中的中文 有的不显示,有的显示乱码。
步骤1:
生成.ts文件,在pro项目文件里增加TRANSLATIONS =translate_zh_CN.ts,名字任取。且指定编码。这点非常重要,不然可能会在生成的ts 文件里包括乱码,不利于后期翻译。
TRANSLATIONS = translate_zh_CN.tstranslate_zh_EN.ts translate_zh_TW.ts
CODECFORTR = utf-8 #or gbk
#DEFAULTCODEC = utf-8
#CODEC = utf-8
注意,假设CODECFORTR 未定义。将找DEFAULTCODEC。假设还未定义,将找CODEC。3个都未定义的话,就採用latin1
步骤2:
在pro文件上右击,选择 “在此打开命令行控制台”
在命令行指定 ts 文件时,还须要在命令行指定编码。保证生成的ts文件里的中文不含乱码。
lupdate hello.pro -codecfortr utf-8
假设你的lupdate 工具所在文件夹未增加环境变量,将找不到此命令,你能够搜索查找到luddate.exe所在文件夹。然后运行:
C:\Qt\4.8.0\bin\lupdate.exehello.pro -codecfortr utf-8
将会生成之前在.pro文件里指定的三个ts文件translate_zh_CN.tstranslate_zh_EN.ts
translate_zh_TW.ts
步骤3:
再在命令窗体中输入linguist(翻译工具)。打开翻译工具;
或C:\Qt\4.8.0\bin\linguist.exe
弹出图形化界面工具。
然后就能够一个一个翻译了。最后点击linguist文件菜单中的公布,则会生成一个与ts文件同名的qm文件
步骤4:
在代码中须要的地方载入字符文件就可以
QTranslatortranslator;
translator.load("./translate_zh_CN.qm");
qApp->installTranslator(&translator);
ui->retranslateUi(this);
注:如是代码中的中文字符,须要翻译的,要用QObject::tr("草稿箱") 将中文字符包括起来,才会显示在ts文件里。
另一种生成qm的方法,比如在translate_zh_EN.ts 文件里将“帮助”翻译为“Help”
<message>
<locationfilename="mainwindow.ui" line="347"/>
<source>帮助</source>
<translationtype="unfinished">Help</translation>
</message>
然后用release 命令生成指定的qm文件。
C:\Qt\4.8.0\bin\lrelease.exe translate_zh_EN.ts -qm translate_zh_EN.qm
这样就能够任意调用不同的qm文件。自由转换软件界面的显示语言了。
QT国际化,中英文等多语言界面显示的方法的更多相关文章
- QT国际化 一 (lupdate/linguits/lrelease)
QT国际化(lupdate/linguits/lrelease) 本文由乌合之众瞎写http://www.cnblogs.com/oloroso/ qt国际化其实就是qt中字符串的字符集编码的设置.当 ...
- 【Qt】Qt国际化【转】
简介 Qt国际化属于Qt高级中的一部分,本想着放到后面来说,上节刚好介绍了Qt Linguist,趁热打铁就一起了解下. 对于绝大多数的应用程序,在刚启动时,需要加载默认的语言(或最后一次设置的语言) ...
- QT国际化(中英转换)
转载:https://blog.csdn.net/u012528526/article/details/54707233 QT国际化(中英转换) 我们都知道在安卓中,想做国际化很简单,只需要建立对应的 ...
- Qt国际化详细介绍,中文乱码以及解决方案
Qt国际化的一般步骤 运行 lupdate,从应用程序的代码中提取所有界面上的可见字符. 这些可见字符必须被 tr() .QCoreApplication::translate().Qt ...
- (二)ASP.NET中JavaScript的中英文(多语言)实现方案(二)
在ASP.NET中JavaScript的中英文(多语言)实现方案中简单的介绍了js实现多语言的一种方案.下面将要讲述另外一种方法,尽管很相似,但是有些地方也是需要细细琢磨的,不说了,先看看. 在Lan ...
- [转贴]从零开始学C++之异常(一):C语言错误处理方法、C++异常处理方法(throw, try, catch)简介
一.C语言错误处理方法 1.返回值(if … else语句判断错误) 2.errno(linux 系统调用) 3.goto语句(函数内局部跳转) 4.setjmp.longjmp(Do not use ...
- Oracle存储过程中不支持DML语言的解决方法(针对遇见的DROP关键字)
---存储过程中的原语句: ---删除表 DROP TABLE A_NEWTDDATA; --报错 经查询:存储过程不支持DML语言: 解决方法: execute immediate 'DROP TA ...
- Go语言的构建方法总结
趁着近期要换工作的空闲时间,看了一下Go语言,与C++相比,Go语言的确在不少地方轻便了不少,例如:增加了内置的字符串类型.多个返回值.支持协程.简单的构建方法等等.使得在生产效率方面有了不少的提高. ...
- 从零开始学C++之异常(一):C语言错误处理方法、C++异常处理方法(throw, try, catch)简介
一.C语言错误处理方法 1.返回值(if … else语句判断错误) 2.errno(linux 系统调用) 3.goto语句(函数内局部跳转) 4.setjmp.longjmp(Do not use ...
随机推荐
- APNS .p12文件转换为 .pem文件
1:先用mac的钥匙串工具,把APN的推送证书转换为 .p12文件: 2:在mac的终端下 把.p12文件转换为 .pem文件 openssl pkcs12 -in apns-dev-cert.p12 ...
- [读后感]spring Mvc 教程框架实例以及系统演示下载
[读后感]spring Mvc 教程框架实例以及系统演示下载 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致&qu ...
- Docker背后的内核知识——cgroups资源限制(转)
时间 2015-04-20 21:10:00 InfoQ 原文 http://www.infoq.com/cn/articles/docker-kernel-knowledge-cgroups-re ...
- ajax 异步 通信 小例子 servlet与 jsp异步 post方法
post请求 url后面加参数 接收不到的,必须 放到send("use"=user)形式 还要加上 xhr.setRequestHeader("Content-Type ...
- IIS7如何部署asp.net网站 (asp.net mvc 5 , asp.net 4.5 , asp.net 4.0 都可以 )
第一步:发布网站 右键asp.net web项目,选择发布, 然后新建配置文件名称并选择 "文件系统" 发布方法. 目标位置选择本地新建的文件夹如: IISWebSite 第二 ...
- 【转】C# 视频监控系列(12):H264播放器——播放录像文件
原文地址:http://www.cnblogs.com/over140/archive/2009/03/23/1419643.html?spm=5176.100239.blogcont51182.16 ...
- Azure 服务监控API调用
概述 在使用Azure的过程中,很多用户希望通过code的方式获取服务在管理门户中显示的监视信息,如虚拟机的CPU.服务总线的总消息出入数等.目前Azure的大部分服务都已经支持通过监控器的API查询 ...
- geopandas python地图绘制
#geopandas python地理数据处理 瓦片地图:瓦片地图金字塔模型是一种多分辨率层次模型,从瓦片金字塔的底层到顶层,分辨率越来越低,但表示的地理范围不变.首先确定地图服务平台所要提供的缩放级 ...
- C++ - 派生类强制转换为基类
派生类强制转换为基类 本文地址: http://blog.csdn.net/caroline_wendy/article/details/24268821 在多态的使用时, 派生类的指针或引用能够转换 ...
- 使用ng-grid实现可配置的表格
使用Angularjs在带来方便的同时,也有一些遗憾:很多基于jquery或其它的组件,在angularjs中需要集成一下才能用得流畅.但是一些比较复杂的组件,集成起来的工作量相当大,比如说grid. ...