⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
字号:
/******************************************************************************** Copyright (C) 1992-2006 Trolltech ASA. All rights reserved.**** This file is part of the Qt Linguist of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include "metatranslator.h"#include "proparser.h"#include <QDir>#include <QFile>#include <QFileInfo>#include <QRegExp>#include <QString>#include <QStringList>#include <QTextStream>#include <errno.h>typedef QList<MetaTranslatorMessage> TML;static void printUsage(){    fprintf( stderr, "Usage:\n"              "    lrelease [options] project-file\n"              "    lrelease [options] ts-files [-qm qm-file]\n"              "Options:\n"              "    -help  Display this information and exit\n"              "    -nocompress\n"              "           Do not compress the .qm files\n"              "    -nounfinished\n"              "           Do not include unfinished translations\n"              "    -verbose\n"              "           Explain what is being done\n"              "    -version\n"              "           Display the version of lrelease and exit\n" );}static bool loadTsFile( MetaTranslator& tor, const QString& tsFileName,                        bool /* verbose */ ){    QString qmFileName = tsFileName;    qmFileName.replace( QRegExp("\\.ts$"), "" );    qmFileName += ".qm";    bool ok = tor.load( tsFileName );    if ( !ok )        fprintf( stderr,                 "lrelease warning: For some reason, I cannot load '%s'\n",                 tsFileName.toLatin1().data() );    return ok;}static void releaseMetaTranslator( const MetaTranslator& tor,                                   const QString& qmFileName, bool verbose,                                   bool ignoreUnfinished, bool trimmed ){    if ( verbose )        fprintf( stderr, "Updating '%s'...\n", qmFileName.toLatin1().constData() );    if ( !tor.release(qmFileName, verbose, ignoreUnfinished,                      trimmed ? Translator::Stripped                               : Translator::Everything) )        fprintf( stderr,                 "lrelease warning: For some reason, I cannot save '%s'\n",                 qmFileName.toLatin1().constData() );}static void releaseTsFile( const QString& tsFileName, bool verbose,                           bool ignoreUnfinished, bool trimmed ){    MetaTranslator tor;    if ( loadTsFile(tor, tsFileName, verbose) ) {        QString qmFileName = tsFileName;        qmFileName.replace( QRegExp("\\.ts$"), "" );        qmFileName += ".qm";        releaseMetaTranslator( tor, qmFileName, verbose, ignoreUnfinished,                               trimmed );    }}int main( int argc, char **argv ){    bool verbose = false;    bool ignoreUnfinished = false;    bool trimmed = true;    bool metTranslations = false;    MetaTranslator tor;    QString outputFile;    int numFiles = 0;    int i;    for ( i = 1; i < argc; i++ ) {        if ( qstrcmp(argv[i], "-nocompress") == 0 ) {            trimmed = false;            continue;        } else if ( qstrcmp(argv[i], "-nounfinished") == 0 ) {            ignoreUnfinished = true;            continue;        } else if ( qstrcmp(argv[i], "-verbose") == 0 ) {            verbose = true;            continue;        } else if ( qstrcmp(argv[i], "-version") == 0 ) {            fprintf( stderr, "lrelease version %s\n", QT_VERSION_STR );            return 0;        } else if ( qstrcmp(argv[i], "-qm") == 0 ) {            if ( i == argc - 1 ) {                printUsage();                return 1;            } else {                i++;                outputFile = argv[i];                argv[i][0] = '-';            }        } else if ( qstrcmp(argv[i], "-help") == 0 ) {            printUsage();            return 0;        } else if ( argv[i][0] == '-' ) {            printUsage();            return 1;        } else {            numFiles++;        }    }    if ( numFiles == 0 ) {        printUsage();        return 1;    }    for ( i = 1; i < argc; i++ ) {        if ( argv[i][0] == '-' )            continue;        QFile f( argv[i] );        if ( !f.open(QIODevice::ReadOnly) ) {#if defined(_MSC_VER) && _MSC_VER >= 1400			char buf[100];			strerror_s(buf, sizeof(buf), errno);			fprintf( stderr,                     "lrelease error: Cannot open file '%s': %s\n", argv[i],                     buf );#else            fprintf( stderr,                     "lrelease error: Cannot open file '%s': %s\n", argv[i],                     strerror(errno) );#endif            return 1;        }        QTextStream t( &f );        QString fullText = t.readAll();        f.close();        if ( fullText.contains(QString("<!DOCTYPE TS>"))) {            if ( outputFile.isEmpty() ) {                releaseTsFile( argv[i], verbose, ignoreUnfinished,                               trimmed );            } else {                loadTsFile( tor, argv[i], verbose );            }        } else {            QString oldDir = QDir::currentPath();            QDir::setCurrent( QFileInfo(argv[i]).path() );            QMap<QString, QString> tagMap;            if (proFileTagMap( fullText, &tagMap )) {                QMap<QString, QString>::Iterator it;                for ( it = tagMap.begin(); it != tagMap.end(); ++it ) {                    QStringList toks = it.value().split(' ');                    QStringList::Iterator t;                    for ( t = toks.begin(); t != toks.end(); ++t ) {                        if ( it.key() == QString("TRANSLATIONS") ) {                            metTranslations = true;                            releaseTsFile( *t, verbose, ignoreUnfinished,                                           trimmed );                        }                    }                }                if ( !metTranslations )                    fprintf( stderr,                             "lrelease warning: Met no 'TRANSLATIONS' entry in"                             " project file '%s'\n",                             argv[i] );                QDir::setCurrent( oldDir );            }        }    }    if ( !outputFile.isEmpty() )        releaseMetaTranslator( tor, outputFile, verbose, ignoreUnfinished,                              trimmed );    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -