假设我们已经建好一个工程,且可以运行出基本的界面。
1、打开项目工程文件QTDemo.pro,添加如下语句:
TRANSLATIONS += en.ts zh_CN.ts zh_TW.ts
2、然后在命令行窗口中输入以下命令:
lupdate QTDemo.pro
这样就生成了3个语言文件:en.ts,zh_CN.ts,zh_TW.ts
3、用linguist(在QT安装目录下的bin目录中)打开zh_CN.ts(简体中文),选择“编辑”->“翻译文件设置…”,选择Chinese/China:选中某一个字符串,在译文文本框
中输入对应于中文的字符串:
同理,进行zh_TW.ts(繁体中文)文件的翻译,en.ts(英文)文件不用翻译。
4、用 lrelease QTDemo.pro  将对应的.ts文件生成.qm文件,.qm文件比较紧凑、体积小。
5、在程序中添加对国际化的支持,将main.cpp修改为如下内容:
      #include 
      #include 
      #include "QtDemo.h"
      int main(int argc, char **argv)
      {
         QApplication app(argc, argv);
         //以下3句话是装载的程序
         QTranslator translator;
         translator.load(QString(argv[1]));
         app.installTranslator(&translator);
         QtDemo *dlg = new QtDemo;
         dlg->show();
         return app.exec();
      }     
重新执行make命令,生成可执行程序。 
在运行程序时通过传递命令行参数指定所使用的语言,注意不需要指定扩展名.qm,例如:
./QTDemo zh_CN  就出现中文的界面了,其他的依次类推。

转载自:http://bbs.csdn.net/topics/370099673

注意事项:生成的.qm文件要放到运行目录下,不然加载不上国际化文件

