#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文件。
  • 用语言学家进行翻译并保存.ts文件。
  • 运行lrelease将.ts文件编译为.qm文件。
  • 将.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/

    10-10 19:38