add -list-languages option to lupdate
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>
Thu, 6 Oct 2011 14:56:16 +0000 (16:56 +0200)
committerQt by Nokia <qt-info@nokia.com>
Wed, 9 Nov 2011 19:54:21 +0000 (20:54 +0100)
(cherry picked from commit 3b3788a25f58fc443a48672c8e852e1c8658ac4e)

Change-Id: I4523cde9b12268790c32d4a129c962c3d48ed1b9
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
src/linguist/lupdate/main.cpp
src/linguist/shared/numerus.cpp
src/linguist/shared/translator.h

index 34bb792..4ed731f 100644 (file)
@@ -506,6 +506,9 @@ int main(int argc, char **argv)
                 || arg == QLatin1String("-h")) {
             printUsage();
             return 0;
+        } else if (arg == QLatin1String("-list-languages")) {
+            printOut(getNumerusInfoString());
+            return 0;
         } else if (arg == QLatin1String("-pluralonly")) {
             options |= PluralOnly;
             continue;
index 87f3aee..1ab300c 100644 (file)
@@ -394,4 +394,27 @@ bool getNumerusInfo(QLocale::Language language, QLocale::Country country,
     return false;
 }
 
+QString getNumerusInfoString()
+{
+    QStringList langs;
+
+    for (int i = 0; i < NumerusTableSize; ++i) {
+        const NumerusTableEntry &entry = numerusTable[i];
+        for (int j = 0; entry.languages[j] != EOL; ++j) {
+            QLocale loc(entry.languages[j], entry.countries ? entry.countries[j] : QLocale::AnyCountry);
+            QString lang = QLocale::languageToString(entry.languages[j]);
+            if (loc.language() == QLocale::C)
+                lang += QLatin1String(" (!!!)");
+            else if (entry.countries && entry.countries[j] != QLocale::AnyCountry)
+                lang += QLatin1String(" (") + QLocale::countryToString(loc.country()) + QLatin1Char(')');
+            else
+                lang += QLatin1String(" [") + QLocale::countryToString(loc.country()) + QLatin1Char(']');
+            langs << QString::fromLatin1("%1 %2 %3\n").arg(lang, -40).arg(loc.name(), -8)
+                                .arg(QString::fromLatin1(entry.gettextRules));
+        }
+    }
+    langs.sort();
+    return langs.join(QString());
+}
+
 QT_END_NAMESPACE
index 3b7bd64..d0da527 100644 (file)
@@ -254,6 +254,8 @@ private:
 bool getNumerusInfo(QLocale::Language language, QLocale::Country country,
                     QByteArray *rules, QStringList *forms, const char **gettextRules);
 
+QString getNumerusInfoString();
+
 bool saveQM(const Translator &translator, QIODevice &dev, ConversionData &cd);
 
 /*