显示中文
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
|
多语言支持
为了在使用多语言,必须做两件事情:
1,把想要翻译的字符串放入tr()中,如 QString str=tr(“Legal”);
2, 在开始的时候载入预先制作好的翻译文件(.qm)。
1、生成TS文件
QT的国际化需要TS文件,我们可以通过以下方法创建TS文件
QT 工具 create new translation file
2、编辑TS文件
用QT自带的linguist工具,对代码里需要翻译的内容进行翻译,完成后进行发布,一般会在TS当前目录下生成QM文件
在QRC文件加入QM文件:
双击QRC文件,按照以下配置进行配置,主要用于load()函数
update 翻译文件
在应用程序代码中修改后添加某些翻译字符串后,“.ts”文件不会自动更新,需要在相应的“.ts”文件的右键菜单中点击“lupdate”项,才会更新。
lupdate xx.cpp -ts xx.ts
int main(int argc, char *argv[]) { QApplication a(argc, argv); QLocale myLocale; QString locale = myLocale.name();
QTextCodec * textCodec = QTextCodec::codecForName("System"); QTextCodec::setCodecForLocale(textCodec);
g_pTranslator = new QTranslator(&a); bool bRet = g_pTranslator->load("remotecom_en.qm"); if (!bRet) { qDebug(QString("can't load %1 translation").arg(locale).toLatin1().data()); } a.installTranslator(g_pTranslator); ... }
public: signals: void languagechange(int nType);
void remoteCom::menu_chinese() { emit languagechange(1); bool bRet = g_pTranslator->load(g_appPath + "\\language\\remotecom_zh.qm"); if (!bRet) { qDebug(QString("can't load remotecom_zh.qm translation").toLatin1().data()); } qApp->installTranslator(g_pTranslator); this->ui.retranslateUi(this); }
void remoteCom::menu_english() { emit languagechange(0); bool bRet = g_pTranslator->load(g_appPath + "\\language\\remotecom_en.qm"); if (!bRet) { qDebug(QString("can't load remotecom_en translation").toLatin1().data()); } qApp->installTranslator(g_pTranslator); this->ui.retranslateUi(this);
}
public slots: void languageChange(int type);
void Config::languageChange( int type ) { switch (type) { case 0: { QTranslator translator; bool bRet = translator.load(g_appPath + "\\language\\remotecom_en.qm"); if (!bRet) { qDebug(QString("can't load remotecom_en translation").toLatin1().data()); } qApp->installTranslator(&translator); this->ui.retranslateUi(this); } break; case 1: { QTranslator translator; bool bRet = translator.load(g_appPath + "\\language\\remotecom_zh.qm"); if (!bRet) { qDebug(QString("can't load remotecom_en translation").toLatin1().data()); } qApp->installTranslator(&translator); this->ui.retranslateUi(this); } break; default: qDebug("Config::languageChange type undefined."); break; } }
|