#include #include #include #include #include "translation.h" namespace MiscTools { Translation::Translation() { } void Translation::setDefaultLocale(const QString& locale) { QString shortLocale = locale.left(2).toLower(); if (shortLocale == "de") { QLocale::setDefault(QLocale::German); } else { QLocale::setDefault(QLocale::English); } } QTranslator* Translation::getTranslator(const QString& locale, const QStringList& projPaths, const QString& filename) { QTranslator* translator = new QTranslator(); QString shortLocale = locale.left(2).toLower(); bool found = false; // first search in given paths foreach(const QString& path, projPaths) { if (translator->load(path + filename + locale)) { found = true; break; } } // if not found, try to load short locale if (!found) { if (shortLocale == "en") { // this is english, anyways } else { qDebug() << "now trying to load " << shortLocale << "for" << filename; // try to load short locale in the given paths foreach(const QString& path, projPaths) { if (translator->load(path + filename + shortLocale)) { found = true; break; } } if (!found) { // finally, fall back to english hardcoded qDebug() << "could not load translation " << QString(shortLocale) << "for" << filename; qDebug() << "falling back to hard-coded \"en\""; } } } return translator; } } // end namespace misc