#include <QCoreApplication>
#include <QDebug>
+#include <QLibraryInfo>
#include <QTextCodec>
#include <QTranslator>
return QString("#&!+").contains(str[0]);
}
+QString stripFormatCodes(QString str) {
+ str.remove(QRegExp("\x03(\\d\\d?(,\\d\\d?)?)?"));
+ str.remove('\x02');
+ str.remove('\x0f');
+ str.remove('\x12');
+ str.remove('\x16');
+ str.remove('\x1d');
+ str.remove('\x1f');
+ return str;
+}
+
QString decodeString(const QByteArray &input, QTextCodec *codec) {
// First, we check if it's utf8. It is very improbable to encounter a string that looks like
// valid utf8, but in fact is not. This means that if the input string passes as valid utf8, it
void loadTranslation(const QLocale &locale) {
QTranslator *qtTranslator = QCoreApplication::instance()->findChild<QTranslator *>("QtTr");
QTranslator *quasselTranslator = QCoreApplication::instance()->findChild<QTranslator *>("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()));
+ 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()));
-
- QCoreApplication::installTranslator(qtTranslator);
- QCoreApplication::installTranslator(quasselTranslator);
}
QString secondsToString(int timeInSeconds) {