From 071581a3f899c881c9938efd082fd32589822b45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20G=C3=A2teau?= Date: Wed, 16 Apr 2014 10:27:45 +0200 Subject: Make ECMCreateQmFromPoFiles usable from within trunk/l10n-kf5 REVIEW: 117560 --- modules/ECMQmLoader.cpp.in | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) (limited to 'modules/ECMQmLoader.cpp.in') 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 #include -static QTranslator *createTranslator() -{ - QString installSubDir = QStringLiteral("@data_install_sub_dir@"); - QString qmName = QStringLiteral("@qm_name@"); +#include - 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); } -- cgit v1.2.1