假设有如下代码:
QString suffixlang;
if (AL_CHS == mAppLanguage) {
suffixlang = "zh_CN";
}
else {
suffixlang = "en_US";
}
if (AL_CHS == mAppLanguage) {
suffixlang = "zh_CN";
}
else {
suffixlang = "en_US";
}
const QString &appdatapath = this->applicationDirPath();
QTranslator mpQtTr;
bool bqtret = mpQtTr.load(appdatapath + "/qt_" + suffixlang);
if (bqtret){
this->installTranslator(&mpQtTr);
}
bool bqtret = mpQtTr.load(appdatapath + "/qt_" + suffixlang);
if (bqtret){
this->installTranslator(&mpQtTr);
}
运行程序之后发现字符并没有翻译。
正确的改法:
QString suffixlang;
if (AL_CHS == mAppLanguage) {
suffixlang = "zh_CN";
}
else {
suffixlang = "en_US";
}
if (AL_CHS == mAppLanguage) {
suffixlang = "zh_CN";
}
else {
suffixlang = "en_US";
}
const QString &appdatapath = this->applicationDirPath();
static QTranslator mpQtTr;
bool bqtret = mpQtTr.load(appdatapath + "/qt_" + suffixlang);
if (bqtret){
this->installTranslator(&mpQtTr);
}
bool bqtret = mpQtTr.load(appdatapath + "/qt_" + suffixlang);
if (bqtret){
this->installTranslator(&mpQtTr);
}
也就是说mpQtTr这个对象要一直存在。