tools/linguist/lrelease/main.cpp
branchRCL_3
changeset 5 d3bac044e0f0
parent 4 3b1da2848fc7
--- a/tools/linguist/lrelease/main.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/linguist/lrelease/main.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -40,7 +40,7 @@
 ****************************************************************************/
 
 #include "translator.h"
-#include "proreader.h"
+#include "profileevaluator.h"
 
 #ifndef QT_BOOTSTRAPPED
 #include <QtCore/QCoreApplication>
@@ -246,24 +246,31 @@
     foreach (const QString &inputFile, inputFiles) {
         if (inputFile.endsWith(QLatin1String(".pro"), Qt::CaseInsensitive)
             || inputFile.endsWith(QLatin1String(".pri"), Qt::CaseInsensitive)) {
-            QHash<QByteArray, QStringList> varMap;
-            bool ok = evaluateProFile(inputFile, cd.isVerbose(), &varMap);
-            if (ok) {
-                QStringList translations = varMap.value("TRANSLATIONS");
-                if (translations.isEmpty()) {
-                    qWarning("lrelease warning: Met no 'TRANSLATIONS' entry in"
-                             " project file '%s'\n",
-                             qPrintable(inputFile));
-                } else {
-                    foreach (const QString &trans, translations)
-                        if (!releaseTsFile(trans, cd, removeIdentical))
-                            return 1;
-                }
+            QFileInfo fi(inputFile);
+            ProFile pro(fi.absoluteFilePath());
+
+            ProFileEvaluator visitor;
+            visitor.setVerbose(cd.isVerbose());
+
+            if (!visitor.queryProFile(&pro)) {
+                qWarning("lrelease error: cannot read project file '%s'.", qPrintable(inputFile));
+                continue;
+            }
+            if (!visitor.accept(&pro)) {
+                qWarning("lrelease error: cannot process project file '%s'.", qPrintable(inputFile));
+                continue;
+            }
+
+            QStringList translations = visitor.values(QLatin1String("TRANSLATIONS"));
+            if (translations.isEmpty()) {
+                qWarning("lrelease warning: Met no 'TRANSLATIONS' entry in"
+                         " project file '%s'\n",
+                         qPrintable(inputFile));
             } else {
-                qWarning("error: lrelease encountered project file functionality that is currently not supported.\n"
-                    "You might want to consider using TS files as input instead of a project file.\n"
-                    "Try the following syntax:\n"
-                    "    lrelease [options] ts-files [-qm qm-file]\n");
+                QDir proDir(fi.absolutePath());
+                foreach (const QString &trans, translations)
+                    if (!releaseTsFile(QFileInfo(proDir, trans).filePath(), cd, removeIdentical))
+                        return 1;
             }
         } else {
             if (outputFile.isEmpty()) {