获取程序运行目录方法:

  1. QString path;
  2. QDir dir;
  3. path=dir.currentPath();
  4. QMessageBox::warning(0,"PATH",path,QMessageBox::Yes);//查看路径
  5. 转载自:http://blog.163.com/soyo_gogogo/blog/static/171414077201213112640267/
  6. QT国际化 中英转换

    2012-02-05 21:11:41|  分类: 学习手记 |  标签:qt国际化  中英互译  qtlinguist使用  一些注意点   |举报 |字号 订阅

    本文提及如何使用QT和QT Linguist来实现翻译,如果你对所谓动态翻译感兴趣,请移步到其他文章。笔者也推荐一本叫《精通QT4 GUI 编程》的书,里面第18章有提及动态的(既不用关闭程序实现“一点即换”)翻译。

    网上有许多关于QT国际化的文章。这里也简单讲述一次。
    1、qm文件和ts文件。

    ts文件是程序员是用的翻译文件。你有几种方法可以得到这样的文件。
    (1) 针对整个项目:在项目文件中加入 TRANSLATION +=  abc.ts(abc是自定的文件名)。那么你可以使用Qt自带的控制台,输入命令 lupdate myPro.pro(myPro是自定的项目名称)。Qt就会为你在项目文件的同一目录下生成一个abc.ts文件。输入命令时要么当前目录就是pro文件所在目录,要就在pro文件名前带上绝对或相对路径。
    当你lupdate你的pro文件是,Qt会将ui文件中所有的可见字符以及你在程序用使用  tr 括起来所有字符放入到ts文件中。
    (2) 针对单个文件,这只适用于一些特定场景或者个人使用习惯。当你往项目里头添加了新的带有需要翻译文本的文件后,你完全可以直接再次lupdate一次整个项目,Qt不会覆盖你在abc.ts中已经做好的任何翻译。 当然你也可以lupdate单个文件,命令和上一个是一样的 : lupdate  文件的绝对路径或相对路径 -ts 要生成的ts文件名和文件路径,例如:
    l update ../app/test.cpp  -ts ./testTs.ts
    那么Qt就是在你指定的路径下生成你指定的文件名的ts文件。
    qm文件是程序能识别的二进制的翻译文件。通过发布一个ts文件来产生。命令很简单: lrelease abc.ts。 那么Qt 会为你在abc.ts的同名目录下生成一个同名的qm文件。qm文件是QTranslator应该读入的文件,关于QTranslator,就移步到Qt的帮助手册吧。
    下图是Qt自带的控制台。

       













    2、处理ts文件
        
    处理ts文件当然也有多种方法。 你可以使用Qt Linguist打开,也可以使用任何支持XML文本格式的工具打开。个人比较喜欢使用notepad++ 来处理ts文件而不是Qt Linguist(别笑我低端)。
    如下是Qt Linguist中打开ts文件的样子 , 黄色的框是你的文件列表,点选文件后会在红色的框内显示所有tr括起来的语句或者是ui中的可见字符串。绿色框是当前翻译中的文本和翻译后的文本。黑色框是文本在代码中的具体位置,帮助你精确翻译,但是这部分常常不可用。那些文件名和源语句前的钩钩只是用来标记完成度的,完成就打成绿色的钩,自己打,但是不影响翻译的。

    个人更喜欢用notepad++,顺便一提吧。如下是notepad++打开ts的样子,刚好是一个完整的context。<context>标签是一个文件所有需翻译文本集合的开始标志。<name>标签指明了文件中的类名称。<message>是一条需翻译语句的开始标记。<location>是语句在文件中的行数,因此<location>可能在同一个<message>中出现多次。<source>需翻译的语句,要精确,连空格个数不一样都不能匹配。<translation>是翻译后的语句,这个标签一个开始是<translation type = "unfinished"> ,好像是这样的,表示语句没有翻译好,当你在notepad++中确实完成翻译后记得将type部分删掉,带有这个unfinished标志的语句是即使翻译好也不会被写入qm文件中的。

     
       
    最后,你需要一个年轻貌美的女同事,既熟悉英文,又温柔体贴。而且不会在你忘得不可开交但剩下30%翻译任务的时候也不肯帮你一把。祝你好运,coder。

      3、我的工程使用了Qt的控件,但是Qt的控件中字符都是英文的……
            
            不要紧,到你的Qt安装目录下搜一下.ts文件,你会发现其实Qt已经为我们准备好了非常多的ts文件。刚刚这个问题中,我们就找到qt_zh_CN.ts文件,这是一个有qt控件简体中文翻译的文件。你完全可以把这个文件放到你的工程中去(你不会跟计较那几百k的空间吧!?),然后通过文本工具,往这个文件中添加<context> , 例如你可以将你的项目的ts文件直接拷贝到qt_zh_CN.ts文件的最后面(为了好找) ,然后lrelease这个qt_zh_CN.ts文件。你就会发现Qt控件中的英文也变成中文了,而且还添加了你自己的部分。
     4、我想为我的工程添加繁体翻译

           方法同上,不过这次你要找的文件叫qt_ch_TW.ts(Qt在这就做得不对了哈!什么TaiWan 和 China的,都一个地方),这个文件有Qt所有控件的繁体中文翻译。你甚至可以讲qt_zh_CN.ts的内容拷贝到word中,然后简转繁,再覆盖原来的ts文件来完成这个任务。不论怎样,完成繁体翻译吧骚年!
     5、关于动态语言切换

           个人对这个没有什么认识。但是我只提一个问题:动态翻译是否在你的工程中非有不可? 如果不是,就稍稍偷个懒吧。我的建议有两个,一个比较傻瓜。1.在用户安装你的应用的过程中(安装包),让用户选定一个语言,安装完成后不可以改变。相信这个不会影响用户的使用体验,因为没有人会装B到明明英文不好却是要用英文安装,安装后又作贱地想换回中文的(你?)。 2.在应用中给用户一个设置选项,让用户可以选择语言,但是选择语言后提示需要重启本应用。这个办法比较傻瓜。在用户重启你的应用时,你就有机会让你的QTranslator重新load一个不同的qm文件,这样就可以完成语言切换。个人偏向第一种方法,也稍稍省点心吧,别让自己太容易暴毙吧coder。
     6、QTranslator的一些问题
           
          一个QApplication会有一个translator。translator可以remove,也可以install。下面是笔者一个简单的程序来设置语言:
    1.先定义我的qm文件的路径先
    2.根据系统的QLocale判断应该load哪个qm文件

    那个optionManager是用来读注册表的。这个跟应用本身有关。

    3. 准备一个接口,然App在启动时load好qm文件。

    这样大概就是使用过程了。其他的话聪明的你应该可以理解的了。

    7、 哪个QLocale::Language表示中文繁体啊??
     
            这个问题问题得好啊。在Qt的QLocale中的Language枚举中是没有中文繁体的。那怎么办?我这里给有一个不是建议的建议,那就认为,这台机子不是英文和中文的话,就是中文繁体(中文指中文简体)。用一个估计少见的Language表示中文繁体,写注册表时,遇到就这个Language项,就认为是中文繁体。load的时候就用繁体的qm。好了,就说到这个程度,这样的损招再说的话那些老鸟又要表示不屑了。    

     8、请使用命令行获得.qm文件,而不是QT Linguist的”发布为"或者“另外发布为”~!!

         这里很可能是我的机器问题。但是那天工作时遇到的问题确实就在于此。如果你用QT Linguist的发布功能,你可能会和我一样发现很多句子都不能翻译,但是你检查你的ts文件时却没有问题。如果有人看到了这里,并且有机会实践,请帮忙看看情况是不是真的如此。如果可以的话请给我留个言。或者直接向Qt 提BUG。

