void TranslatorManager::setAppTranslator(const QString& lang) { qDebug() << "I18NDIR: " << I18NDIR; cleanAppTranslator(); ScopedQTranslator appTranslator( new QTranslator() ); if ( appTranslator->load(QString("lang_") + lang, QString("i18n")) || appTranslator->load(QString("lang_") + lang, I18NDIR) ) { QCoreApplication::installTranslator(appTranslator.data()); sm_appTranslator.swap( appTranslator ); } }
int main(int argc, char *argv[]) { appName = getFileName(argv[0]); qDebug("%s %s\nQt %s\n", APP_NAME, APP_VERSION_STR, qVersion()); opts_t options=opts_parse(argc,argv); ZApplication a(argc, argv/*, QApplication::GuiClient*/); #if CONFIG_QT4 QApplication::setApplicationName(APP_NAME); #if QT_VERSION >= QT_VERSION_CHECK(4, 4, 0) QApplication::setApplicationVersion(APP_VERSION_STR); #endif QApplication::setOrganizationName("Wang Bin"); #endif #if CONFIG_QT4 QString dirname = QCoreApplication::applicationDirPath(); #else QString dirname=QFileInfo(argv[0]).dirPath(); //QString dirname=getFileDir(argv[0]);// #endif //QDir::setCurrent(dirname); //bad in windows cygwin ZDEBUG("dir: %s",qPrintable(dirname)); QTranslator appTranslator(0); #if CONFIG_EZX QString sysLang=ZLanguage::getSystemLanguageCode(); appTranslator.load(APP_NAME "_" + sysLang, dirname + "/i18n"); //QString(dirname)+"/i18n" will load fail, 乱码 #else QString sysLang=QLocale::system().name(); appTranslator.load(APP_NAME "-" + sysLang, dirname + "/i18n"); #endif //CONFIG_EZX ZDEBUG("system language: %s",qPrintable(sysLang)); a.installTranslator(&appTranslator); //Need QtTranslator //QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK")); Qop qop; #if !CONFIG_QT4 a.setMainWidget(qop.progress); #endif //CONFIG_QT4 ZDEBUG("Steps from options: %d",options->steps); qop.setTimeFormat(options->time_format); qop.setInterval(options->interval); qop.setUpdateAllMessage(options->all_msg); if(!options->hide) qop.progress->show(); //order is important //qop.parser_type=options->parser_type; qop.setArchive(options->x_file); //internal method if(options->diy || argc<2) { qop.extract(options->x_file,options->out_dir); //qDebug("%s", options->x_file); } else if(!options->cmd==0) qop.execute(QString::fromLocal8Bit(options->cmd)); else { qop.parser_type=options->parser_type; ZDEBUG("steps %d",options->steps); qop.initParser(); if(options->unit==0) qop.parser->setCountType(QCounterThread::Size); else if(options->unit==1) qop.parser->setCountType(QCounterThread::Num); if(options->steps>0) { qop.parser->setRecount(false); qop.parser->setTotalSize(options->steps); //qop.progress->setMaximum(options->steps); } if(qop.steps<=0) { //compress if(options->steps>0) qop.parser->setTotalSize(options->steps); QStringList files=QStringList(); //why is optind? for(int i=options->optind;i<argc;++i) files<<argv[i]; qop.parser->setFiles(files); qop.parser->setMultiThread(options->multi_thread); qop.parser->startCounterThread(); } #if NO_SOCKET qop.parser->start(); #endif } #if CONFIG_EZX a.processEvents(); #endif //progress->exec(); if(options->auto_close) exit(0); return a.exec(); }