本帖最后由 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”);
---------------------------------------------------------------------------------------------------- 本教程的纸质书籍正在编写中,课程视频也在录制中,敬请关注。 ----------------------------------------------------------------------------------------------------
|