qt国际化遇到问题解决办法迭代翻译.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

概述

本文档主要介绍在迭代中遇到翻译问题,希望通过这个文档在5分中的时间里能够让读者在翻译过程中尽量避免

同样的错误,导致莫名其妙的翻译问题,浪费很多时间来找问题。

翻译过程中遇到难题

Delphi程序中经常有很多全局的常量,如果需要将这部分内容翻译到qt程序的界面中处理方法非常特别,不是很

好弄。就算用QObject::tr将全局变量中的内容包起来,ts文件也不会识别这些tr。如果确实需要解决方法请去请教段

冰。他找到了一些方法,但是听说比较麻烦。

建议:

尽量修改为局部变量吧。

界面类中没有加Q_OBJECT,导致无法正常翻译。这个问题是我从GDLDialog继承的子类无法翻译遇到的。

解决办法:

在界面类中加入Q_OBJECT,如果编译不过考虑工程文件中是否QT+=corewidgetsxmlgui

这句话是否加了gui。如果加了gui还是编译不过考虑用qmake这个工程。就应该可以编译过了。

例如:

Delphi中的定义的字符串如下

SGBG9Remark=

空分部:编码、名称皆为空,且不带子记录(子分部、等)#13#10

+空子目:编码为空#13#10

+空措施:措施名称为空,当计价方式为计价时,其组价内容也必须为空#13#10

+空措施标题:名称为空#13#10#13#10

+注:当行与行之间存在“父子”关系时,父记录行能否删除取决于子记录行。;

到c++中我们翻译如下:

ConstGStringSGBG9Remark=

“空分部:编码、名称皆为空,且不带子记录(子分部、等)\r\n”

+“空子目:编码为空\r\n”

+“空措施:措施名称为空,当计价方式为计价时,其组价内容也必须为空\r\n”

+“空措施标题:名称为空\r\n”

+“注:当行与行之间存在“父子”关系时,父记录行能否删除取决于子记录行。\r\n”

如果c++中的常量字符串这个时候已经被换成英文,但是为了换行我们直接在字符串的结尾处依然用\r\n

如果上面这个这个字符串用tr包起来后,因为\r\n的问题可能翻译不过来。

解决办法:

直接在翻译文件中换行如下图。

采用【qtcreatror】-【工具】-【外部工具】-【语言专家】-【更新翻译】来更新ts文件中的内容就会导致已经

删除的代码翻译依然存在于翻译文件中。本质是qt执行令是lupdate-verbose.\Module\Module.pro

解决办法:

在命令行工具中执行lupdate-verbose-no-obsolete.\Module\Module.pro命令就可以解决。目前在

\ProductPlatform\GBQ\Source下已经编写了UpdateTs.bat批处理命令,鼠标双击执行批处理文件即可解决跟新翻译

的问题。(目前这个文件只写了更新模型翻译令)

Qt方法

翻译文件总共分两大步骤,翻译文件的生成和翻译文件的加载。

一:在工程文件中添加TRANSLATIONS+=..\..\Release\Core\Languages\\language.ts这样一段话。

..\..\Release\Core\Languages\\language.ts表示你要生成的ts文件的位置。

如图:

二:可以在【qtcreatror】-【工具】-【外部工具】-【语言专家】-【更新翻译】生成ts文件,也可以通过命令

行生成ts文件。这两种方法区别在于上面章节说到的用qtcreateor执行更新翻

文档评论(0)

四季豆 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档