Skip to content

Commit 570681b

Browse files
Add dynamically loaded translations (#50)
2 parents dc25dcc + 5a89555 commit 570681b

24 files changed

+186
-206
lines changed

src/Convert.cpp

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "Unsorted.hpp"
1+
#include "Windows/Locale.hpp"
22
#include "Convert.hpp"
33
using namespace std;
44

@@ -24,27 +24,5 @@ namespace Convert
2424
return retList;
2525
}
2626

27-
Languages LangEnumFromLocale(const QString& locale)
28-
{
29-
QString lowerLocale = locale.toLower();
30-
31-
for(auto elem = PROGRAM_CONSTANTS->LANGUAGES_STRINGS.cbegin(); elem != PROGRAM_CONSTANTS->LANGUAGES_STRINGS.cend(); ++elem)
32-
if (Unsorted::GetLanguageShortName(elem.key()) == lowerLocale)
33-
return elem.key();
34-
35-
return Languages::English;
36-
}
37-
38-
Languages ToLangEnum(const std::string& locale) { return LangEnumFromLocale(QString::fromStdString(locale)); }
39-
Languages ToLangEnum(const QString& locale) { return LangEnumFromLocale(locale); }
40-
Qt::Key ToQtKey(const QChar& ch) { return static_cast<Qt::Key>(QChar(ch).unicode()); }
41-
42-
QString ToQString(const Languages& locale)
43-
{
44-
for(auto elem = PROGRAM_CONSTANTS->LANGUAGES_STRINGS.cbegin(); elem != PROGRAM_CONSTANTS->LANGUAGES_STRINGS.cend(); ++elem)
45-
if (elem.key() == locale)
46-
return elem.value().first;
47-
48-
return "en";
49-
}
27+
Qt::Key ToQtKey(const QChar& ch) { return static_cast<Qt::Key>(QChar(ch).unicode()); }
5028
}

src/Convert.hpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,6 @@ namespace Convert
1010
QStringList ToQStringList(const std::list<std::string>& srcList);
1111
/// @brief Returns list `std::list` of `std::string` as element by converting `QStringList<QString>` value.
1212
inline std::list<std::string> ToStdStringList(const QStringList& srcList);
13-
/// @brief Return enum `Languages` value that equivalent to the text value.
14-
Languages ToLangEnum(const std::string& locale);
15-
/// @brief Return enum `Languages` value that equivalent to the text value.
16-
Languages ToLangEnum(const QString& locale);
1713
/// @brief Converts `QChar` to `Qt::Key` enum equivalent.
1814
Qt::Key ToQtKey(const QChar& ch);
19-
/// @brief Converts enum `Language` to `QString`.
20-
QString ToQString(const Languages& locale);
2115
}

src/Faction.cpp

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
#include <QSet>
2+
#include "Windows/Locale.hpp"
23
#include "Parsers/CSFParser.hpp"
34
#include "Parsers/JSONFile.hpp"
45
#include "Logger.hpp"
56
#include "Faction.hpp"
6-
#include "Unsorted.hpp"
77

