有以下程序:
#include <QApplication>
#include <QLabel>
int main(int argc, char** argv)
{
QApplication app(argc,argv);
QLabel* label = new QLabel(tr("Hello world"));
label->show();
return app.exec();
}
其中用tr包含的字符串qt会根据当前的qm文件进行翻译。实现步骤为,
- 在Qt工程文件helloworld.pro中添加一行:TRANSLATIONS = language_ch.ts (language_ch.ts为任意名字)。
TEMPLATE = vcapp
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
TRANSLATIONS = language_ch.ts
# Input
SOURCES += main.cpp
- 执行 lupdate helloworld.pro。language_ch.ts中内容更新了,被tr()标注的字符串被提取出来了。
- 执行 linguist language_ch.ts ,进行编辑,对提取的每个串进行翻译,也就是键入对应字串。
- 在“File”菜单下,单击"Release"项,这会生成我们需要的.qm文件。这里为language_ch.qm。
- 在程序中使用language_ch.qm,进行翻译,如把 “Hello world” 翻译为“你好,世界”就得到我们希望的语言了。
#include <QApplication>
#include <QLabel>
#include <QTranslator>
int main(int argc, char** argv)
{
QApplication app(argc,argv);
QTranslator translator;
translator.load("language_ch.qm");
app.installTranslator(&translator);
QLabel* label = new QLabel(QObject::tr("Hello world"));
label->show();
return app.exec();
}