切换语言分为两种情况: 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")); /* ...... */ } 这两种情况,也可以复合起来用。 |