#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被翻译为“你好!”(中文)... 在哪里是preblem?谁能帮帮我......
答案 0 :(得分:19)
如果我将.qm文件放在“正确”的位置,那么您的示例适用于我。 (见下文。)确保您正在执行所有步骤:
lupdate
以创建.ts文件。lrelease
将.ts文件编译为.qm文件。我的猜测是#4变坏了。 QTranslator::load
州的文档:
如果未指定目录,则为应用程序的目录 使用可执行文件(即,作为applicationDirPath())。
但是,我必须将.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