summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2022-03-23 16:56:21 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-03-28 19:06:00 +0000
commit468bf8d77ee00ab1b225e6f4f6640f7ca805f880 (patch)
treecad7d05ec4ab2c15420af16b571e00ab669fec6a
parent62fcb6dc5e663ab1620015874483a3fdfa6b0c66 (diff)
lrelease-pro: Take EXTRA_TRANSLATIONS into account
The QMake variable EXTRA_TRANSLATIONS contains .ts files that are only to be handled by lrelease but not lupdate. Teach lrelease-pro to understand this variable, but ignore it in lupdate-pro. Fixes: QTBUG-101782 Change-Id: I79e1c669480dc35dc61ecc149fe7ba1bba28ab29 Reviewed-by: Kai Koehne <kai.koehne@qt.io> (cherry picked from commit 2641698341456b8905ef1fbd58b51a80a61ef70d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/linguist/lprodump/main.cpp36
-rw-r--r--src/linguist/lrelease-pro/main.cpp3
2 files changed, 30 insertions, 9 deletions
diff --git a/src/linguist/lprodump/main.cpp b/src/linguist/lprodump/main.cpp
index eed1e706f..afc60655a 100644
--- a/src/linguist/lprodump/main.cpp
+++ b/src/linguist/lprodump/main.cpp
@@ -101,6 +101,8 @@ Options:
Trace processing .pro files. Specify twice for more verbosity.
-out <filename>
Name of the output file.
+ -translations-variables <variable_1>[,<variable_2>,...]
+ Comma-separated list of QMake variables containing .ts files.
-version
Display the version of lprodump and exit.
)"_qs);
@@ -269,11 +271,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;
@@ -301,7 +305,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())
@@ -318,6 +322,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)
{
@@ -343,16 +348,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);
if (visitor.contains(QLatin1String("LUPDATE_COMPILE_COMMANDS_PATH"))) {
const QStringList thepathjson = visitor.values(
QLatin1String("LUPDATE_COMPILE_COMMANDS_PATH"));
@@ -369,6 +378,7 @@ int main(int argc, char **argv)
QCoreApplication app(argc, argv);
QStringList args = app.arguments();
QStringList proFiles;
+ QStringList translationsVariables = { u"TRANSLATIONS"_qs };
QString outDir = QDir::currentPath();
QHash<QString, QString> outDirMap;
QString outputFilePath;
@@ -411,6 +421,14 @@ int main(int argc, char **argv)
return 1;
}
outDir = QDir::cleanPath(QFileInfo(args[i]).absoluteFilePath());
+ } else if (arg == u"-translations-variables"_qs) {
+ ++i;
+ if (i == argc) {
+ printErr(u"The -translations-variables option must be followed by a "_qs
+ u"comma-separated list of variable names.\n"_qs);
+ return 1;
+ }
+ translationsVariables = args.at(i).split(QLatin1Char(','));
} else if (arg.startsWith(QLatin1String("-")) && arg != QLatin1String("-")) {
printErr(QStringLiteral("Unrecognized option '%1'.\n").arg(arg));
return 1;
@@ -450,8 +468,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 31c660c2c..25ee854d7 100644
--- a/src/linguist/lrelease-pro/main.cpp
+++ b/src/linguist/lrelease-pro/main.cpp
@@ -116,6 +116,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(u"lrelease-pro: No .pro/.pri files given.\n"_qs);