diff options
author | Tarja Sundqvist <tarja.sundqvist@qt.io> | 2023-04-24 17:08:06 +0300 |
---|---|---|
committer | Tarja Sundqvist <tarja.sundqvist@qt.io> | 2023-04-24 17:08:06 +0300 |
commit | 7918981beb4bcefea4f686370d38c99fcefaf33e (patch) | |
tree | 38298a9b906841f3e44c6666da821cc0f07ac202 | |
parent | 1e7d50937f4b94c37a16f6370c0fd4ccb4329190 (diff) | |
parent | d35b8c5a9687ef4b5d76d96c29f14f2c24e5bf2b (diff) |
Merge remote-tracking branch 'origin/tqtc/lts-5.15.10' into tqtc/lts-5.15-opensourcev5.15.10-lts-lgpl
Change-Id: I630285e7081453aef1948129efd7c368df513ef8
-rw-r--r-- | .qmake.conf | 2 | ||||
-rw-r--r-- | src/linguist/linguist/translationsettingsdialog.cpp | 20 | ||||
-rw-r--r-- | src/linguist/lprodump/main.cpp | 36 | ||||
-rw-r--r-- | src/linguist/lrelease-pro/main.cpp | 3 | ||||
-rw-r--r-- | src/qdoc/htmlgenerator.cpp | 39 | ||||
-rw-r--r-- | tests/auto/qdoc/generatedoutput/expected_output/demos-manifest.xml | 2 | ||||
-rw-r--r-- | tests/auto/qdoc/generatedoutput/expected_output/examples-manifest.xml | 4 |
7 files changed, 50 insertions, 56 deletions
diff --git a/.qmake.conf b/.qmake.conf index 3283eb34f..f3c8954d0 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -2,4 +2,4 @@ load(qt_build_config) DEFINES += QT_NO_JAVA_STYLE_ITERATORS QT_NO_LINKED_LIST -MODULE_VERSION = 5.15.9 +MODULE_VERSION = 5.15.10 diff --git a/src/linguist/linguist/translationsettingsdialog.cpp b/src/linguist/linguist/translationsettingsdialog.cpp index 5c567e59a..978887a29 100644 --- a/src/linguist/linguist/translationsettingsdialog.cpp +++ b/src/linguist/linguist/translationsettingsdialog.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Linguist of the Qt Toolkit. @@ -41,14 +41,16 @@ TranslationSettingsDialog::TranslationSettingsDialog(QWidget *parent) m_ui.setupUi(this); for (int i = QLocale::C + 1; i < QLocale::LastLanguage; ++i) { - QString lang = QLocale::languageToString(QLocale::Language(i)); - auto loc = QLocale(QLocale::Language(i)); - if (loc.language() != QLocale::English) { - QString nln = loc.nativeLanguageName(); - if (!nln.isEmpty()) { - //: <english> (<endonym>) (language and country names) - lang = tr("%1 (%2)").arg(lang, nln); - } + const auto language = QLocale::Language(i); + QString lang = QLocale::languageToString(language); + const auto loc = QLocale(language); + // Languages for which we have no data get mapped to the default locale; + // its endonym is unrelated to the language requested. For English, the + // endonym is the name we already have; don't repeat it. + if (loc.language() == language && language != QLocale::English) { + const QString native = loc.nativeLanguageName(); + if (!native.isEmpty()) //: <english> (<endonym>) (language names) + lang = tr("%1 (%2)").arg(lang, native); } m_ui.srcCbLanguageList->addItem(lang, QVariant(i)); } diff --git a/src/linguist/lprodump/main.cpp b/src/linguist/lprodump/main.cpp index 857786beb..fcad63221 100644 --- a/src/linguist/lprodump/main.cpp +++ b/src/linguist/lprodump/main.cpp @@ -104,6 +104,8 @@ static void printUsage() " Trace processing .pro files. Specify twice for more verbosity.\n" " -out <filename>\n" " Name of the output file.\n" + " -translations-variables <variable_1>[,<variable_2>,...]\n" + " Comma-separated list of QMake variables containing .ts files.\n" " -version\n" " Display the version of lprodump and exit.\n" )); @@ -272,11 +274,13 @@ static void excludeProjects(const ProFileEvaluator &visitor, QStringList *subPro } static QJsonArray processProjects(bool topLevel, const QStringList &proFiles, + const QStringList &translationsVariables, const QHash<QString, QString> &outDirMap, ProFileGlobals *option, QMakeVfs *vfs, QMakeParser *parser, bool *fail); -static QJsonObject processProject(const QString &proFile, ProFileGlobals *option, QMakeVfs *vfs, +static QJsonObject processProject(const QString &proFile, const QStringList &translationsVariables, + ProFileGlobals *option, QMakeVfs *vfs, QMakeParser *parser, ProFileEvaluator &visitor) { QJsonObject result; @@ -304,7 +308,7 @@ static QJsonObject processProject(const QString &proFile, ProFileGlobals *option subProFiles << subPro; } } - QJsonArray subResults = processProjects(false, subProFiles, + QJsonArray subResults = processProjects(false, subProFiles, translationsVariables, QHash<QString, QString>(), option, vfs, parser, nullptr); if (!subResults.isEmpty()) @@ -321,6 +325,7 @@ static QJsonObject processProject(const QString &proFile, ProFileGlobals *option } static QJsonArray processProjects(bool topLevel, const QStringList &proFiles, + const QStringList &translationsVariables, const QHash<QString, QString> &outDirMap, ProFileGlobals *option, QMakeVfs *vfs, QMakeParser *parser, bool *fail) { @@ -346,16 +351,20 @@ static QJsonArray processProjects(bool topLevel, const QStringList &proFiles, continue; } - QJsonObject prj = processProject(proFile, option, vfs, parser, visitor); + QJsonObject prj = processProject(proFile, translationsVariables, option, vfs, parser, + visitor); setValue(prj, "projectFile", proFile); - if (visitor.contains(QLatin1String("TRANSLATIONS"))) { - QStringList tsFiles; + QStringList tsFiles; + for (const QString &varName : translationsVariables) { + if (!visitor.contains(varName)) + continue; QDir proDir(QFileInfo(proFile).path()); - const QStringList translations = visitor.values(QLatin1String("TRANSLATIONS")); + const QStringList translations = visitor.values(varName); for (const QString &tsFile : translations) tsFiles << proDir.filePath(tsFile); - setValue(prj, "translations", tsFiles); } + if (!tsFiles.isEmpty()) + setValue(prj, "translations", tsFiles); result.append(prj); pro->deref(); } @@ -367,6 +376,7 @@ int main(int argc, char **argv) QCoreApplication app(argc, argv); QStringList args = app.arguments(); QStringList proFiles; + QStringList translationsVariables = { QStringLiteral("TRANSLATIONS") }; QString outDir = QDir::currentPath(); QHash<QString, QString> outDirMap; QString outputFilePath; @@ -409,6 +419,14 @@ int main(int argc, char **argv) return 1; } outDir = QDir::cleanPath(QFileInfo(args[i]).absoluteFilePath()); + } else if (arg == QLatin1String("-translations-variables")) { + ++i; + if (i == argc) { + printErr(LD::tr("The -translations-variables option must be followed by a " + "comma-separated list of variable names.\n")); + return 1; + } + translationsVariables = args.at(i).split(QLatin1Char(',')); } else if (arg.startsWith(QLatin1String("-")) && arg != QLatin1String("-")) { printErr(LD::tr("Unrecognized option '%1'.\n").arg(arg)); return 1; @@ -446,8 +464,8 @@ int main(int argc, char **argv) QMakeVfs vfs; QMakeParser parser(0, &vfs, &evalHandler); - QJsonArray results = processProjects(true, proFiles, outDirMap, &option, &vfs, - &parser, &fail); + QJsonArray results = processProjects(true, proFiles, translationsVariables, outDirMap, &option, + &vfs, &parser, &fail); if (fail) return 1; diff --git a/src/linguist/lrelease-pro/main.cpp b/src/linguist/lrelease-pro/main.cpp index 9f4ca259f..2bd45f61b 100644 --- a/src/linguist/lrelease-pro/main.cpp +++ b/src/linguist/lrelease-pro/main.cpp @@ -127,6 +127,9 @@ int main(int argc, char **argv) return 1; } + lprodumpOptions << QStringLiteral("-translations-variables") + << QStringLiteral("TRANSLATIONS,EXTRA_TRANSLATIONS"); + const QStringList proFiles = extractProFiles(&inputFiles); if (proFiles.isEmpty()) { printErr(LR::tr("lrelease-pro: No .pro/.pri files given.\n")); diff --git a/src/qdoc/htmlgenerator.cpp b/src/qdoc/htmlgenerator.cpp index 16abb2265..055a40229 100644 --- a/src/qdoc/htmlgenerator.cpp +++ b/src/qdoc/htmlgenerator.cpp @@ -3973,15 +3973,11 @@ void HtmlGenerator::generateManifestFile(const QString &manifest, const QString writer.writeCDATA(QString("No description available")); writer.writeEndElement(); // description - // Add words from module name as tags - // QtQuickControls -> qt,quick,controls - // QtOpenGL -> qt,opengl - QRegExp re("([A-Z]+[a-z0-9]*(3D|GL)?)"); - int pos = 0; - while ((pos = re.indexIn(project, pos)) != -1) { - tags << re.cap(1).toLower(); - pos += re.matchedLength(); - } + // Add module name as tag + QString moduleName = project; + if (moduleName.startsWith("Qt")) + moduleName = moduleName.mid(2); + tags << moduleName.toLower(); // Include tags added via \meta {tag} {tag1[,tag2,...]} // within \example topic @@ -3990,31 +3986,6 @@ void HtmlGenerator::generateManifestFile(const QString &manifest, const QString tags += QSet<QString>(tagList.cbegin(), tagList.cend()); } - const auto &titleWords = en->title().toLower().split(QLatin1Char(' ')); - tags += QSet<QString>(titleWords.cbegin(), titleWords.cend()); - - // Clean up tags, exclude invalid and common words - QSet<QString>::iterator tag_it = tags.begin(); - QSet<QString> modified; - while (tag_it != tags.end()) { - QString s = *tag_it; - if (s.at(0) == '(') - s.remove(0, 1).chop(1); - if (s.endsWith(QLatin1Char(':'))) - s.chop(1); - - if (s.length() < 2 || s.at(0).isDigit() || s.at(0) == '-' || s == QLatin1String("qt") - || s == QLatin1String("the") || s == QLatin1String("and") - || s.startsWith(QLatin1String("example")) || s.startsWith(QLatin1String("chapter"))) - tag_it = tags.erase(tag_it); - else if (s != *tag_it) { - modified << s; - tag_it = tags.erase(tag_it); - } else - ++tag_it; - } - tags += modified; - if (!tags.isEmpty()) { writer.writeStartElement("tags"); bool wrote_one = false; diff --git a/tests/auto/qdoc/generatedoutput/expected_output/demos-manifest.xml b/tests/auto/qdoc/generatedoutput/expected_output/demos-manifest.xml index d83906f44..9603ae6ec 100644 --- a/tests/auto/qdoc/generatedoutput/expected_output/demos-manifest.xml +++ b/tests/auto/qdoc/generatedoutput/expected_output/demos-manifest.xml @@ -3,7 +3,7 @@ <demos> <demo name="Demo" docUrl="qthelp://org.qt-project.test.001/test/test-demos-demo-example.html" projectPath="test/demos/demo/demo.pro" isTest="true"> <description><![CDATA[No description available]]></description> - <tags>demo,test</tags> + <tags>test</tags> </demo> </demos> </instructionals> diff --git a/tests/auto/qdoc/generatedoutput/expected_output/examples-manifest.xml b/tests/auto/qdoc/generatedoutput/expected_output/examples-manifest.xml index 8aa9ce303..8b45dd2a3 100644 --- a/tests/auto/qdoc/generatedoutput/expected_output/examples-manifest.xml +++ b/tests/auto/qdoc/generatedoutput/expected_output/examples-manifest.xml @@ -3,12 +3,12 @@ <examples> <example name="CMake Example Project" docUrl="qthelp://org.qt-project.test.001/test/test-cmaketest-example.html" projectPath="test/cmaketest/CMakeLists.txt" isTest="true"> <description><![CDATA[No description available]]></description> - <tags>cmake,project,test</tags> + <tags>test</tags> <fileToOpen mainFile="true">test/cmaketest/main.cpp</fileToOpen> </example> <example name="QML Documentation Example" docUrl="qthelp://org.qt-project.test.001/test/test-componentset-example.html" projectPath="tutorials/componentset/componentset.pro" isTest="true"> <description><![CDATA[Example for documenting QML types.]]></description> - <tags>documentation,qml,sample,test</tags> + <tags>sample,test</tags> </example> </examples> </instructionals> |