准备工作
- 在代码中将需要进行翻译的部分用
tr()
函数包裹起来。
- 在项目配置文件
*.pro
中加上TRANSLATIONS = en_US.ts zh_CN.ts
- 在菜单栏
工具
->外部
->Qt语言家
->更新翻译
,运行lupdate工具,这是会生成.ts文件
- 在菜单栏
文件
->打开文件,用..
选择.ts文件,完成翻译工作
- 在菜单栏
工具
->外部
->Qt语言家
->发布翻译
,运行lrelease工具,这是会生成.qm文件
根据当前的区域设置自动选择语言包(main.cpp)
1 2 3 4 5 6
| QApplication a(argc, argv); QString locale = QLocale::system().name(); QTranslator *translator = new QTranslator(&a); // 会在当前目录下的lang目录下寻找,可以不带".qm"后缀名 translator->load(QCoreApplication::applicationDirPath() + QString("/lang/" + locale)); a.installTranslator(translator); // 安装翻译器
|
函数实现动态切换(MainWindow.cpp)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| // 语言设置 void MainWindow::en_US(bool){ static QTranslator *translator; if(translator != NULL){ qApp->removeTranslator(translator); delete translator; translator = NULL; } translator = new QTranslator(this); // QCoreApplication::applicationDirPath() 获取当前运行程序的路径 // 而QDir::currentPath()只能获取当前程序运行路径的上一级路径 if(translator->load( QCoreApplication::applicationDirPath() + "/lang/en_US.qm")){ qDebug()<<"en_US"<<endl; qApp->installTranslator(translator); } ui->retranslateUi(this); //这一句很重要,加载建立完translator后需要更新界面 }
|
参考资料
[1]
Qt实现多国语言(即界面翻译)可实时进行切换
[2]
QT实现多语言/动态切换(国际化)