From b1c606a9d153c5b501476551af3386b993f5635a Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Sat, 15 Nov 2008 23:33:16 +0100 Subject: [PATCH] Load Qt's default translations if available, fixes BR #400 --- src/common/quassel.cpp | 18 +----------------- src/common/quassel.h | 1 - src/common/util.cpp | 22 +++++++++++++--------- src/core/core.cpp | 4 +++- 4 files changed, 17 insertions(+), 28 deletions(-) diff --git a/src/common/quassel.cpp b/src/common/quassel.cpp index 29b6e55e..773f409e 100644 --- a/src/common/quassel.cpp +++ b/src/common/quassel.cpp @@ -77,7 +77,6 @@ bool Quassel::init() { qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); registerMetaTypes(); - setupTranslations(); QCoreApplication::setApplicationName(buildInfo().applicationName); QCoreApplication::setOrganizationName(buildInfo().organizationName); @@ -130,21 +129,6 @@ void Quassel::registerMetaTypes() { qRegisterMetaTypeStreamOperators("MsgId"); } -void Quassel::setupTranslations() { - // Set up i18n support - QLocale locale = QLocale::system(); - - QTranslator *qtTranslator = new QTranslator(qApp); - qtTranslator->setObjectName("QtTr"); - qtTranslator->load(QString(":i18n/qt_%1").arg(locale.name())); - qApp->installTranslator(qtTranslator); - - QTranslator *quasselTranslator = new QTranslator(qApp); - quasselTranslator->setObjectName("QuasselTr"); - quasselTranslator->load(QString(":i18n/quassel_%1").arg(locale.name())); - qApp->installTranslator(quasselTranslator); -} - void Quassel::setupBuildInfo(const QString &generated) { _buildInfo.applicationName = "Quassel IRC"; _buildInfo.coreApplicationName = "Quassel Core"; @@ -228,7 +212,7 @@ void Quassel::logFatalMessage(const char *msg) { QFile dumpFile(coreDumpFileName()); dumpFile.open(QIODevice::Append); QTextStream dumpStream(&dumpFile); - + dumpStream << "Fatal: " << msg << '\n'; dumpStream.flush(); dumpFile.close(); diff --git a/src/common/quassel.h b/src/common/quassel.h index 539b579f..24459cd5 100644 --- a/src/common/quassel.h +++ b/src/common/quassel.h @@ -81,7 +81,6 @@ protected: inline void setRunMode(RunMode mode); private: - void setupTranslations(); void registerMetaTypes(); static void handleSignal(int signal); diff --git a/src/common/util.cpp b/src/common/util.cpp index f52154cb..e978a7fb 100644 --- a/src/common/util.cpp +++ b/src/common/util.cpp @@ -22,6 +22,7 @@ #include #include +#include #include #include @@ -182,22 +183,25 @@ QDir quasselDir() { void loadTranslation(const QLocale &locale) { QTranslator *qtTranslator = QCoreApplication::instance()->findChild("QtTr"); QTranslator *quasselTranslator = QCoreApplication::instance()->findChild("QuasselTr"); - Q_ASSERT(qtTranslator); - Q_ASSERT(quasselTranslator); - QLocale::setDefault(locale); + if(!qtTranslator) { + qtTranslator = new QTranslator(qApp); + qtTranslator->setObjectName("QtTr"); + qApp->installTranslator(qtTranslator); + } + if(!quasselTranslator) { + quasselTranslator = new QTranslator(qApp); + quasselTranslator->setObjectName("QuasselTr"); + qApp->installTranslator(quasselTranslator); + } - QCoreApplication::removeTranslator(qtTranslator); - QCoreApplication::removeTranslator(quasselTranslator); + QLocale::setDefault(locale); if(locale.language() == QLocale::C) return; - qtTranslator->load(QString(":i18n/qt_%1").arg(locale.name())); + qtTranslator->load(QString("%2/qt_%1").arg(locale.name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath))); quasselTranslator->load(QString(":i18n/quassel_%1").arg(locale.name())); - - QCoreApplication::installTranslator(qtTranslator); - QCoreApplication::installTranslator(quasselTranslator); } QString secondsToString(int timeInSeconds) { diff --git a/src/core/core.cpp b/src/core/core.cpp index 383526a0..77de2577 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -52,6 +52,8 @@ void Core::destroy() { Core::Core() : storage(0) { _startTime = QDateTime::currentDateTime().toUTC(); // for uptime :) + loadTranslation(QLocale::system()); + // Register storage backends here! registerStorageBackend(new SqliteStorage(this)); @@ -359,7 +361,7 @@ bool Core::startListening() { // in mono mode we only start a local port if a port is specified in the cli call if(Quassel::runMode() == Quassel::Monolithic && !Quassel::isOptionSet("port")) return true; - + bool success = false; uint port = Quassel::optionValue("port").toUInt(); -- 2.20.1