QTranslator不起作用

Mr.*_*.Tu 11 qt

#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();
}
Run Code Online (Sandbox Code Playgroud)

SOURCES += \
    main.cpp

TRANSLATIONS += app_zh_CN.ts
Run Code Online (Sandbox Code Playgroud)

Gui界面是"Hello World!" 也..但在我的文件中.qm被翻译为"你好!"(中文)...在哪里是preblem?谁能帮我..

Dav*_*eer 19

如果我将.qm文件放在"正确"的位置,那么您的示例适用于我.(见下文.)确保您正在执行所有步骤:

  1. 运行lupdate以创建.ts文件.
  2. 在Linguist中进行翻译并保存.ts文件.
  3. 运行lrelease以将.ts文件编译为.qm文件.
  4. 将.qm文件复制到正确的位置.

我的猜测是#4变坏了.QTranslator::load各州的文件:

如果目录没有指定,应用程序的可执行文件的目录被使用(即作为applicationDirPath()).

但是,我必须将.qm文件放在可执行文件上方的文件夹中,以使其按原样运行.除非我误解了文档,否则这是一个Qt错误,但是很容易解决.如果我明确地给出了目录app.applicationDirPath,它在可执行文件夹中工作.您还可以指定单独的目录.例如:

translator.load("app_zh_CN.qm"); 适用于:

[MyApp]
  app_zh_CN.qm
  [debug]
    MyApp.exe
Run Code Online (Sandbox Code Playgroud)

translator.load("app_zh_CN.qm", app.applicationDirPath()); 适用于:

[MyApp]
  [debug]
    app_zh_CN.qm
    MyApp.exe
Run Code Online (Sandbox Code Playgroud)