QTranslator不起作用

时间:2012-02-10 09:47:59

标签: 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();
}
  

SOURCES += \
    main.cpp

TRANSLATIONS += app_zh_CN.ts

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

1 个答案:

答案 0 :(得分:19)

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

  1. 运行lupdate以创建.ts文件。
  2. 在Linguist中翻译并保存.ts文件。
  3. 运行lrelease将.ts文件编译为.qm文件。
  4. 将.qm文件复制到正确的位置。
  5. 我的猜测是#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