qtnbsp;中文国际化相关推荐

  1. 国际化域名 idn linux,CLUB中文国际化域名(IDN)9月开放注册

    [IT168 资讯]2016年9月6日,.CLUB顶级域名将正式对外开放中文IDN域名的注册.IDN的中文被译作国际化域名,简单的来说,使用者可以使用中文字符加上.CLUB域名后缀作为网站网址..CL ...

  2. SpringBoot项目国际化

    SpringBoot项目国际化 1. 创建国际化文件Resource Bundle 项目结构图: springboot项目工程详细结构 国际化文件结构图: springboot国际化文件 在Intel ...

  3. EasyUI学习总结(五)——EasyUI组件使用

    EasyUI学习总结(五)--EasyUI组件使用 一.EasyUI组件的简单介绍 easyUI提供了很多组件让我们使用,如下图所示: 使用这些组件可以帮助我们快速地进行项目开发,下面以一个用户登录程 ...

  4. Activiti Modeler发布以及教程

    1.新版Activiti Modeler简介 在Activiti 5.6版本之前把Activiti Modeler作为压缩包的一部分,但是后来不再这么做而是需要开发人员自己根据Signavio打包Ac ...

  5. EasyUI学习总结(一)——EasyUI入门

    一.EasyUI下载 EasyUI官方下载地址:http://www.jeasyui.com/download/index.php,目前最新的版本是:jQuery EasyUI 1.4.1 下载完成之 ...

  6. eclipse使用小技巧

    1. eclipse自带内存监视及回收插件   菜单 Window => Preferences => General => 右边,把 Show Heap Status 打上勾就会在 ...

  7. select2,利用ajax高效查询大数据列表(可搜索、可分页)

    版权声明:欢迎转载,请注明沉默王二原创. https://blog.csdn.net/qing_gee/article/details/72519313 select2是一款jquery插件,是普通f ...

  8. php mb开启,windows环境下如何为php开启mb_string函数库功能

    1.确保你的Windows/system32下有php_mbstring.dll这个文件,没有就从你Php安装目录extensions里拷入Windows/system32里面. 2.在windows ...

  9. 【世间万象】五甲万科董事长孙凯歌:五甲有红旗情节

    关键词:五甲万科 五甲万科孙凯歌 五甲万科红旗情节 [世间万象]五甲万科董事长孙凯歌:五甲有红旗情节,科红旗并购案已经尘埃落定.<第一财经日报>记者周四从五甲万京信息科技产业集团(以下简称 ...

最新文章

  1. DataWorks V2使用PyUdf
  2. tomcat进程意外退出的问题分析
  3. c语言填空三个数找中间大小,计算机文化基础复习题及答案(精华)
  4. 2018年 第09届 蓝桥杯 Java B组 决赛真题详解及小结
  5. 头条的_signature这个如何_今日头条详细页面的cookie加密
  6. jquery实现上下左右键盘监听_jQuery监听键盘事件及相关操作使用
  7. 最担心的事情还是发生了!三星折叠屏手机翻车:闪屏、黑屏、“脱皮”
  8. U盘的针脚板竟然掉了
  9. Pascal voc 2012 数据集简介
  10. 面试明明聊的很开心,为什么要挂我!
  11. 我们试用了市面上几款微信自动化软件,哪家弱哪家强?
  12. 我的MacOS上的软件
  13. python与excel教程_Python对Excel操作教程
  14. 515. 在每个树行中找最大值(中等 树 广度优先搜索 二叉树)
  15. 安利!王一博与海飞丝的清爽秘籍
  16. 深度学习数据增强数据扩增方法
  17. C++ RALL机制详解
  18. vscode 舒服的颜色字体
  19. 通过nginx防护可疑攻击的配置指引
  20. 搭建私服以及私服的使用

热门文章

  1. DB2 创建、删除索引
  2. 计算机专业打游戏哪个笔记本好,打游戏的笔记本电脑推荐_2020最强悍的游戏笔记本...
  3. java 显示word,javaweb浏览器显示word
  4. 记一次数据库中大量html和svg组成的json字符串 如何处理为数组
  5. 《游戏大师Chris Crawford谈互动叙事》一6.3 作为比喻的建模过程
  6. 30个视频号运用方法,你都知道哪些?(四)
  7. 隔离级别、SI 和 SSI(四种隔离级别和快照隔离)
  8. 电脑硬盘丢了文件怎么办
  9. 张小庆,在路上(4)-从哪里开始呢
  10. 大话说github for linux客户端基本操作(三)之月光宝盒