File fallbackLang.diff of Package ki18n
Index: ki18n-5.62.0git.20210303T212906~f04cdec/src/kcatalog.cpp
===================================================================
--- ki18n-5.62.0git.20210303T212906~f04cdec.orig/src/kcatalog.cpp 2021-03-05 06:49:14.921095959 +0100
+++ ki18n-5.62.0git.20210303T212906~f04cdec/src/kcatalog.cpp 2021-03-05 06:53:45.726852961 +0100
@@ -138,7 +138,19 @@
QString KCatalog::catalogLocaleDir(const QByteArray &domain, const QString &language)
{
+ QStringList localeDirs;
+
QString relpath = QStringLiteral("%1/LC_MESSAGES/%2.mo").arg(language, QFile::decodeName(domain));
+ // Specific SUSE kf5 location ; bundle-lang-bla ; update-translations ; generic
+ localeDirs << QStringLiteral("/usr/share/locale/kf5/") << QStringLiteral("/usr/share/locale-bundle/kf5/") << QStringLiteral("/usr/share/locale-bundle/") << QStringLiteral("/usr/share/locale-langpack/");
+
+ for (const QString &locDir: qAsConst(localeDirs)) {
+ QFile file(locDir + relpath);
+ if (file.exists()) {
+ return locDir;
+ }
+ }
+ // Check the standard locations
{
QMutexLocker lock(&catalogStaticData->mutex);
@@ -171,7 +183,22 @@
QSet<QString> KCatalog::availableCatalogLanguages(const QByteArray &domain_)
{
QString domain = QFile::decodeName(domain_);
- QStringList localeDirPaths = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("locale"), QStandardPaths::LocateDirectory);
+ QStringList localeDirPaths;
+ QStringList localeDirs;
+
+ // Specific SUSE kf5 location ; bundle-lang-bla ; update-translations ; generic
+ localeDirs << QStringLiteral("/usr/share/locale/kf5") << QStringLiteral("/usr/share/locale-bundle/kf5") << QStringLiteral("/usr/share/locale-bundle") << QStringLiteral("/usr/share/locale-langpack");
+
+ for (const QString &localeDir: qAsConst(localeDirs)) {
+ QDir locDir(localeDir);
+ if (locDir.exists()) {
+ localeDirPaths.append(localeDir);
+ }
+ }
+ QStringList localeFallbackDirPaths = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation,
+ QStringLiteral("locale"),
+ QStandardPaths::LocateDirectory);
+ localeDirPaths.append(localeFallbackDirPaths);
{
QMutexLocker lock(&catalogStaticData->mutex);