baizy77 发表于 2018-9-8 22:45:18

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

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

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

页: [1]
查看完整版本: 【独家连载】Qt进阶001:国际化的这种用法,您知道吗?