QML 程序国际化(一)

时间:2024-04-09 08:18:47

1.获取所需翻译的文本

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

  1. //创建菜单子项
  2. manageAction = new QAction(tr("vehicle management"),this);
  3. chartAction = new QAction(tr("Sales statistics"),this);
  4. quitAction = new QAction(tr("quit"),this);
  5. //设置快捷键
  6. manageAction->setShortcut(tr("Ctrl+M"));
  7. chartAction->setShortcut(tr("Ctrl+C"));
  8. quitAction->setShortcut(tr("Ctrl+Q"));
  9. //增加菜单项
  10. manageMenu = menuBar()->addMenu(tr("Sales management"));
  11. //添加子项
  12. manageMenu->addAction(manageAction);
  13. manageMenu->addAction(chartAction);
  14. //创建一个分隔符
  15. manageMenu->addSeparator();
  16. manageMenu->addAction(quitAction);
  17. //再添加一个菜单项
  18. passwordMenu = menuBar()->addMenu(tr("Change password"));

2.生成.ts文件

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

TRANSLATIONS = language.ts

编译程序后,点击更新翻译按钮:

QML 程序国际化(一)

会在项目目录下生成.ts文件:

QML 程序国际化(一)

3.翻译内容

使用Qt自带的工具打开.ts文件

QML 程序国际化(一)

QML 程序国际化(一)

4.生成.qm文件

点击发布翻译按钮:

QML 程序国际化(一)

在项目目录下生成了.qm文件

QML 程序国际化(一)

5.载入翻译文件

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

以上,就是Qt下使用翻译文件进行国际化的一个具体过程,亲测有效。