切换语言分为两种情况:
1. 程序载入的时候,根据当前的区域设置,自动选择语言包(.qm),即可;
2. 要求在程序运行过程中动态切换语言,需要
第一种情况,一般在main函数中程序启动的部分加入如下代码:
QString locale = QLocale::system().name()); // for example: zh_CN, en_US
QTranslator *translator = new QTranslator(app);
translator->load(QString("./language/" + locale)); // 会在当前目录下的language目录下寻找,可以不带".qm"后缀名
app->installTranslator( translator ); // 安装翻译器
第二种情况,我们假设有一个QComboBox连接了changeLang的槽:
connect(langCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeLang(int)) );
// 载入不同的语言包
void WizarDialog::changeLang( int langIndex )
{
QTranslator *translator = new QTranslator(qApp);
switch( langCombo->currentIndex() ){
case 0:
translator->load(QString("./language/pt_BR"));
break;
case 1:
translator->load(QString("./language/en_US"));
break;
case 2:
translator->load(QString("./language/zh_CN"));
default:
break;
}
qApp->installTranslator( translator );
this->initGUI();
}
// initGUI() 中会有大量的tr函数
void WizarDialog::initGUI()
{
this->setWindowTitle(tr("RTA04W"));
/* ...... */
}
这两种情况,也可以复合起来用。
|