#include "translator.h" #include #include #include #include Translator::Translator(const QLocale &locale) { load(locale); } void Translator::load(const QLocale &locale) { qDebug() << "Loading Locale:" << locale; if (qtTranslator.load(locale, "qt", "_", systemTranslationPath)) { QApplication::installTranslator(&qtTranslator); qDebug() << "Qt Translator installed from system path" << systemTranslationPath; } else { qtTranslator.load(locale, "qt", "_", translationsPath); QApplication::installTranslator(&qtTranslator); qDebug() << "Qt Translator installed from standard path" << translationsPath; } if (appTranslator.load(locale, "gui", "_", translationsPath)) QApplication::installTranslator(&appTranslator); } QStringList Translator::getTranslations() const { QDir dir(translationsPath); QStringList fileNames = dir.entryList(QStringList("qt_*.qm")); for (QString &s : fileNames) { s.truncate(s.lastIndexOf('.')); // "qt_de" s.remove(0, s.indexOf('_') + 1); // "de" } return fileNames; } bool Translator::setLocale(const QLocale & newLocale) { if (currentLocale == newLocale) return false; QLocale::setDefault(newLocale); currentLocale = newLocale; load(newLocale); return true; }