博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt笔记-翻译机制
阅读量:6305 次
发布时间:2019-06-22

本文共 922 字,大约阅读时间需要 3 分钟。

i) Qt的翻译机制入门:

      0)以tr("<英文文本>")封装需要翻译的文本,比如:ui->label->setText(tr("Date"));

      1)在工程.pro文件中写入: TRANSLATION += <.pro's name>_ZH_CN.ts #这里语言和区域名字一定要严格,否则之后生成的同名.qm文件无法被Qt翻译器加载#
      2)利用命令行工具lupdate -verbose -no-obsolete <.pro'path and name>生成.ts文件。-no-obsolete参数表示生成的.ts文件中检测并剔除代码中不再存在的tr("<               英文文本>")。使用Qt Creator的“工具”->"外部"->"Qt语言家"->"更新翻译(lupdate)",等同于上述的lupdate -verbose,即:跳过检测过期的翻译原始文本。
      3)在工程的资源文件中添加这个.ts文件
      4)利用Qt翻译家翻译这个.ts文件并发布为.qm文件
      5)把.qm文件添加入资源文件中
      6)在main.cpp中写如下语句:QTranslator translator;
                                                     translator.load(<资源文件中的.qm文件路径和名字>);
      7)如果6)的返回值为true,那么把main.cpp中的QApplication对象执行.installTranslator(&translator); 这样翻译文件就加载完成了。
         注意:若qt可以找到正确命名后的qm文件但却无法加载qm文件,可以先删除build目录再编译运行。

ii)  tr()函数的参数如果为宏定义的字符串,那么这种字符串是无法被翻译的。

iii) tr()函数的参数如果是变量,(似乎?)需要通过tr("%1").arg(<QString>)解决。

iv) 任何需要翻译的文本所在的类的.h文件中均需要声明Q_OBJECT宏,否则lupdate工具无法检测到需要翻译的原始文本。

v)  建议需要翻译的原始文本以英文书写。因为这样会使因字符编码差异造成的兼容性问题最小化。

转载于:https://www.cnblogs.com/r0xFED/p/9716031.html

你可能感兴趣的文章
oracle数据泵导入分区表统计信息报错(四)
查看>>
spring技术内幕读书笔记之IoC容器的学习
查看>>
细说多线程(五) —— CLR线程池的I/O线程
查看>>
JavaScript instanceof和typeof的区别
查看>>
Hadoop文件系统详解-----(一)
查看>>
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(8)--- 主动器...
查看>>
状态码
查看>>
我的友情链接
查看>>
用sqlplus远程连接oracle命令
查看>>
多年一直想完善的自由行政审批流程组件【2002年PHP,2008年.NET,2010年完善数据设计、代码实现】...
查看>>
自动生成四则运算题目
查看>>
【翻译】使用新的Sencha Cmd 4命令app watch
查看>>
【前台】【单页跳转】整个项目实现单页面跳转,抛弃iframe
查看>>
因为你是前端程序员!
查看>>
数据库设计中的14个技巧
查看>>
Android学习系列(5)--App布局初探之简单模型
查看>>
git回退到某个历史版本
查看>>
ecshop
查看>>
HTML5基础(二)
查看>>
在GCE上安装Apache、tomcat等
查看>>