1 #include "translator.h"
2 #include "debug.h"
3 
4 #include <QLibraryInfo>
5 
Translator()6 Translator::Translator() : _qtTranslator(nullptr), _appTranslator(nullptr)
7 {
8     _languageMap["English"]  = "en";
9     _languageMap["Romanian"] = "ro";
10 }
11 
instance()12 Translator &Translator::instance()
13 {
14     static Translator instance;
15     return instance;
16 }
17 
translateApp(QApplication * app,QString lang)18 void 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()52 QStringList Translator::languageList()
53 {
54     return _languageMap.keys();
55 }
56