qt 翻译器在程序中不显示翻译后的文本

Far*_*d.M 0 multilingual qt qt-linguist

我使用 qt linguist 将我的程序翻译成不同的语言,但它没有显示他翻译了程序中的文本。我设置了正确的字体并将 .ts 文件添加到TRANSLATIONS.

我使用lupdatelrelease命令。

我怎样才能创建 .ts 文件?(我创建文本文件并将格式更改为 .ts,这是正确的方法吗?)

moh*_*uje 5

回顾Qt 翻译

要动态翻译应用程序:

1 - 打开 Qt 命令终端并转到项目文件夹。2 - 从项目中获取所有可翻译的字符串

lupdate -pro Example.pro -ts example.ts
Run Code Online (Sandbox Code Playgroud)

3 - 使用 QLinguist 将所有字符串翻译为您想要的语言 4 - 生成 .qm 文件并执行所有翻译:

lrelease example.ts
Run Code Online (Sandbox Code Playgroud)

5 - 将此文件 example.qm 作为资源添加到您的项目中,以将其包含在可执行文件中。资源系统

6 - 现在,使用QTranslator翻译应用程序:

QTranslator* translator = new QTranslator;
if(translator->load(":/"+example.qm)){
    qApp->removeTranslator(translator); // Remove the translator if was used before
    qApp->installTranslator(translator); // Install again the translator to force a new translation.
    qDebug() << "Translation success!" ;
}else{
    qDebug() << "Error file not found!";
}
Run Code Online (Sandbox Code Playgroud)

7 - 您可以使用changeEvent处理翻译事件:

void MainWindow::changeEvent(QEvent* event)
{
     if (event) {
          switch(event->type()) {
              // When the translator is loaded this event is send.
              case QEvent::LanguageChange:
                    break;
              // Whem the system language changes this event is send.
              case QEvent::LocaleChange:
                    //retranslate the ui.
                    break;
              default:
                    break;
          }
     }
     QMainWindow::changeEvent(event);
}
Run Code Online (Sandbox Code Playgroud)

这就是大家!