找回密码
 立即注册
收起左侧

【独家连载】Qt进阶001:国际化的这种用法,您知道吗?

0
回复
4478
查看
[复制链接]
累计签到:41 天
连续签到:1 天
来源: 原创 2018-9-8 22:45:18 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 baizy77 于 2018-9-28 21:53 编辑

原创文章,转载请注明出处。
----------------------------------------------------------------------------------------------------
我们都知道Qt提供的国际化机制是用来进行语言翻译的。一般情况下,会在某个类中使用tr(xxx),然后在翻译文件(.ts)中编写中英文对照的翻译文本即可。这是常用的国际化编程方式。
但有时候,我们会碰到一些经常重复的翻译文本,比如“OK”、“Cancel”、或者一些告警信息文本等。这些字符串会在代码的多处进行使用,并且通常不属于同一个类。
碰到这种情况该咋办呢?别急,我们有办法解决。
首先,请建立一个公共字符串解析类CCommonStringTS,该类要从QObject派生。因为只有从QObject派生的类才能调用tr*()。

// commonstringts.h
class CCommonStringTS : public QObject
{
       Q_OBJECT
};

然后,请将该类以及需要翻译的字符串添加到.ts文件。
<context>
   <name>CCommonStringTS</name>
   <message>
       <source>OK</source>
       <translation >确定</translation>
   </message>   
<message>
       <source>Cancel</source>
       <translation >取消</translation>
   </message>
<message>
       <source>File Not Exist</source>
       <translation >文件不存在</translation>
   </message>
</context>

       最后,在代码中包含该类的头文件,并调用其tr():
       #includecommonstringts.h
       CCommonStringTS::tr(“OK”);
       CCommonStringTS::tr(“Cancel”);
       CCommonStringTS::tr(“FileNot Exist”);

----------------------------------------------------------------------------------------------------
本教程的纸质书籍正在编写中,课程视频也在录制中,敬请关注。
----------------------------------------------------------------------------------------------------


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了