if(EMBED_DATA)
set(COMMON_RCS ${COMMON_RCS} ${resfile} PARENT_SCOPE)
else(EMBED_DATA)
- install(FILES ${qm_files} DESTINATION ${DATA_INSTALL_DIR}/quassel/i18n)
+ install(FILES ${qm_files} DESTINATION ${DATA_INSTALL_DIR}/quassel/translations)
endif(EMBED_DATA)
add_custom_target(i18n DEPENDS ${qm_files})
#include <QCoreApplication>
#include <QDateTime>
#include <QFileInfo>
-#include <QMetaType>
-#include <QObject>
+#include <QLibraryInfo>
#include <QSettings>
+#include <QTranslator>
#include "message.h"
#include "identity.h"
AbstractCliParser *Quassel::_cliParser = 0;
Quassel::RunMode Quassel::_runMode;
QString Quassel::_configDirPath;
+QString Quassel::_translationDirPath;
QStringList Quassel::_dataDirPaths;
bool Quassel::_initialized = false;
bool Quassel::DEBUG = false;
}
return QString();
}
+
+void Quassel::loadTranslation(const QLocale &locale) {
+ if(_translationDirPath.isEmpty()) {
+ // We support only one translation dir; fallback mechanisms wouldn't work else.
+ // This means that if we have a $data/i18n dir, the internal :/i18n resource won't be considered.
+ foreach(const QString &dir, dataDirPaths()) {
+ if(QFile::exists(dir + "translations/")) {
+ _translationDirPath = dir + "translations/";
+ break;
+ }
+ }
+ if(_translationDirPath.isEmpty())
+ _translationDirPath = ":/i18n/";
+ }
+
+ QTranslator *qtTranslator = QCoreApplication::instance()->findChild<QTranslator *>("QtTr");
+ QTranslator *quasselTranslator = QCoreApplication::instance()->findChild<QTranslator *>("QuasselTr");
+
+ if(!qtTranslator) {
+ qtTranslator = new QTranslator(qApp);
+ qtTranslator->setObjectName("QtTr");
+ qApp->installTranslator(qtTranslator);
+ }
+ if(!quasselTranslator) {
+ quasselTranslator = new QTranslator(qApp);
+ quasselTranslator->setObjectName("QuasselTr");
+ qApp->installTranslator(quasselTranslator);
+ }
+
+ QLocale::setDefault(locale);
+
+ if(locale.language() == QLocale::C)
+ return;
+
+ bool success = qtTranslator->load(QString("qt_%1").arg(locale.name()), _translationDirPath);
+ if(!success)
+ qtTranslator->load(QString("qt_%1").arg(locale.name()), QLibraryInfo::location(QLibraryInfo::TranslationsPath));
+ quasselTranslator->load(QString("quassel_%1").arg(locale.name()), _translationDirPath);
+}
#define QUASSEL_H_
#include <QCoreApplication>
+#include <QLocale>
#include <QString>
#include "abstractcliparser.h"
*/
static QString findDataFilePath(const QString &filename);
+ static void loadTranslation(const QLocale &locale);
+
static inline void setCliParser(AbstractCliParser *cliParser);
static inline AbstractCliParser *cliParser();
static inline QString optionValue(const QString &option);
static QString _coreDumpFileName;
static QString _configDirPath;
static QStringList _dataDirPaths;
+ static QString _translationDirPath;
};
const Quassel::BuildInfo & Quassel::buildInfo() { return _buildInfo; }
#include <QCoreApplication>
#include <QDebug>
#include <QFile>
-#include <QLibraryInfo>
#include <QTextCodec>
-#include <QTranslator>
#include "quassel.h"
return matrix[n-1][m-1];
}
-void loadTranslation(const QLocale &locale) {
- QTranslator *qtTranslator = QCoreApplication::instance()->findChild<QTranslator *>("QtTr");
- QTranslator *quasselTranslator = QCoreApplication::instance()->findChild<QTranslator *>("QuasselTr");
-
- if(!qtTranslator) {
- qtTranslator = new QTranslator(qApp);
- qtTranslator->setObjectName("QtTr");
- qApp->installTranslator(qtTranslator);
- }
- if(!quasselTranslator) {
- quasselTranslator = new QTranslator(qApp);
- quasselTranslator->setObjectName("QuasselTr");
- qApp->installTranslator(quasselTranslator);
- }
-
- QLocale::setDefault(locale);
-
- if(locale.language() == QLocale::C)
- return;
-
- bool success = qtTranslator->load(QString(":i18n/qt_%1").arg(locale.name()));
- if(!success)
- qtTranslator->load(QString("%2/qt_%1").arg(locale.name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)));
- quasselTranslator->load(QString(":i18n/quassel_%1").arg(locale.name()));
-}
-
QString secondsToString(int timeInSeconds) {
QList< QPair<int, QString> > timeUnit;
timeUnit.append(qMakePair(365*24*60*60, QCoreApplication::translate("Quassel::secondsToString()", "year")));
#define UTIL_H
#include <QDir>
-#include <QLocale>
#include <QVariant>
#include <QString>
#include <QMetaMethod>
uint editingDistance(const QString &s1, const QString &s2);
-void loadTranslation(const QLocale &locale);
-
template<typename T>
QVariantList toVariantList(const QList<T> &list) {
QVariantList variants;
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
-#include <QMetaObject>
-#include <QMetaMethod>
#include <QCoreApplication>
#include "core.h"
Core::Core() : storage(0) {
_startTime = QDateTime::currentDateTime().toUTC(); // for uptime :)
- loadTranslation(QLocale::system());
+ Quassel::loadTranslation(QLocale::system());
// FIXME: MIGRATION 0.3 -> 0.4: Move database and core config to new location
// Move settings, note this does not delete the old files
_actionProvider = new NetworkModelActionProvider(this);
QtUiSettings uiSettings;
- loadTranslation(uiSettings.value("Locale", QLocale::system()).value<QLocale>());
+ Quassel::loadTranslation(uiSettings.value("Locale", QLocale::system()).value<QLocale>());
_mainWin = new MainWin();
_style = new QtUiStyle;
ui.languageComboBox->setCurrentIndex(1);
else
ui.languageComboBox->setCurrentIndex(ui.languageComboBox->findText(QLocale::languageToString(locale.language()), Qt::MatchExactly));
- loadTranslation(selectedLocale());
+ Quassel::loadTranslation(selectedLocale());
ChatViewSettings chatViewSettings;
SettingsPage::load(ui.showWebPreview, chatViewSettings.showWebPreview());