31Usage:
32 lrelease-pro [options] [project-file]...
33lrelease-pro is part of Qt's Linguist tool chain. It extracts project
34information from qmake projects and passes it to lrelease.
35All command line options that are not consumed by lrelease-pro are
36passed to lrelease.
37
38Options:
39 -help Display this information and exit
40 -keep Keep the temporary project dump around
41 -silent
42 Do not explain what is being done
43 -version
44 Display the version of lrelease-pro and exit
45)"_s);
48int main(
int argc,
char **argv)
50 QCoreApplication app(argc, argv);
51#ifndef QT_BOOTSTRAPPED
53 QTranslator translator;
54 QTranslator qtTranslator;
55 QString sysLocale = QLocale::system().name();
56 QString resourceDir = QLibraryInfo::path(QLibraryInfo::TranslationsPath);
57 if (translator.load(QLatin1String(
"linguist_") + sysLocale, resourceDir)
58 && qtTranslator.load(QLatin1String(
"qt_") + sysLocale, resourceDir)) {
59 app.installTranslator(&translator);
60 app.installTranslator(&qtTranslator);
65 bool keepProjectDescription =
false;
66 QStringList inputFiles;
67 QStringList lprodumpOptions;
68 QStringList lreleaseOptions;
70 for (
int i = 1; i < argc; ++i) {
71 if (!strcmp(argv[i],
"-keep")) {
72 keepProjectDescription =
true;
73 }
else if (!strcmp(argv[i],
"-silent")) {
74 const QString arg = QString::fromLocal8Bit(argv[i]);
75 lprodumpOptions << arg;
76 lreleaseOptions << arg;
77 }
else if (!strcmp(argv[i],
"-version")) {
78 printOut(QStringLiteral(
"lrelease-pro version %1\n")
79 .arg(QLatin1String(QT_VERSION_STR)));
81 }
else if (!strcmp(argv[i],
"-help")) {
84 }
else if (strlen(argv[i]) > 0 && argv[i][0] ==
'-') {
85 lreleaseOptions << QString::fromLocal8Bit(argv[i]);
87 inputFiles << QString::fromLocal8Bit(argv[i]);
91 if (inputFiles.isEmpty()) {
96 lprodumpOptions << QStringLiteral(
"-translations-variables")
97 << QStringLiteral(
"TRANSLATIONS,EXTRA_TRANSLATIONS");
99 const QStringList proFiles = extractProFiles(&inputFiles);
100 if (proFiles.isEmpty()) {
101 printErr(u"lrelease-pro: No .pro/.pri files given.\n"_s);
104 if (!inputFiles.isEmpty()) {
105 printErr(QStringLiteral(
"lrelease-pro: Only .pro/.pri files are supported. "
106 "Offending files:\n %1\n")
107 .arg(inputFiles.join(QLatin1String(
"\n "))));
111 lprodumpOptions << proFiles;
112 std::unique_ptr<QTemporaryFile> projectDescription = createProjectDescription(lprodumpOptions);
113 if (keepProjectDescription)
114 projectDescription->setAutoRemove(
false);
115 lreleaseOptions << QStringLiteral(
"-project") << projectDescription->fileName();
117 runQtTool(QStringLiteral(
"lrelease"), lreleaseOptions);