File fallbackLang.diff of Package ki18n
diff -urNB a/src/kcatalog.cpp b/src/kcatalog.cpp
--- a/src/kcatalog.cpp 2015-06-06 23:17:35.000000000 +0200
+++ b/src/kcatalog.cpp 2015-06-12 11:18:12.263968360 +0200
@@ -110,26 +110,51 @@
QString KCatalog::catalogLocaleDir(const QByteArray &domain,
const QString &language)
{
+ QStringList localeDirs;
+ QString localeDir;
QString relpath = QString::fromLatin1("%1/LC_MESSAGES/%2.mo")
.arg(language, QFile::decodeName(domain));
+
+ // Specific SUSE kf5 location ; bundle-lang-bla ; update-translations ; generic
+ localeDirs << "/usr/share/locale/kf5/" << "/usr/share/locale-bundle/kf5/" << "/usr/share/locale-bundle/" << "/usr/share/locale-langpack/";
+
+ foreach (const QString &locDir, localeDirs) {
+ QFile file(locDir + relpath);
+ if (file.exists()) {
+ return locDir;
+ }
+ }
+ // Check the standard locations
QString file = QStandardPaths::locate(QStandardPaths::GenericDataLocation,
- QString::fromLatin1("locale/") + relpath);
- QString localeDir;
- if (file.isEmpty()) {
- localeDir = QString();
- } else {
- // Path of the locale/ directory must be returned.
+ QString::fromLatin1("locale/") + relpath);
+ if (!file.isEmpty()) {
localeDir = QFileInfo(file.left(file.size() - relpath.size())).absolutePath();
+ return localeDir;
}
+ // No translation around
+ localeDir = QString();
return localeDir;
}
QSet<QString> KCatalog::availableCatalogLanguages(const QByteArray &domain_)
{
QString domain = QFile::decodeName(domain_);
- QStringList localeDirPaths = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation,
- QString::fromLatin1("locale"),
- QStandardPaths::LocateDirectory);
+ QStringList localeDirPaths;
+ QStringList localeDirs;
+
+ // Specific SUSE kf5 location ; bundle-lang-bla ; update-translations ; generic
+ localeDirs << "/usr/share/locale/kf5" << "/usr/share/locale-bundle/kf5" << "/usr/share/locale-bundle" << "/usr/share/locale-langpack";
+
+ foreach (const QString &localeDir, localeDirs) {
+ QDir locDir(localeDir);
+ if (locDir.exists()) {
+ localeDirPaths.append(localeDir);
+ }
+ }
+ QStringList localeFallbackDirPaths = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation,
+ QString::fromLatin1("locale"),
+ QStandardPaths::LocateDirectory);
+ localeDirPaths.append(localeFallbackDirPaths);
QSet<QString> availableLanguages;
foreach (const QString &localDirPath, localeDirPaths) {
QDir localeDir(localDirPath);