summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/component.cpp
diff options
context:
space:
mode:
authorKai Koehne <kai.koehne@theqtcompany.com>2015-08-19 16:39:18 +0200
committerKai Koehne <kai.koehne@theqtcompany.com>2015-08-19 16:39:18 +0200
commitc417d953f743b8a273ea36ff7d7b1dc8b761d518 (patch)
tree4bc08bf733ba04a7846db8289ba7003a961bad82 /src/libs/installer/component.cpp
parentc53747138d2f48138ee6e12149064344e668634d (diff)
parentd343cd20410ecb2741c85877c8203579dc7c227d (diff)
Merge remote-tracking branch 'origin/2.0'
Conflicts: Changelog dist/config/config.xml dist/packages/org.qtproject.ifw.binaries/meta/package.xml dist/packages/org.qtproject.ifw/meta/package.xml installerfw.pri src/libs/installer/component.cpp src/libs/kdtools/updatesinfo.cpp Change-Id: I0a1b4a464f7d9008b589b54dd7aed0cac71bd666
Diffstat (limited to 'src/libs/installer/component.cpp')
-rw-r--r--src/libs/installer/component.cpp38
1 files changed, 24 insertions, 14 deletions
diff --git a/src/libs/installer/component.cpp b/src/libs/installer/component.cpp
index cabaa9231..688a5b928 100644
--- a/src/libs/installer/component.cpp
+++ b/src/libs/installer/component.cpp
@@ -42,6 +42,7 @@
#include "packagemanagercore.h"
#include "remoteclient.h"
#include "settings.h"
+#include "utils.h"
#include "updateoperationfactory.h"
@@ -595,23 +596,32 @@ void Component::loadLicenses(const QString &directory, const QHash<QString, QVar
if (!ProductKeyCheck::instance()->isValidLicenseTextFile(fileName))
continue;
- QFileInfo fileInfo(fileName);
- QFile file(QString::fromLatin1("%1%2_%3.%4").arg(directory, fileInfo.baseName(),
- QLocale().name().toLower(), fileInfo.completeSuffix()));
- if (!file.exists()) {
- file.setFileName(QString::fromLatin1("%1%2_%3.%4").arg(directory, fileInfo.baseName(),
- QLocale().name().left(2), fileInfo.completeSuffix()));
+ QFileInfo fileInfo(directory, fileName);
+ foreach (const QString &lang, QLocale().uiLanguages()) {
+ if (QLocale(lang).language() == QLocale::English) // we assume English is the default language
+ break;
+
+ QList<QFileInfo> fileCandidates;
+ foreach (const QString &locale, QInstaller::localeCandidates(lang.toLower())) {
+ fileCandidates << QFileInfo(QString::fromLatin1("%1%2_%3.%4").arg(
+ directory, fileInfo.baseName(), locale,
+ fileInfo.completeSuffix()));
+ }
+
+ auto fInfo = std::find_if(fileCandidates.constBegin(), fileCandidates.constEnd(),
+ [](const QFileInfo &file) {
+ return file.exists();
+ });
+ if (fInfo != fileCandidates.constEnd()) {
+ fileInfo = *fInfo;
+ break;
+ }
}
+ QFile file(fileInfo.filePath());
if (!file.open(QIODevice::ReadOnly)) {
- // No translated license, use untranslated file
- qDebug().nospace() << "Unable to open translated license file" << file.fileName()
- << ". Using untranslated fallback.";
- file.setFileName(directory + fileName);
- if (!file.open(QIODevice::ReadOnly)) {
- throw Error(tr("Cannot open the requested license file \"%1\": %2").arg(
- fileName, file.errorString()));
- }
+ throw Error(tr("Cannot open the requested license file \"%1\": %2").arg(
+ file.fileName(), file.errorString()));
}
QTextStream stream(&file);
stream.setCodec("UTF-8");