QTranslator类为文本输出提供国际化支持。
此类的一个对象包含一组从源语言到目标语言的转换。QTranslator提供了在翻译文件中查找翻译的功能。翻译文件是使用Qt Linguist创建的。
QTranslator最常见的用法是:加载一个翻译文件,使用QCoreApplication::installTranslator()安装它,并通过QObject::tr()使用它。下面是一个使用QTranslator的main()函数示例:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTranslator translator;
// look up e.g. :/translations/myapp_de.qm
if (translator.load(QLocale(), QLatin1String("myapp"), QLatin1String("_"), QLatin1String(":/translations")))
app.installTranslator(&translator);
QPushButton hello(QCoreApplication::translate("main", "Hello world!"));
hello.resize(100, 30);
hello.show();
return app.exec();
}
注意:QTranslator必须在应用程序的小部件之前创建。
大多数应用程序将永远不需要对该类执行任何其他操作。该类提供的其他函数对于处理翻译文件的应用程序非常有用。
查找翻译
可以使用translate()(作为tr()和QCoreApplication::translate() do)查找翻译。
virtual QString
translate(const char *context, const char *sourceText, const char *disambiguation = Q_NULLPTR, int n = -1) const
translate()函数有三个参数:
上下文——通常是tr()调用者的类名。
源文本——通常是tr()的参数。
消除歧义—一个可选的字符串,帮助消除同一文本在同一上下文中的不同用法的歧义。