OpenLexocad  28.0
Translator.h
Go to the documentation of this file.
1 
7 #pragma once
8 #include <QLocale>
9 #include <map>
10 
11 //----------------------------------------------------------------------------
12 // DECLARATIONs
13 //----------------------------------------------------------------------------
14 
19 class LX_BASE_EXPORT CTranslator
20 {
21 public:
23  enum Language
24  {
25  ENGLISH,
26  GERMAN,
27  FRENCH,
28  SPANISH,
29  PORTUGUESE,
30  ROMANIAN,
31  HUNGARIAN,
32  RUSSIAN,
33  POLISH,
34  ITALIAN,
35  CZECH,
36  UKRAINE
37  };
38 
39  typedef QMap<QString, int> CustomTranslationsTable;
40 
41 public:
42  static QString get(int id, bool forceEnglish = false);
43  static QString getSpecial(int id, bool forceEnglish = false);
44 
45  /* convenience method, lookup for the english word, get the id and return the current translation */
46  static QString getByEnglish(QString eng);
47  static QStringList getInAllLanguages(int id);
48 
49  static void setLanguage(Language lang);
50  static Language getLanguage();
51  static QString getLanguageAsString();
52  static void setLanguageFromString(const QString& lang);
53 
54  static CustomTranslationsTable readCustomTranslationsTable(const QString& filename);
55  static QString translate(const CustomTranslationsTable& table, const QString& source, bool emptyIfNotInTable = false);
56 
57  static void showMessageId(bool onoff);
58  static bool messageIdVisible();
59 
60  static QString getCdwkStringFromLanguage(Language lang);
61  static Language getLanguageFromCdwkString(const QString& lang);
62 
63  static QLocale getQLocale();
64 
65  static QString getTranslatorDirPath();
66 
67 private:
69  static CTranslator& Instance();
70  static class QTranslator _qtinstance;
71  static void setQTranslatorLanguage(Language lang);
72 
74  Language _lang = ENGLISH;
75 
77  // QStringList _de;
78  std::map<int, QString> _de;
80  // QStringList _en;
81  std::map<int, QString> _en;
83  // QStringList _fr;
84  std::map<int, QString> _fr;
86  std::map<int, QString> _sp;
88  std::map<int, QString> _po;
90  std::map<int, QString> _ro;
92  std::map<int, QString> _hu;
94  std::map<int, QString> _ru;
96  std::map<int, QString> _pl;
98  std::map<int, QString> _it;
100  std::map<int, QString> _cz;
102  std::map<int, QString> _uk;
103  // Note: when adding new language, don't forget to modify getInAllLanguages(). -mh-
104 
105  // QStringList reverse_en;
106  std::map<QString, int> _reverse_en;
107 
108  struct Flags
109  {
110  bool html;
111  };
113  std::map<int, Flags> _flags;
114 
115  bool _showMessageId = false;
116 
117  // internal private methods
118  CTranslator();
119 
120  void init();
121 
122  bool loadFile(Language lang);
123 
124  static QString _getPathToTranslation(wchar_t* dllName);
125 };
entt::get
constexpr get_t< Type... > get
Variable template for lists of observed components.
Definition: entt.hpp:6068