aboutsummaryrefslogtreecommitdiff
path: root/modules/ECMQmLoader.cpp.in
diff options
context:
space:
mode:
authorAurélien Gâteau <agateau@kde.org>2014-04-16 10:27:45 +0200
committerAurélien Gâteau <agateau@kde.org>2014-04-16 10:28:18 +0200
commit071581a3f899c881c9938efd082fd32589822b45 (patch)
tree314f51d5b7fce80b445f33f694bf570178ca9d5e /modules/ECMQmLoader.cpp.in
parentecbefa6959452af98485288388a92cbf35a28e99 (diff)
downloadextra-cmake-modules-071581a3f899c881c9938efd082fd32589822b45.tar.gz
extra-cmake-modules-071581a3f899c881c9938efd082fd32589822b45.tar.bz2
Make ECMCreateQmFromPoFiles usable from within trunk/l10n-kf5
REVIEW: 117560
Diffstat (limited to 'modules/ECMQmLoader.cpp.in')
-rw-r--r--modules/ECMQmLoader.cpp.in30
1 files changed, 19 insertions, 11 deletions
diff --git a/modules/ECMQmLoader.cpp.in b/modules/ECMQmLoader.cpp.in
index 4fd9c116..fd530602 100644
--- a/modules/ECMQmLoader.cpp.in
+++ b/modules/ECMQmLoader.cpp.in
@@ -8,25 +8,33 @@
#include <QStandardPaths>
#include <QTranslator>
-static QTranslator *createTranslator()
-{
- QString installSubDir = QStringLiteral("@data_install_sub_dir@");
- QString qmName = QStringLiteral("@qm_name@");
+#include <QDebug>
- QString dir = QStandardPaths::locate(QStandardPaths::GenericDataLocation, installSubDir, QStandardPaths::LocateDirectory);
+static QTranslator *createTranslator(const QString &localeDirName)
+{
+ QString subPath = QStringLiteral("locale/") + localeDirName + QStringLiteral("/LC_MESSAGES/@catalog_name@.qm");
+ QString fullPath = QStandardPaths::locate(QStandardPaths::GenericDataLocation, subPath);
+ if (fullPath.isEmpty()) {
+ return 0;
+ }
QTranslator *translator = new QTranslator(QCoreApplication::instance());
- translator->load(QLocale::system(), qmName, QStringLiteral("-") /* prefix */, dir);
+ if (!translator->load(fullPath)) {
+ delete translator;
+ return 0;
+ }
return translator;
}
static void load()
{
- QTranslator *translator = createTranslator();
- if (translator->isEmpty()) {
- delete translator;
- return;
+ QLocale locale = QLocale::system();
+ QTranslator *translator = createTranslator(locale.name());
+ if (!translator) {
+ translator = createTranslator(locale.bcp47Name());
+ if (!translator) {
+ return;
+ }
}
- translator->setParent(QCoreApplication::instance());
QCoreApplication::instance()->installTranslator(translator);
}