Skip to content

Commit 8c926c8

Browse files
Move translation of the faction strings to the *.ts file
1 parent 58b0b30 commit 8c926c8

File tree

9 files changed

+161
-146
lines changed

9 files changed

+161
-146
lines changed

src/Faction.cpp

Lines changed: 5 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -12,75 +12,19 @@ Faction::Faction(const QString& _shortName, const QString& _displayName, const Q
1212
{
1313
}
1414

15-
Faction::Faction(const QJsonObject& factionAsObject)
16-
: shortName{factionAsObject[PROGRAM_CONSTANTS->SHORT_NAME].toString()}
17-
, displayName{factionAsObject[PROGRAM_CONSTANTS->DISPLAY_NAME].toString()}
18-
, displayNameDescription{factionAsObject[PROGRAM_CONSTANTS->DISPLAY_NAME_DESCRIPTION].toString()}
19-
, techTree{ParseJsonObject(factionAsObject)}
15+
Faction::Faction(const QJsonObject& factionObject)
16+
: shortName{factionObject[PROGRAM_CONSTANTS->SHORT_NAME].toString()}
17+
, displayName{factionObject[PROGRAM_CONSTANTS->DISPLAY_NAME].toString()}
18+
, displayNameDescription{factionObject[PROGRAM_CONSTANTS->DISPLAY_NAME_DESCRIPTION].toString()}
19+
, techTree{ParseJsonObject(factionObject)}
2020
{
21-
for (size_t lng : PROGRAM_CONSTANTS->Languages.keys())
22-
{
23-
QString _displayName = "";
24-
QString _displayNameDescription = "";
25-
26-
if (lng != PROGRAM_CONSTANTS->DEFAULT_LANGUAGE_CODE)
27-
{
28-
auto translatedNames = factionAsObject[PROGRAM_CONSTANTS->Languages.value(lng).first].toObject();
29-
30-
if (!translatedNames.isEmpty())
31-
{
32-
if (!translatedNames[PROGRAM_CONSTANTS->DISPLAY_NAME].isNull()
33-
&& !translatedNames[PROGRAM_CONSTANTS->DISPLAY_NAME].isUndefined())
34-
{
35-
_displayName = translatedNames[PROGRAM_CONSTANTS->DISPLAY_NAME].toString();
36-
}
37-
38-
if (!translatedNames[PROGRAM_CONSTANTS->DISPLAY_NAME_DESCRIPTION].isNull()
39-
&& !translatedNames[PROGRAM_CONSTANTS->DISPLAY_NAME_DESCRIPTION].isUndefined())
40-
{
41-
_displayNameDescription = translatedNames[PROGRAM_CONSTANTS->DISPLAY_NAME_DESCRIPTION].toString();
42-
}
43-
}
44-
}
45-
else
46-
{
47-
continue;
48-
}
49-
50-
localizedDisplay.insert(lng, {_displayName, _displayNameDescription});
51-
}
5221
}
5322

5423
const QString Faction::GetShortName() const { return shortName; }
5524
const QString Faction::GetDisplayName() const { return displayName; }
5625
const QString Faction::GetDisplayNameDescription() const { return displayNameDescription; }
5726
const QMap<Faction::GameObject, GameObjectTypes>& Faction::GetTechTree() const { return techTree; }
5827

59-
const QString Faction::GetDisplayName(size_t lng) const
60-
{
61-
QString ret;
62-
63-
if (lng != PROGRAM_CONSTANTS->DEFAULT_LANGUAGE_CODE)
64-
ret = localizedDisplay.value(lng).first;
65-
66-
if (ret == StringExt::EmptyString)
67-
ret = displayName;
68-
69-
return ret;
70-
}
71-
const QString Faction::GetDisplayNameDescription(size_t lng) const
72-
{
73-
QString ret;
74-
75-
if (lng != PROGRAM_CONSTANTS->DEFAULT_LANGUAGE_CODE)
76-
ret = localizedDisplay.value(lng).second;
77-
78-
if (ret == StringExt::EmptyString)
79-
ret = displayNameDescription;
80-
81-
return ret;
82-
}
83-
8428
const QVector<QVector<Faction::Action>> Faction::GetKeyboardLayoutsByObjectName(const QString& objName) const
8529
{
8630
for(const Faction::GameObject& go : techTree.keys())

src/Faction.hpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
class Faction
1010
{
11+
friend class FactionManager;
1112
public: // Types
1213
struct Action
1314
{
@@ -27,7 +28,6 @@ class Faction
2728
QString displayName;
2829
QString displayNameDescription;
2930
QMap<GameObject, GameObjectTypes> techTree;
30-
QMap<size_t, QPair<QString, QString>> localizedDisplay;
3131
public:
3232
inline static const int BASIC_FACTION_COUNT = 12;
3333

@@ -42,12 +42,8 @@ class Faction
4242
const QString GetShortName() const;
4343
/// @brief Returns another one short faction name from field `DisplayName` of TechTree.json.
4444
const QString GetDisplayName() const;
45-
/// @brief Returns another one short faction name from field `DisplayName` of TechTree.json for the specific locale.
46-
const QString GetDisplayName(size_t lng) const;
4745
/// @brief Returns long faction name from field `DisplayNameDescription` of TechTree.json.
4846
const QString GetDisplayNameDescription() const;
49-
/// @brief Returns long faction name from field `DisplayNameDescription` of TechTree.json for the specific locale.
50-
const QString GetDisplayNameDescription(size_t lng) const;
5147
/// @brief Returns link to the techTree field.
5248
const QMap<GameObject, GameObjectTypes>& GetTechTree() const;
5349
/// @brief Returns link to the keyboard layout vector searching by object name.

src/FactionsManager.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,18 @@ const Faction& FactionManager::FindByShortName(const QString& name)
2828

2929
return vFactions.at(tmp);
3030
}
31+
32+
void FactionManager::UpdateFactionNames()
33+
{
34+
for (auto& fct : vFactions)
35+
{
36+
QString _displayName = L10N(PROGRAM_CONSTANTS->FACTIONS_NAMES.value(fct.GetShortName()).first);
37+
QString _displayNameDescription = L10N(PROGRAM_CONSTANTS->FACTIONS_NAMES.value(fct.GetShortName()).second);
38+
39+
if (_displayName != StringExt::EmptyString)
40+
fct.displayName = _displayName;
41+
42+
if (_displayNameDescription != StringExt::EmptyString)
43+
fct.displayNameDescription = _displayNameDescription;
44+
}
45+
}

src/FactionsManager.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,6 @@ class FactionManager final
2525
const Faction& FindByIndex(int position);
2626
/// @brief Return faction reference.
2727
const Faction& FindByShortName(const QString& name);
28+
/// @brief Updates faction names to the current locale.
29+
void UpdateFactionNames();
2830
};

src/GUI/EditorWindow.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ EditorWindow::EditorWindow(QWidget* parent)
7171
{
7272
const Faction currFaction = FACTIONS_MANAGER->FindByIndex(sectionIndex + i);
7373

74-
QPushButton* factionButton = new QPushButton{currFaction.GetDisplayName(language)};
75-
factionButton->setToolTip(currFaction.GetDisplayNameDescription(language));
74+
QPushButton* factionButton = new QPushButton{currFaction.GetDisplayName()};
75+
factionButton->setToolTip(currFaction.GetDisplayNameDescription());
7676

7777
auto shortName = currFaction.GetShortName();
7878

src/GUI/Translations/ru.ts

Lines changed: 118 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,12 @@
109109
<translation>Поддержать разработку:</translation>
110110
</message>
111111
<message>
112-
<location filename="../EditorWindow.cpp" line="572"/>
112+
<location filename="../EditorWindow.cpp" line="567"/>
113113
<source>Binary files</source>
114114
<translation>Двоичные файлы</translation>
115115
</message>
116116
<message>
117-
<location filename="../EditorWindow.cpp" line="573"/>
117+
<location filename="../EditorWindow.cpp" line="568"/>
118118
<source>Any files</source>
119119
<translation>Все файлы</translation>
120120
</message>
@@ -226,12 +226,124 @@
226226
<translation>Невозможно найти CSF файл внутри BIG архива &quot;%1&quot;</translation>
227227
</message>
228228
<message>
229-
<source>Game files search error</source>
230-
<translation type="vanished">Ошибка поиска по игровым файлам</translation>
229+
<location filename="../../ProgramConstants.hpp" line="120"/>
230+
<source>USA</source>
231+
<translation>США</translation>
231232
</message>
232233
<message>
233-
<source>Unable to find &quot;EnglishZH.big&quot; archive in &quot;%1&quot; folder.</source>
234-
<translation type="vanished">Невозможно найти &quot;EnglishZH.big&quot; в папке &quot;%1&quot;.</translation>
234+
<location filename="../../ProgramConstants.hpp" line="120"/>
235+
<source>United Stated Of America</source>
236+
<translation>Соединённые штаты Америки</translation>
237+
</message>
238+
<message>
239+
<location filename="../../ProgramConstants.hpp" line="121"/>
240+
<source>SUPERWEAPON</source>
241+
<translation>СВГ</translation>
242+
</message>
243+
<message>
244+
<location filename="../../ProgramConstants.hpp" line="121"/>
245+
<source>Superweapons General</source>
246+
<translation>Генерал супероружейных войск</translation>
247+
</message>
248+
<message>
249+
<location filename="../../ProgramConstants.hpp" line="122"/>
250+
<source>AIR</source>
251+
<translation>ВВС</translation>
252+
</message>
253+
<message>
254+
<location filename="../../ProgramConstants.hpp" line="122"/>
255+
<source>Airforce General</source>
256+
<translation>Генерал ВВС</translation>
257+
</message>
258+
<message>
259+
<location filename="../../ProgramConstants.hpp" line="123"/>
260+
<source>LASER</source>
261+
<translation>ЛАЗЕРНИК</translation>
262+
</message>
263+
<message>
264+
<location filename="../../ProgramConstants.hpp" line="123"/>
265+
<source>Laser Weapons Generals</source>
266+
<translation>Генерал лазерного вооружения</translation>
267+
</message>
268+
<message>
269+
<location filename="../../ProgramConstants.hpp" line="124"/>
270+
<source>CHINA</source>
271+
<translation>КИТАЙ</translation>
272+
</message>
273+
<message>
274+
<location filename="../../ProgramConstants.hpp" line="124"/>
275+
<source>China</source>
276+
<translation>Китай</translation>
277+
</message>
278+
<message>
279+
<location filename="../../ProgramConstants.hpp" line="125"/>
280+
<source>INFANTRY</source>
281+
<translation>ПЕХОТНИК</translation>
282+
</message>
283+
<message>
284+
<location filename="../../ProgramConstants.hpp" line="125"/>
285+
<source>Infantry General</source>
286+
<translation>Генерал пехотных войск</translation>
287+
</message>
288+
<message>
289+
<location filename="../../ProgramConstants.hpp" line="126"/>
290+
<source>NUKE</source>
291+
<translation>ЯДЕРЩИК</translation>
292+
</message>
293+
<message>
294+
<location filename="../../ProgramConstants.hpp" line="126"/>
295+
<source>Nuke General</source>
296+
<translation>Генерал ядерных войск</translation>
297+
</message>
298+
<message>
299+
<location filename="../../ProgramConstants.hpp" line="127"/>
300+
<source>TANK</source>
301+
<translation>ТАНКОВИК</translation>
302+
</message>
303+
<message>
304+
<location filename="../../ProgramConstants.hpp" line="127"/>
305+
<source>Tank General</source>
306+
<translation>Генерал танковых войск</translation>
307+
</message>
308+
<message>
309+
<location filename="../../ProgramConstants.hpp" line="128"/>
310+
<source>GLA</source>
311+
<translation>МАО</translation>
312+
</message>
313+
<message>
314+
<location filename="../../ProgramConstants.hpp" line="128"/>
315+
<source>Global Liberation Army</source>
316+
<translation>Мировая армия освобождения</translation>
317+
</message>
318+
<message>
319+
<location filename="../../ProgramConstants.hpp" line="129"/>
320+
<source>TOXIC</source>
321+
<translation>ТОКС</translation>
322+
</message>
323+
<message>
324+
<location filename="../../ProgramConstants.hpp" line="129"/>
325+
<source>Toxic Weapons General</source>
326+
<translation>Генерал биохимического оружия</translation>
327+
</message>
328+
<message>
329+
<location filename="../../ProgramConstants.hpp" line="130"/>
330+
<source>STEALTH</source>
331+
<translation>СТЕЛС</translation>
332+
</message>
333+
<message>
334+
<location filename="../../ProgramConstants.hpp" line="130"/>
335+
<source>Stealth General</source>
336+
<translation>Генерал маскировочных войск</translation>
337+
</message>
338+
<message>
339+
<location filename="../../ProgramConstants.hpp" line="131"/>
340+
<source>DEMO</source>
341+
<translation>ПОДРЫВНИК</translation>
342+
</message>
343+
<message>
344+
<location filename="../../ProgramConstants.hpp" line="131"/>
345+
<source>Demolition General</source>
346+
<translation>Генерал подрывных войск</translation>
235347
</message>
236348
<message>
237349
<location filename="../../ProgramConstants.hpp" line="112"/>

src/GUI/WindowManager.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "../Parsers/CSFParser.hpp"
66
#include "../Windows/Registry.hpp"
77
#include "../Windows/Locale.hpp"
8+
#include "../FactionsManager.hpp"
89
#include "../Logger.hpp"
910
#include "../Convert.hpp"
1011
#include "../Exception.hpp"
@@ -119,6 +120,7 @@ void WindowManager::SetTranslator()
119120
pAppTranslator = new QTranslator();
120121
pAppTranslator->load(lngShortName, PROGRAM_CONSTANTS->TRANSLATIONS_FOLDER);
121122
qApp->installTranslator(pAppTranslator);
123+
FACTIONS_MANAGER->UpdateFactionNames();
122124
}
123125

124126
void WindowManager::Show() { pStartUpWindow->show(); }

src/ProgramConstants.hpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,22 @@ class ProgramConstants
115115
{GameObjectTypes::Aircrafts, QObject::tr("Aircrafts")}
116116
};
117117

118+
const QMap<QString, QPair<QString, QString>> FACTIONS_NAMES =
119+
{
120+
{"USA", {QObject::tr("USA"), QObject::tr("United Stated Of America")}},
121+
{"SWG", {QObject::tr("SUPERWEAPON"), QObject::tr("Superweapons General")}},
122+
{"AIR", {QObject::tr("AIR"), QObject::tr("Airforce General")}},
123+
{"LSR", {QObject::tr("LASER"), QObject::tr("Laser Weapons Generals")}},
124+
{"PRC", {QObject::tr("CHINA"), QObject::tr("China")}},
125+
{"INF", {QObject::tr("INFANTRY"), QObject::tr("Infantry General")}},
126+
{"NUK", {QObject::tr("NUKE"), QObject::tr("Nuke General")}},
127+
{"TNK", {QObject::tr("TANK"), QObject::tr("Tank General")}},
128+
{"GLA", {QObject::tr("GLA"), QObject::tr("Global Liberation Army")}},
129+
{"TOX", {QObject::tr("TOXIC"), QObject::tr("Toxic Weapons General")}},
130+
{"STL", {QObject::tr("STEALTH"), QObject::tr("Stealth General")}},
131+
{"DML", {QObject::tr("DEMO"), QObject::tr("Demolition General")}},
132+
};
133+
118134
public: // Mutable data
119135
inline static std::unique_ptr<ProgramConstants> Instance = nullptr;
120136
std::unique_ptr<Settings> pSettingsFile = nullptr;

0 commit comments

Comments
 (0)