Allow translators to specify external .qm file for testing

Normally translation files are embedded inside the application's
executable.
But allow translators to use external .qm file for testing
purposes.

Ref #118
This commit is contained in:
Floris Bos 2020-11-19 20:23:09 +01:00
parent 7195694dbd
commit d217f63768

View file

@ -60,8 +60,7 @@ int main(int argc, char *argv[])
NetworkAccessManagerFactory namf; NetworkAccessManagerFactory namf;
QQmlApplicationEngine engine; QQmlApplicationEngine engine;
QTranslator translator; QTranslator translator;
if (translator.load(QLocale(), "rpi-imager", "_", QLatin1String(":/i18n"))) QString customQm;
QCoreApplication::installTranslator(&translator);
/* Parse commandline arguments (if any) */ /* Parse commandline arguments (if any) */
QString customRepo; QString customRepo;
@ -114,6 +113,22 @@ int main(int argc, char *argv[])
imageWriter.setCustomOsListUrl(QUrl::fromLocalFile(customRepo)); imageWriter.setCustomOsListUrl(QUrl::fromLocalFile(customRepo));
} }
} }
else if (args[i] == "--qm")
{
if (args.size()-i < 2 || args[i+1].startsWith("-"))
{
cerr << "Missing QM file after --qm" << endl;
return 1;
}
customQm = args[++i];
QFileInfo fi(customQm);
if (!fi.isFile())
{
cerr << "Custom QM file does not exist or is not a regular file: " << customQm << endl;
return 1;
}
}
else if (args[i] == "--debug") else if (args[i] == "--debug")
{ {
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
@ -129,7 +144,7 @@ int main(int argc, char *argv[])
} }
else if (args[i] == "--help") else if (args[i] == "--help")
{ {
cerr << args[0] << " [--debug] [--version] [--repo <repository URL>] [<image file to write>]" << endl; cerr << args[0] << " [--debug] [--version] [--repo <repository URL>] [--qm <custom qm translation file>] [<image file to write>]" << endl;
return 0; return 0;
} }
else if (args[i] == "--version") else if (args[i] == "--version")
@ -144,6 +159,17 @@ int main(int argc, char *argv[])
} }
} }
if (customQm.isEmpty())
{
if (translator.load(QLocale(), "rpi-imager", "_", QLatin1String(":/i18n")))
QCoreApplication::installTranslator(&translator);
}
else
{
if (translator.load(customQm))
QCoreApplication::installTranslator(&translator);
}
if (!url.isEmpty()) if (!url.isEmpty())
imageWriter.setSrc(url); imageWriter.setSrc(url);
imageWriter.setEngine(&engine); imageWriter.setEngine(&engine);