1.国际化支持的实现
Qt自己提供了一种国际化方案,而不是采用INI配置文件的方式。Qt中的国际化方法与GNU gettext类似,它提供了tr()函数与gettext()函数对应,而翻译后的资源文件则以".qm"命名,且其国际化的机制与它的元对象系统紧密相关。
在支持国际化的过程中,通常在Qt中利用QString、QTranslator等类和tr()函数能够很方便地完成国际化支持,具体工作如下。
1.使用QString对象表示所有用户可见的文本。由于QString内部使用Unicode编码实现,所以可以用于表示所有需要向用户呈现的文本。当然,对于仅程序员可见的文本并需要都变成QString对象,可利用Qt提供的QCString或原始的"char*".
2.使用tr()函数获取所有需要翻译的文本。在Qt的翻译机制下,QObject::tr()函数可以帮程序员取得翻译之后的文本。对于从QObject继承而来的类,QObject::tr()函数最终由QMetaObject::tr()实现。在某些时候,如果无法使用QObject::tr()函数,则还可以直接调用QCoreApplication::translate()获取翻译之后的字符串。
3.使用QString::arg()组织动态文本
QString m = tr("My name is %1 age is %2").arg(x