NotePublic/Software/Development/Environment/Qt/Modules/Qt_国际化.md

1.7 KiB
Raw Blame History

Qt 国际化

获取所需翻译的文本

在代码中需要翻译的文本的都需要用下面的方式使用 tr() 括起来。

//创建菜单子项
manageAction = new QAction(tr("vehicle management"),this);
chartAction = new QAction(tr("Sales statistics"),this);
quitAction = new QAction(tr("quit"),this);
//设置快捷键
manageAction->setShortcut(tr("Ctrl+M"));
chartAction->setShortcut(tr("Ctrl+C"));
quitAction->setShortcut(tr("Ctrl+Q"));
//增加菜单项
manageMenu = menuBar()->addMenu(tr("Sales management"));
//添加子项
manageMenu->addAction(manageAction);
manageMenu->addAction(chartAction);
//创建一个分隔符
manageMenu->addSeparator();
manageMenu->addAction(quitAction);
//再添加一个菜单项
passwordMenu = menuBar()->addMenu(tr("Change password"));

生成 .ts 文件

修改.Pro文件添加下面的内容

TRANSLATIONS = language.ts

编译程序后,点击 Qt Creator 的“Tools->External->Linguist->Update Translations(lupdate)”更新翻译文件,会在项目目录下生成/更新 .ts 文件。

翻译内容

使用 Qt Linguist 打开 .ts 文件,进行翻译:

Qt Linguist 工具

翻译文件生效后,回到 Qt Creator点击“Tools->External->Linguist->Release Translations(lrelease)”,在项目目录下生成 .qm 文件。

载入翻译文件

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //一定要在界面显示之前载入翻译文件
    QTranslator *qtTranslator = new QTranslator;
    if(qtTranslator->load("./language.qm")){
        a.installTranslator(qtTranslator);
    }
    Widget w;
    w.show();
    return a.exec();
}

注:可以在任何时候更换 Translation 文件。