summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTarja Sundqvist <tarja.sundqvist@qt.io>2023-04-24 17:08:06 +0300
committerTarja Sundqvist <tarja.sundqvist@qt.io>2023-04-24 17:08:06 +0300
commit7918981beb4bcefea4f686370d38c99fcefaf33e (patch)
tree38298a9b906841f3e44c6666da821cc0f07ac202
parent1e7d50937f4b94c37a16f6370c0fd4ccb4329190 (diff)
parentd35b8c5a9687ef4b5d76d96c29f14f2c24e5bf2b (diff)
Merge remote-tracking branch 'origin/tqtc/lts-5.15.10' into tqtc/lts-5.15-opensourcev5.15.10-lts-lgpl
-rw-r--r--.qmake.conf2
-rw-r--r--src/linguist/linguist/translationsettingsdialog.cpp20
-rw-r--r--src/linguist/lprodump/main.cpp36
-rw-r--r--src/linguist/lrelease-pro/main.cpp3
-rw-r--r--src/qdoc/htmlgenerator.cpp39
-rw-r--r--tests/auto/qdoc/generatedoutput/expected_output/demos-manifest.xml2
-rw-r--r--tests/auto/qdoc/generatedoutput/expected_output/examples-manifest.xml4
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>