tools/linguist/lrelease/main.cpp
branchRCL_3
changeset 5 d3bac044e0f0
parent 4 3b1da2848fc7
equal deleted inserted replaced
4:3b1da2848fc7 5:d3bac044e0f0
    38 ** $QT_END_LICENSE$
    38 ** $QT_END_LICENSE$
    39 **
    39 **
    40 ****************************************************************************/
    40 ****************************************************************************/
    41 
    41 
    42 #include "translator.h"
    42 #include "translator.h"
    43 #include "proreader.h"
    43 #include "profileevaluator.h"
    44 
    44 
    45 #ifndef QT_BOOTSTRAPPED
    45 #ifndef QT_BOOTSTRAPPED
    46 #include <QtCore/QCoreApplication>
    46 #include <QtCore/QCoreApplication>
    47 #include <QtCore/QTranslator>
    47 #include <QtCore/QTranslator>
    48 #endif
    48 #endif
   244     }
   244     }
   245 
   245 
   246     foreach (const QString &inputFile, inputFiles) {
   246     foreach (const QString &inputFile, inputFiles) {
   247         if (inputFile.endsWith(QLatin1String(".pro"), Qt::CaseInsensitive)
   247         if (inputFile.endsWith(QLatin1String(".pro"), Qt::CaseInsensitive)
   248             || inputFile.endsWith(QLatin1String(".pri"), Qt::CaseInsensitive)) {
   248             || inputFile.endsWith(QLatin1String(".pri"), Qt::CaseInsensitive)) {
   249             QHash<QByteArray, QStringList> varMap;
   249             QFileInfo fi(inputFile);
   250             bool ok = evaluateProFile(inputFile, cd.isVerbose(), &varMap);
   250             ProFile pro(fi.absoluteFilePath());
   251             if (ok) {
   251 
   252                 QStringList translations = varMap.value("TRANSLATIONS");
   252             ProFileEvaluator visitor;
   253                 if (translations.isEmpty()) {
   253             visitor.setVerbose(cd.isVerbose());
   254                     qWarning("lrelease warning: Met no 'TRANSLATIONS' entry in"
   254 
   255                              " project file '%s'\n",
   255             if (!visitor.queryProFile(&pro)) {
   256                              qPrintable(inputFile));
   256                 qWarning("lrelease error: cannot read project file '%s'.", qPrintable(inputFile));
   257                 } else {
   257                 continue;
   258                     foreach (const QString &trans, translations)
   258             }
   259                         if (!releaseTsFile(trans, cd, removeIdentical))
   259             if (!visitor.accept(&pro)) {
   260                             return 1;
   260                 qWarning("lrelease error: cannot process project file '%s'.", qPrintable(inputFile));
   261                 }
   261                 continue;
       
   262             }
       
   263 
       
   264             QStringList translations = visitor.values(QLatin1String("TRANSLATIONS"));
       
   265             if (translations.isEmpty()) {
       
   266                 qWarning("lrelease warning: Met no 'TRANSLATIONS' entry in"
       
   267                          " project file '%s'\n",
       
   268                          qPrintable(inputFile));
   262             } else {
   269             } else {
   263                 qWarning("error: lrelease encountered project file functionality that is currently not supported.\n"
   270                 QDir proDir(fi.absolutePath());
   264                     "You might want to consider using TS files as input instead of a project file.\n"
   271                 foreach (const QString &trans, translations)
   265                     "Try the following syntax:\n"
   272                     if (!releaseTsFile(QFileInfo(proDir, trans).filePath(), cd, removeIdentical))
   266                     "    lrelease [options] ts-files [-qm qm-file]\n");
   273                         return 1;
   267             }
   274             }
   268         } else {
   275         } else {
   269             if (outputFile.isEmpty()) {
   276             if (outputFile.isEmpty()) {
   270                 if (!releaseTsFile(inputFile, cd, removeIdentical))
   277                 if (!releaseTsFile(inputFile, cd, removeIdentical))
   271                     return 1;
   278                     return 1;