add an internationalization constant

gather all ENGLISH|GERMAN|CHINESE etc preprocessor hell into a single
library, so to restrict the number of targets that need to be built 8x

this still has UB/EDITOR definitions so that still needs to be dealt
with before we can build it only 8 times
This commit is contained in:
Marco Antonio J. Costa
2024-12-31 16:28:44 -03:00
parent 3cfde817ba
commit 4d4e039da7
4 changed files with 47 additions and 0 deletions
+2
View File
@@ -54,6 +54,7 @@ include_directories(
"${CMAKE_SOURCE_DIR}/Multiplayer"
"${CMAKE_SOURCE_DIR}/Editor"
"${CMAKE_SOURCE_DIR}/Console"
"${CMAKE_SOURCE_DIR}/i18n/include"
)
# external libraries
@@ -85,6 +86,7 @@ Editor
Console
Tactical
ModularizedTacticalAI
i18n
)
foreach(lib IN LISTS Ja2_Libs)
add_subdirectory(${lib})
+4
View File
@@ -0,0 +1,4 @@
set(i18nSrc
"${CMAKE_CURRENT_SOURCE_DIR}/language.cpp"
PARENT_SCOPE
)
+17
View File
@@ -0,0 +1,17 @@
#pragma once
namespace i18n {
enum class Lang
{
en,
de,
ru,
nl,
pl,
fr,
it,
zh
};
}
extern const i18n::Lang g_lang;
+24
View File
@@ -0,0 +1,24 @@
#include <language.hpp>
/* FIXME: The ugliest of ugly hacks. Getting rid of this and letting language
* (ideally text and voice separately) be set in the options menu would be
* ideal. */
const i18n::Lang g_lang{
#if defined(ENGLISH)
i18n::Lang::en
#elif defined(CHINESE)
i18n::Lang::zh
#elif defined(DUTCH)
i18n::Lang::nl
#elif defined(FRENCH)
i18n::Lang::fr
#elif defined(GERMAN)
i18n::Lang::de
#elif defined(ITALIAN)
i18n::Lang::it
#elif defined(POLISH)
i18n::Lang::pl
#elif defined(RUSSIAN)
i18n::Lang::ru
#endif
};