Step1, 修改.pro文件
打开.pro文件,添加如下语句
TRANSLATIONS += app_en.ts app_zh.ts
Step2,生成翻译文件.ts
使用“lupdate”工具更新翻译。点击“工具”->“外部”->“Qt语言家”->“更新翻译lupdate”。这样就生成了2个语言文件:app_en.ts,app_zh.ts。分别存放英文,中文。
Step3,翻译
用linguist(在QT安装目录下的bin目录中),打开“app_zh.ts”,选择“编辑”->“翻译文件设置”,选择“Chinese/China”。
选中某一个字符串,在译文文本框中输入对应于中文的字符串,在翻译完成后一定记得点一下字符串前面的“?”,使其变成一个“√”。
最后选择“文件”->“另存发布为…”,将语言文件发布为“app_zh.qm”文件。
Step4,静态加载语言文件
在程序中添加对国际化的支持,将main.cpp文件修改为如下内容。
#include <QtGui/QApplication>
#include <QTranslator>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTranslatortranslator;
translator.load(QString(argv[1]));
a.installTranslator(&translator);
MainWindoww;
w.show();
return a.exec();
}
Step5,验证静态加载
重新执行make命令,生成可执行程序。在程序运行时通过传递命令行参数指定所使用的语言,注意不需要指定扩展名.qm,例如:
./myapp app_zh
./myapp app_en
Step4,动态加载语言文件
修改MainWindow.h文件内容如下:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTranslator>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_actionEnglish_triggered();
void on_actionChinese_triggered();
private:
Ui::MainWindow *ui;
QTranslator*translator;
};
#endif // MAINWINDOW_H
修改MainWindow.cpp文件内容如下:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
translator = newQTranslator();
ui->setupUi(this);
ui->retranslateUi(this);
}
MainWindow::~MainWindow()
{
qApp->removeTranslator(translator);
delete translator;
translator = NULL;
delete ui;
}
void MainWindow::on_actionEnglish_triggered()
{
translator->load("./mainwindow_en.qm");
qApp->installTranslator(translator);
ui->retranslateUi(this);
}
void MainWindow::on_actionChinese_triggered()
{
translator->load("./mainwindow_zh.qm");
qApp->installTranslator(translator);
ui->retranslateUi(this);
}
Step5, 验证动态加载
打开可执行程序,通过language菜单即可动态切换语言。