在网上学习了一下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. ionic搜索头部

    <div class="item-input-inset bar"> <form action="javascript:;" style=&q ...

  2. es6 对象简化写法-函数

    表达式还可以用于定义方法名. let obj = { ['h' + 'ello']() { return 'hi'; } }; obj.hello() // hi

  3. apache相关配置

    PHP配置 php.ini-development:开发时的php.ini配置 php.ini-production:项目运行时的php.ini配置 复制php.ini-development文件到C ...

  4. 1、jQuery概述

    JQuery基本功能  ① 访问和操作Dom元素  ② 控制页面样式  ③ 对页面事件的处理  ④ 大量插件在页面中的运用  ⑤ 与Ajax技术的完美结合      $(document).ready ...

  5. SQLiteDatabase 源码

    /** * Copyright (C) 2006 The Android Open Source Project * * Licensed under the Apache License, Vers ...

  6. 【VB编程】05.MsgBox与InputBox函数

    在VBA程序中,数据的输入输出是通过函数实现的,其实现的方式是通过对话框的形式表示出来的.例如MsgBox,Inputbox等,不要误认为是输入输出语句的关键字,其实仅仅是一个普通函数而已. [Msg ...

  7. windows下更换jdk运行当前jar包处理命令一则

    可在文本文档中新建以下内容 set JAVA_HOME=C:\jdk1.7.0_67set CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOMe%\lib\too ...

  8. hibernate 启动和辅助类实现资源的重复使用

    来自API: 1.2.5.  启动和辅助类 是时候来加载和储存一些Event对象了,但首先我们得编写一些基础的代码以完成设置.我们必须启动Hibernate,此过程包括创建一个全局的SessoinFa ...

  9. Android实现换肤功能(二)

    前两天写的上章关于换肤的功能获得了很好的反响,今天为大家介绍另一种方式.今天实现的策略也是网友建议的,然后我自己去写了个demo,大家自己评估下相比第一种方式的优势和劣势在哪里. 简单介绍下关于第一种 ...

  10. Java 连接 Oracle 数据库

    首先要导入ojdbc6.jar 包(放在lib文件夹) 然后需要在数据库建一个student表进行测试: 连接及测试代码: import java.security.interfaces.RSAKey ...