language_manager.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #include "language_manager.h"
  2. #include <QCoreApplication>
  3. #include <QDebug>
  4. LanguageManager::LanguageManager(QObject *parent)
  5. : QObject(parent), m_currentLanguage("en"),
  6. m_translator(new QTranslator(this)) {
  7. m_availableLanguages << "en" << "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 ||
  25. !m_availableLanguages.contains(language)) {
  26. return;
  27. }
  28. loadLanguage(language);
  29. }
  30. void LanguageManager::loadLanguage(const QString &language) {
  31. QCoreApplication::removeTranslator(m_translator);
  32. QString qmFile =
  33. QString(":/StandardOfIron/translations/app_%1.qm").arg(language);
  34. if (m_translator->load(qmFile)) {
  35. QCoreApplication::installTranslator(m_translator);
  36. m_currentLanguage = language;
  37. qInfo() << "Language changed to:" << language;
  38. emit languageChanged();
  39. } else {
  40. qWarning() << "Failed to load translation file:" << qmFile;
  41. }
  42. }
  43. QString LanguageManager::languageDisplayName(const QString &language) const {
  44. if (language == "en") {
  45. return "English";
  46. } else if (language == "de") {
  47. return "Deutsch (German)";
  48. }
  49. return language;
  50. }