88
Faction::Faction(const QString& _shortName, const QString& _displayName, const QString& _displayNameDescription)
99
: shortName{_shortName}
@@ -18,15 +18,14 @@ Faction::Faction(const QJsonObject& factionAsObject)
1818
, displayNameDescription{factionAsObject[PROGRAM_CONSTANTS->DISPLAY_NAME_DESCRIPTION].toString()}
1919
, techTree{ParseJsonObject(factionAsObject)}
2020
{
21-
for (int currLng = 0; currLng < static_cast<int>(Languages::Count); currLng++)
21+
for (size_t lng : PROGRAM_CONSTANTS->Languages.keys())
2222
{
2323
QString _displayName = "";
2424
QString _displayNameDescription = "";
25-
Languages lng = static_cast<Languages>(currLng);
2625

27-
if (lng != Languages::English)
26+
if (lng != PROGRAM_CONSTANTS->DEFAULT_LANGUAGE_CODE)
2827
{
29-
auto translatedNames = factionAsObject[Unsorted::GetLanguageShortName(lng)].toObject();
28+
auto translatedNames = factionAsObject[PROGRAM_CONSTANTS->Languages.value(lng).first].toObject();
3029

3130
if (!translatedNames.isEmpty())
3231
{
@@ -57,23 +56,23 @@ const QString Faction::GetDisplayName() const { return displayName; }
5756
const QString Faction::GetDisplayNameDescription() const { return displayNameDescription; }
5857
const QMap<Faction::GameObject, GameObjectTypes>& Faction::GetTechTree() const { return techTree; }
5958

60-
const QString Faction::GetDisplayName(Languages lng) const
59+
const QString Faction::GetDisplayName(size_t lng) const
6160
{
6261
QString ret;
6362

64-
if (lng != Languages::English)
63+
if (lng != PROGRAM_CONSTANTS->DEFAULT_LANGUAGE_CODE)
6564
ret = localizedDisplay.value(lng).first;
6665

6766
if (ret == StringExt::EmptyString)
6867
ret = displayName;
6968

7069
return ret;
7170
}
72-
const QString Faction::GetDisplayNameDescription(Languages lng) const
71+
const QString Faction::GetDisplayNameDescription(size_t lng) const
7372
{
7473
QString ret;
7574

76-
if (lng != Languages::English)
75+
if (lng != PROGRAM_CONSTANTS->DEFAULT_LANGUAGE_CODE)
7776
ret = localizedDisplay.value(lng).second;
7877

7978
if (ret == StringExt::EmptyString)

src/Faction.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class Faction
2727
QString displayName;
2828
QString displayNameDescription;
2929
QMap<GameObject, GameObjectTypes> techTree;
30-
QMap<Languages, QPair<QString, QString>> localizedDisplay;
30+
QMap<size_t, QPair<QString, QString>> localizedDisplay;
3131
public:
3232
inline static const int BASIC_FACTION_COUNT = 12;
3333

@@ -43,11 +43,11 @@ class Faction
4343
/// @brief Returns another one short faction name from field `DisplayName` of TechTree.json.
4444
const QString GetDisplayName() const;
4545
/// @brief Returns another one short faction name from field `DisplayName` of TechTree.json for the specific locale.
46-
const QString GetDisplayName(Languages lng) const;
46+
const QString GetDisplayName(size_t lng) const;
4747
/// @brief Returns long faction name from field `DisplayNameDescription` of TechTree.json.
4848
const QString GetDisplayNameDescription() const;
4949
/// @brief Returns long faction name from field `DisplayNameDescription` of TechTree.json for the specific locale.
50-
const QString GetDisplayNameDescription(Languages lng) const;
50+
const QString GetDisplayNameDescription(size_t lng) const;
5151
/// @brief Returns link to the techTree field.
5252
const QMap<GameObject, GameObjectTypes>& GetTechTree() const;
5353
/// @brief Returns link to the keyboard layout vector searching by object name.

src/GUI/EditorWindow.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
#include <QComboBox>
99
#include <QFileDialog>
1010

11+
#include "../Windows/Locale.hpp"
1112
#include "../Parsers/CSFParser.hpp"
1213
#include "../Info.hpp"
1314
#include "../Logger.hpp"
14-
#include "../Unsorted.hpp"
1515
#include "../Convert.hpp"
1616
#include "../FactionsManager.hpp"
1717

@@ -20,8 +20,10 @@
2020
#include "SettingsWindow.hpp"
2121
#include "EditorWindow.hpp"
2222

23+
using namespace StringExt;
24+
2325
// TODO: Move definition to the something like reflection header
24-
int operator+(Qt::Modifier mod, Qt::Key key) { return (static_cast<int>(mod) + static_cast<int>(key)); }
26+
inline int operator+(Qt::Modifier mod, Qt::Key key) { return (static_cast<int>(mod) + static_cast<int>(key)); }
2527

2628
#pragma region CTORs and Setters
2729

@@ -49,7 +51,7 @@ EditorWindow::EditorWindow(QWidget* parent)
4951

5052
QBoxLayout* ltFactions = nullptr;
5153
int factonsCount = FACTIONS_MANAGER->Count();
52-
Languages language = PROGRAM_CONSTANTS->pSettingsFile->GetLanguage();
54+
size_t language = PROGRAM_CONSTANTS->pSettingsFile->GetLanguage();
5355

5456
if (factonsCount == Faction::BASIC_FACTION_COUNT)
5557
{
@@ -420,8 +422,8 @@ void EditorWindow::KeyboardWindow_Update(int id)
420422
auto currTab = pHotkeysPanelsWidget->findChild<QWidget*>(QString("Layout ") + QString::number(id + 1), Qt::FindChildrenRecursively);
421423

422424
QString accum;
423-
for (const auto& elem : currTab->findChildren<ActionHotkeyWidget*>(QString(), Qt::FindChildrenRecursively))
424-
accum += QString(elem->GetHotkey()).toUpper();
425+
for (const auto& elem : currTab->findChildren<ActionHotkeyWidget*>(EmptyString, Qt::FindChildrenRecursively))
426+
accum += elem->GetHotkey().toUpper();
425427

426428
for (const QChar& ch : accum)
427429
{

src/GUI/GreetingWindow.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
#include <QPushButton>
44
#include <QVBoxLayout>
55

6+
#include "../Windows/Locale.hpp"
67
#include "../Logger.hpp"
78
#include "../ProgramConstants.hpp"
8-
#include "../Unsorted.hpp"
99
#include "WindowManager.hpp"
1010
#include "ImageManager.hpp"
1111
#include "GreetingWindow.hpp"

src/GUI/SettingsWindow.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
#include "../Logger.hpp"
55
#include "../ProgramConstants.hpp"
6-
#include "../Unsorted.hpp"
6+
#include "../Windows/Locale.hpp"
77
#include "WindowManager.hpp"
88
#include "SettingsWindow.hpp"
99

@@ -48,10 +48,11 @@ SettingsWindow::SettingsWindow(QWidget* parent) : QWidget(parent)
4848
lblLanguage->setText(tr("Language:"));
4949
lblLanguage->setObjectName(nameof(lblLanguage));
5050

51-
for (int i = 0; i < static_cast<int>(Languages::Count); ++i)
52-
cmbLanguage->addItem(Unsorted::GetLanguageFullName(static_cast<Languages>(i)));
51+
for (size_t i : PROGRAM_CONSTANTS->Languages.keys())
52+
cmbLanguage->addItem(PROGRAM_CONSTANTS->Languages.value(i).second);
53+
5354
cmbLanguage->setCurrentIndex(static_cast<int>(PROGRAM_CONSTANTS->pSettingsFile->GetLanguage()));
54-
cmbLanguage->setCurrentText(PROGRAM_CONSTANTS->LANGUAGES_STRINGS.value(PROGRAM_CONSTANTS->pSettingsFile->GetLanguage()).second);
55+
cmbLanguage->setCurrentText(PROGRAM_CONSTANTS->Languages.value(PROGRAM_CONSTANTS->pSettingsFile->GetLanguage()).second);
5556

5657
ltLanguage->setAlignment(Qt::AlignLeading);
5758
ltLanguage->addWidget(lblLanguage);
@@ -101,10 +102,10 @@ void SettingsWindow::BtnSave_Clicked()
101102

102103
PROGRAM_CONSTANTS->pSettingsFile->SetForceSystemLanguageOnStartUp(chkForceSystemLanguageOnStartUp->checkState());
103104

104-
bool isNewLanguageAssigned = static_cast<Languages>(cmbLanguage->currentIndex()) != PROGRAM_CONSTANTS->pSettingsFile->GetLanguage();
105+
bool isNewLanguageAssigned = cmbLanguage->currentIndex() != PROGRAM_CONSTANTS->pSettingsFile->GetLanguage();
105106

106107
if (isNewLanguageAssigned)
107-
PROGRAM_CONSTANTS->pSettingsFile->SetLanguage(static_cast<Languages>(cmbLanguage->currentIndex()));
108+
PROGRAM_CONSTANTS->pSettingsFile->SetLanguage(cmbLanguage->currentIndex());
108109

109110
PROGRAM_CONSTANTS->pSettingsFile->Save();
110111

0 commit comments

Comments
 (0)