language_manager.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include "language_manager.h"
  2. #include <QCoreApplication>
  3. #include <QDebug>
  4. LanguageManager::LanguageManager(QObject *parent)
  5. : QObject(parent), m_currentLanguage("en"), m_translator(new QTranslator(this)) {
  6. m_availableLanguages << "en"
  7. << "de";
  8. #ifndef DEFAULT_LANG
  9. #define DEFAULT_LANG "en"
  10. #endif
  11. QString defaultLang = QString(DEFAULT_LANG);
  12. if (m_availableLanguages.contains(defaultLang)) {
  13. loadLanguage(defaultLang);
  14. } else {
  15. loadLanguage("en");
  16. }
  17. }
  18. LanguageManager::~LanguageManager() {}
  19. QString LanguageManager::currentLanguage() const { return m_currentLanguage; }
  20. QStringList LanguageManager::availableLanguages() const {
  21. return m_availableLanguages;
  22. }
  23. void LanguageManager::setLanguage(const QString &language) {
  24. if (language == m_currentLanguage || !m_availableLanguages.contains(language)) {
  25. return;
  26. }
  27. loadLanguage(language);
  28. }
  29. void LanguageManager::loadLanguage(const QString &language) {
  30. QCoreApplication::removeTranslator(m_translator);
  31. QString qmFile = QString(":/translations/translations/app_%1.qm").arg(language);
  32. if (m_translator->load(qmFile)) {
  33. QCoreApplication::installTranslator(m_translator);
  34. m_currentLanguage = language;
  35. qInfo() << "Language changed to:" << language;
  36. emit languageChanged();
  37. } else {
  38. qWarning() << "Failed to load translation file:" << qmFile;
  39. }
  40. }
  41. QString LanguageManager::languageDisplayName(const QString &language) const {
  42. if (language == "en") {
  43. return "English";
  44. } else if (language == "de") {
  45. return "Deutsch (German)";
  46. }
  47. return language;
  48. }