在网上学习了一下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国际化,中英文等多语言界面显示的方法的更多相关文章

  1. QT国际化 一 (lupdate/linguits/lrelease)

    QT国际化(lupdate/linguits/lrelease) 本文由乌合之众瞎写http://www.cnblogs.com/oloroso/ qt国际化其实就是qt中字符串的字符集编码的设置.当 ...

  2. 【Qt】Qt国际化【转】

    简介 Qt国际化属于Qt高级中的一部分,本想着放到后面来说,上节刚好介绍了Qt Linguist,趁热打铁就一起了解下. 对于绝大多数的应用程序,在刚启动时,需要加载默认的语言(或最后一次设置的语言) ...

  3. QT国际化(中英转换)

    转载:https://blog.csdn.net/u012528526/article/details/54707233 QT国际化(中英转换) 我们都知道在安卓中,想做国际化很简单,只需要建立对应的 ...

  4. Qt国际化详细介绍,中文乱码以及解决方案

    Qt国际化的一般步骤 运行 lupdate,从应用程序的代码中提取所有界面上的可见字符.        这些可见字符必须被 tr() .QCoreApplication::translate().Qt ...

  5. (二)ASP.NET中JavaScript的中英文(多语言)实现方案(二)

    在ASP.NET中JavaScript的中英文(多语言)实现方案中简单的介绍了js实现多语言的一种方案.下面将要讲述另外一种方法,尽管很相似,但是有些地方也是需要细细琢磨的,不说了,先看看. 在Lan ...

  6. [转贴]从零开始学C++之异常(一):C语言错误处理方法、C++异常处理方法(throw, try, catch)简介

    一.C语言错误处理方法 1.返回值(if … else语句判断错误) 2.errno(linux 系统调用) 3.goto语句(函数内局部跳转) 4.setjmp.longjmp(Do not use ...

  7. Oracle存储过程中不支持DML语言的解决方法(针对遇见的DROP关键字)

    ---存储过程中的原语句: ---删除表 DROP TABLE A_NEWTDDATA; --报错 经查询:存储过程不支持DML语言: 解决方法: execute immediate 'DROP TA ...

  8. Go语言的构建方法总结

    趁着近期要换工作的空闲时间,看了一下Go语言,与C++相比,Go语言的确在不少地方轻便了不少,例如:增加了内置的字符串类型.多个返回值.支持协程.简单的构建方法等等.使得在生产效率方面有了不少的提高. ...

  9. 从零开始学C++之异常(一):C语言错误处理方法、C++异常处理方法(throw, try, catch)简介

    一.C语言错误处理方法 1.返回值(if … else语句判断错误) 2.errno(linux 系统调用) 3.goto语句(函数内局部跳转) 4.setjmp.longjmp(Do not use ...

随机推荐

  1. 赵雅智_service生命周期

    Android中的服务和windows中的服务是类似的东西,服务一般没实用户操作界面.它执行于系统中不easy被用户发觉,能够使用它开发如监控之类的程序. 服务的开发步骤 第一步:继承Service类 ...

  2. docker build 的 cache 机制

    cache 机制注意事项 可以说,cache 机制很大程度上做到了镜像的复用,降低存储空间的同时,还大大缩短了构建时间.然而,不得不说的是,想要用好 cache 机制,那就必须了解利用 cache 机 ...

  3. Linux修改时间的方法

    http://www.blogjava.net/itvincent/archive/2007/08/03/134242.html修改linux的时间可以使用date指令 在命令行输入: date 显示 ...

  4. LocalOutlierFactor算法回归数据预处理

    sklearn.neighbors.LocalOutlierFactor¶ class sklearn.neighbors.LocalOutlierFactor(n_neighbors=20, alg ...

  5. Spring学习笔记(四)-- Spring事务全面分析

    通过本系列的文章对Spring的介绍,我们对Spring的使用和两个核心功能IOC.AOP已经有了初步的了解,结合我个人工作的情况,因为项目是金融系 统.那对事务的控制是不可缺少的.而且是很严格的控制 ...

  6. Laravel之路(事务)mysql事务

    其实关于mysql的事务(原声mysql语句),我在我的博客里面有提到(mysql的文章分类下) 今天看下基于laravel框架ORM的处理 准备: 表必须是InnoDB引擎 DB::beginTra ...

  7. Hibernate一级缓存和二级缓存具体解释

    一.一级缓存二级缓存的概念解释 (1)一级缓存就是Session级别的缓存,一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中.假设短时间内这个 session(一定要同一个ses ...

  8. 点滴积累【C#】---将Excel数据导入到数据库

    本文修改来源:http://www.cnblogs.com/chenyuming507950417/p/3169267.html 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: ...

  9. Atitit.Base64编码原理与实现设计

    Atitit.Base64编码原理与实现设计 1. Base64编码1 1.1. 为什么要用自己的base64编码方案1 2. Base64编码由来1 3. Base64编码原理1 3.1. 具体来说 ...

  10. 文件上传之 commons-fileupload(二)

    对commons fileupload上传组件的简单封装 在上一篇文章<利用Jakarta commons fileupload组件实现多文件上传>中,我介绍了commons fileup ...