1 #include "translator.h" 2 #include "debug.h" 3 4 #include <QLibraryInfo> 5 Translator()6Translator::Translator() : _qtTranslator(nullptr), _appTranslator(nullptr) 7 { 8 _languageMap["English"] = "en"; 9 _languageMap["Romanian"] = "ro"; 10 } 11 instance()12Translator &Translator::instance() 13 { 14 static Translator instance; 15 return instance; 16 } 17 translateApp(QApplication * app,QString lang)18void Translator::translateApp(QApplication *app, QString lang) 19 { 20 if(!app) 21 return; 22 23 DEBUG << "System language is " 24 << QLocale::languageToString(QLocale().language()); 25 26 if(lang == LANG_AUTO) 27 lang = QLocale::languageToString(QLocale().language()); 28 29 if(_languageMap.find(lang) == _languageMap.end()) 30 return; 31 32 if(_qtTranslator && _appTranslator) 33 { 34 app->removeTranslator(_qtTranslator); 35 app->removeTranslator(_appTranslator); 36 delete _qtTranslator; 37 _qtTranslator = nullptr; 38 delete _appTranslator; 39 _appTranslator = nullptr; 40 } 41 42 _qtTranslator = new QTranslator(); 43 _qtTranslator->load("qt_" + _languageMap[lang], 44 QLibraryInfo::location(QLibraryInfo::TranslationsPath)); 45 app->installTranslator(_qtTranslator); 46 47 _appTranslator = new QTranslator(); 48 _appTranslator->load("tarsnap-gui_" + _languageMap[lang], ":/translations"); 49 app->installTranslator(_appTranslator); 50 } 51 languageList()52QStringList Translator::languageList() 53 { 54 return _languageMap.keys(); 55 } 56