#include<QApplication>
#include<QTranslator>
#include<QObject>
#include<QTextCodec>
#include<QWidget>
int main(int argc, char* argv[])
{
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
QApplication app(argc, argv);
QTranslator translator;
translator.load("app_zh_CN.qm");
app.installTranslator(&translator);
QWidget widget;
widget.setWindowTitle(QObject::tr("Hello World!"));
widget.show();
return app.exec();
}
SOURCES += \
main.cpp
TRANSLATIONS += app_zh_CN.ts
Gui界面是“Hello World!”。也..但是在我的文件中,qm被翻译成“你好!”(中文)...
问题在哪里?谁能帮我..
最佳答案
如果将.qm文件放在“正确的”位置,则您的示例对我有用。 (请参见下文。)确保您已完成所有步骤:
lupdate
以创建.ts文件。 lrelease
将.ts文件编译为.qm文件。 我的猜测是#4会变坏。
QTranslator::load
的文档指出:但是,我必须将.qm文件放在上方的文件夹中,以使其能够按原样工作。除非我对文档有误解,否则这是Qt错误,但解决方法很简单。如果我将目录明确指定为
app.applicationDirPath
,那么它将在可执行文件文件夹中工作。您也可以指定一个单独的目录。例如:translator.load("app_zh_CN.qm");
适用于:[MyApp]
app_zh_CN.qm
[debug]
MyApp.exe
translator.load("app_zh_CN.qm", app.applicationDirPath());
适用于:[MyApp]
[debug]
app_zh_CN.qm
MyApp.exe
关于QTranslator不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9225779/