1 //  This file is part of Qt Bitcoin Trader
2 //      https://github.com/JulyIGHOR/QtBitcoinTrader
3 //  Copyright (C) 2013-2021 July Ighor <julyighor@gmail.com>
4 //
5 //  This program is free software: you can redistribute it and/or modify
6 //  it under the terms of the GNU General Public License as published by
7 //  the Free Software Foundation, either version 3 of the License, or
8 //  (at your option) any later version.
9 //
10 //  In addition, as a special exception, the copyright holders give
11 //  permission to link the code of portions of this program with the
12 //  OpenSSL library under certain conditions as described in each
13 //  individual source file, and distribute linked combinations including
14 //  the two.
15 //
16 //  You must obey the GNU General Public License in all respects for all
17 //  of the code used other than OpenSSL. If you modify file(s) with this
18 //  exception, you may extend this exception to your version of the
19 //  file(s), but you are not obligated to do so. If you do not wish to do
20 //  so, delete this exception statement from your version. If you delete
21 //  this exception statement from all source files in the program, then
22 //  also delete it here.
23 //
24 //  This program is distributed in the hope that it will be useful,
25 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
26 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
27 //  GNU General Public License for more details.
28 //
29 //  You should have received a copy of the GNU General Public License
30 //  along with this program.  If not, see <http://www.gnu.org/licenses/>.
31 
32 #ifndef JULYTRANSLATOR_H
33 #define JULYTRANSLATOR_H
34 
35 #include <QObject>
36 #include <QMap>
37 #include <QWidget>
38 
39 class JulyTranslator : public QObject
40 {
41     Q_OBJECT
42 
43 public:
44     QMap<QString, QString>labelMap;
45     QMap<QString, QString>groupBoxMap;
46     QMap<QString, QString>checkBoxMap;
47     QMap<QString, QString>buttonMap;
48     QMap<QString, QString>spinBoxMap;
49     QMap<QString, QString>stringMap;
50 
lastFile()51     const QString& lastFile() const
52     {
53         return lastLangFile;
54     }
55     int loadFromFile(const QString& fileName);
56     int saveToFile(const QString& fileName);
clearMaps()57     void clearMaps()
58     {
59         labelMap.clear();
60         lastLangFile.clear();
61         groupBoxMap.clear();
62         checkBoxMap.clear();
63         buttonMap.clear();
64     }
65     void loadMapFromUi(QWidget* wid);
66     void translateUi(QWidget* wid);
67 
68     QString translateButton(const QString& tid, const QString& defaultText) const;
69     QString translateLabel(const QString& tid, const QString& defaultText) const;
70     QString translateCheckBox(const QString& tid, const QString& defaultText) const;
71     QString translateGroupBox(const QString& tid, const QString& defaultText) const;
72     QString translateSpinBox(const QString& tid, const QString& defaultText) const;
73     QString translateString(const QString& tid, const QString& defaultText);
74 private:
75     QString lastLangFile;
76     bool fillMapsFromLine(QMap<QString, QString>* map, QString line, const QString& prefix);
77     void fillMapsFromList(const QStringList& list);
78     QStringList getMapList(QMap<QString, QString>* map, QString prefix);
79 signals:
80     void languageChanged();
81 };
82 
83 #endif // JULYTRANSLATOR_H
84