Make LANGUAGE switchable in runtime (#653)

squashed into a single commit because doing it in steps that all
compiled involved a lot of boilerplate that is pointless to commit to
the repository. GH still has the PR for reference.

g_lang, MAX_MESSAGES_ON_MAP_BOTTOM, and GetLanguagePrefix() were
compile-time constants selected by the ENGLISH/GERMAN/... build
define. They're now runtime, defaulting to the same per-exe value the
define used to pick, and overridable at startup from [Ja2 Settings]
LANGUAGE in Ja2.ini.

-

XMLTacticalMessages is filled at runtime from NewTacticalMessages.xml,
never from compiled-in per-language data: all 8 per-language definitions
were the identical all-zero { L"" }. Delete them and define one shared
buffer in Utils/XML_Language.cpp (the loader) instead of pointer-rebinding
it like the static tables — this drops 9 dead 800KB zero-buffers (8
namespaced copies in LanguageStrings.cpp plus the standalone one) and
leaves no bind-ordering hazard for the XML load path.

-

ExportStrings.cpp privately recompiled one language's full text table
by #including the raw _<LANG>Text.cpp inside namespace Loc, keyed off
the exe-level ENGLISH/GERMAN/... compile macro (whichever the build
happened to select). That's redundant with the pointer globals every
other subsystem already uses (Text.h / LanguageStrings.cpp).

Drop the private copy; the unqualified table names in Loc::ExportStrings
now resolve to the global pointer externs, which BindLanguageStrings has
already rebound to the runtime g_lang by the time this runs (EXPORT_STRINGS
ini flag, checked after GetRuntimeSettings in sgp.cpp). gs_Lang (used only
by Loc::Translate for the Polish/Russian byte remap on raw .edt exports) is
now derived from g_lang via ToLocLanguage, so the export always matches
whatever language is actually active instead of a compile-time pick.

-

Editor/popupmenu.cpp and Strategic/Scheduling.cpp kept their own
call-site extern of gszScheduleActions as CHAR16[NUM_SCHEDULE_ACTIONS][20]
after the real definition changed into a rebindable pointer
(CHAR16 (*)[20], LanguageStrings.cpp). MSVC decays the outer array
dimension when mangling globals, so both declarations produce the same
symbol (?gszScheduleActions@@3PAY0BE@_WA) and the mismatch linked
silently -- but the array-typed TUs then indexed the 4-byte pointer
slot itself as string data, so the editor schedule popup and the map
schedule message text read garbage.

-

add text.def to be single-source of truth on symbol names and use it
 .much simpler, less error prone if adding more strings

-

add pseudo interface for language state. MAX_SAGES_ON_BOTTOM must always
 change in lockstep with g_lang. this isn't foolproof but better

---------

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
majcosta
2026-07-21 05:33:03 -03:00
committed by GitHub
co-authored by Claude Fable 5
parent ba64ed53c6
commit fd2c74727e
56 changed files with 1826 additions and 1482 deletions
+22 -25
View File
@@ -102,15 +102,13 @@ foreach(lib IN LISTS Ja2_Libs)
add_subdirectory(${lib}) add_subdirectory(${lib})
endforeach() endforeach()
# language library relies on Application _and_ Language preprocessor definition. very bad. # language library relies on Application preprocessor definition; compiled once per app
# with all 8 languages built in and selected at runtime (docs/plans/language-design.md).
add_subdirectory(i18n) add_subdirectory(i18n)
# simple function to validate Languages and Application choices # simple function to validate the Application choice
include(cmake/ValidateOptions.cmake) include(cmake/ValidateOptions.cmake)
set(ValidLanguages CHINESE DUTCH ENGLISH FRENCH GERMAN ITALIAN POLISH RUSSIAN)
ValidateOptions("${ValidLanguages}" "Languages" "${Languages}" "LangTargets")
set(ValidApplications JA2 JA2MAPEDITOR JA2UB JA2UBMAPEDITOR) set(ValidApplications JA2 JA2MAPEDITOR JA2UB JA2UBMAPEDITOR)
ValidateOptions("${ValidApplications}" "Applications" "${Applications}" "ApplicationTargets") ValidateOptions("${ValidApplications}" "Applications" "${Applications}" "ApplicationTargets")
@@ -136,28 +134,27 @@ foreach(app IN LISTS ApplicationTargets)
target_compile_definitions(${game_library} PRIVATE ${compilationFlags} ${debugFlags}) target_compile_definitions(${game_library} PRIVATE ${compilationFlags} ${debugFlags})
endforeach() endforeach()
foreach(lang IN LISTS LangTargets) # executable for the application, e.g. JA2.exe
# executable for an application/language combination, e.g. JA2_ENGLISH.exe set(exe ${app})
set(exe ${app}_${lang}) add_executable(${exe} WIN32
add_executable(${exe} WIN32 sgp/sgp.cpp
sgp/sgp.cpp Ja2/Res/ja2.rc
Ja2/Res/ja2.rc )
) target_link_libraries(${exe} PRIVATE ${Ja2_Libraries} $<IF:${usingMsBuild},legacy_stdio_definitions.lib,>)
target_link_libraries(${exe} PRIVATE ${Ja2_Libraries} $<IF:${usingMsBuild},legacy_stdio_definitions.lib,>) target_link_options(${exe} PRIVATE $<IF:${usingMsBuild},/SAFESEH:NO,>)
target_link_options(${exe} PRIVATE $<IF:${usingMsBuild},/SAFESEH:NO,>) target_compile_definitions(${exe} PRIVATE ${compilationFlags} ${debugFlags})
target_compile_definitions(${exe} PRIVATE ${compilationFlags} ${debugFlags})
# language library for an application, e.g. JA2MAPEDITOR_ENGLISH_i18n # language library for the application, e.g. JA2MAPEDITOR_i18n — one per app, all 8
set(language_library ${exe}_i18n) # languages compiled in, selected at runtime by BindLanguageStrings
add_library(${language_library}) set(language_library ${exe}_i18n)
target_sources(${language_library} PRIVATE ${i18nSrc}) add_library(${language_library})
target_compile_definitions(${language_library} PRIVATE ${compilationFlags} ${debugFlags} ${lang}) target_sources(${language_library} PRIVATE ${i18nSrc})
target_link_libraries(${exe} PRIVATE ${language_library}) target_compile_definitions(${language_library} PRIVATE ${compilationFlags} ${debugFlags})
target_link_libraries(${exe} PRIVATE ${language_library})
# go through all game libraries again and link them to the app/language executable # go through all game libraries again and link them to the app executable
foreach(lib IN LISTS Ja2_Libs) foreach(lib IN LISTS Ja2_Libs)
target_link_libraries(${exe} PRIVATE ${app}_${lib}) target_link_libraries(${exe} PRIVATE ${app}_${lib})
endforeach()
endforeach() endforeach()
# for SGP only # for SGP only
+2 -2
View File
@@ -29,7 +29,7 @@ void IncreaseSelectionDensity();
void DecreaseSelectionDensity(); void DecreaseSelectionDensity();
void RemoveCursors(); void RemoveCursors();
extern STR16 wszSelType[6]; extern STR16 *wszSelType;
extern BOOLEAN gfCurrentSelectionWithRightButton; extern BOOLEAN gfCurrentSelectionWithRightButton;
@@ -40,4 +40,4 @@ extern BOOLEAN gfCurrentSelectionWithRightButton;
#endif #endif
#endif #endif
+1 -1
View File
@@ -325,7 +325,7 @@ extern UINT8 gubCurrMercMode, gubPrevMercMode;
#define NUM_DIFF_LVLS 5 #define NUM_DIFF_LVLS 5
extern STR16 zDiffNames[NUM_DIFF_LVLS]; extern STR16 *zDiffNames;
extern INT16 sCurBaseDiff; extern INT16 sCurBaseDiff;
extern INT16 gsSelectedMercID; extern INT16 gsSelectedMercID;
extern INT32 gsSelectedMercGridNo; extern INT32 gsSelectedMercGridNo;
+1 -1
View File
@@ -40,7 +40,7 @@ MOUSE_REGION popupRegion;
UINT16 gusEntryHeight; UINT16 gusEntryHeight;
BOOLEAN fWaitingForLButtonRelease = FALSE; BOOLEAN fWaitingForLButtonRelease = FALSE;
extern CHAR16 gszScheduleActions[ NUM_SCHEDULE_ACTIONS ][20]; extern CHAR16 (*gszScheduleActions)[20]; // NUM_SCHEDULE_ACTIONS entries
//Finds the string for any popup menu in JA2 -- the strings are stored //Finds the string for any popup menu in JA2 -- the strings are stored
//in different ways in each instance. //in different ways in each instance.
+1 -1
View File
@@ -174,7 +174,7 @@ private:
static VideoPlayer s_VP(VideoPlayer::VT_SMK | VideoPlayer::VT_BINK); static VideoPlayer s_VP(VideoPlayer::VT_SMK | VideoPlayer::VT_BINK);
extern STR16 gzIntroScreen[]; extern STR16* gzIntroScreen;
extern HVSURFACE ghFrameBuffer; extern HVSURFACE ghFrameBuffer;
enum enum
+1 -1
View File
@@ -89,7 +89,7 @@ extern BOOLEAN gfDontOverRideSaveBuffer; //this variable can be unset if u
extern void HandleTacticalUILoseCursorFromOtherScreen( ); extern void HandleTacticalUILoseCursorFromOtherScreen( );
extern STR16 pUpdatePanelButtons[]; extern STR16* pUpdatePanelButtons;
#define NUM_CHAT_TOGGLES 2 #define NUM_CHAT_TOGGLES 2
+1 -1
View File
@@ -69,7 +69,7 @@ BOOLEAN gfStartedFromMapScreen = FALSE;
BOOLEAN fRestoreBackgroundForMessageBox = FALSE; BOOLEAN fRestoreBackgroundForMessageBox = FALSE;
BOOLEAN gfDontOverRideSaveBuffer = TRUE; //this variable can be unset if ur in a non gamescreen and DONT want the msg box to use the save buffer BOOLEAN gfDontOverRideSaveBuffer = TRUE; //this variable can be unset if ur in a non gamescreen and DONT want the msg box to use the save buffer
extern void HandleTacticalUILoseCursorFromOtherScreen( ); extern void HandleTacticalUILoseCursorFromOtherScreen( );
extern STR16 pUpdatePanelButtons[]; extern STR16* pUpdatePanelButtons;
CHAR16 gzUserDefinedButton1[ 128 ]; CHAR16 gzUserDefinedButton1[ 128 ];
CHAR16 gzUserDefinedButton2[ 128 ]; CHAR16 gzUserDefinedButton2[ 128 ];
+1 -1
View File
@@ -75,7 +75,7 @@ extern INT32 iAddExplosives ;
extern INT32 iAddMechanical ; extern INT32 iAddMechanical ;
// pop up strings // pop up strings
extern STR16 pImpPopUpStrings[]; extern STR16* pImpPopUpStrings;
//extern BOOLEAN fIMPCompletedFlag; //extern BOOLEAN fIMPCompletedFlag;
+2 -2
View File
@@ -7,6 +7,6 @@ void RenderIMPPersonalityEntrance( void );
void ExitIMPPersonalityEntrance( void ); void ExitIMPPersonalityEntrance( void );
void HandleIMPPersonalityEntrance( void ); void HandleIMPPersonalityEntrance( void );
STR16 pSkillTraitBeginIMPStrings[]; extern STR16* pSkillTraitBeginIMPStrings;
#endif #endif
+4 -4
View File
@@ -9,13 +9,13 @@ void PrintImpText( void );
void PrintIMPPersonalityQuizQuestionAndAnsers( void ); void PrintIMPPersonalityQuizQuestionAndAnsers( void );
// buttons text // buttons text
extern STR16 pImpButtonText[]; extern STR16* pImpButtonText;
// extra strings not found in IMP Text Document // extra strings not found in IMP Text Document
extern STR16 pExtraIMPStrings[]; extern STR16* pExtraIMPStrings;
extern STR16 pSkillTraitBeginIMPStrings[]; // added - SANDRO extern STR16* pSkillTraitBeginIMPStrings; // added - SANDRO
enum{ enum{
IMP_HOME_1, IMP_HOME_1,
@@ -145,4 +145,4 @@ enum{
}; };
#endif #endif
+1 -1
View File
@@ -186,7 +186,7 @@ REPAIR_PASS_SLOTS_TYPE gRepairPassSlotList[ NUM_REPAIR_PASS_TYPES ] =
{ /* HEADROCK HAM B2.8: LBE Slot pass */ 0, 5, VESTPOCKPOS, LTHIGHPOCKPOS, RTHIGHPOCKPOS, CPACKPOCKPOS, BPACKPOCKPOS, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, { /* HEADROCK HAM B2.8: LBE Slot pass */ 0, 5, VESTPOCKPOS, LTHIGHPOCKPOS, RTHIGHPOCKPOS, CPACKPOCKPOS, BPACKPOCKPOS, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
}; };
extern STR16 sRepairsDoneString[]; extern STR16* sRepairsDoneString;
// PopUp Box Handles // PopUp Box Handles
INT32 ghAssignmentBox = -1; INT32 ghAssignmentBox = -1;
+1 -1
View File
@@ -194,7 +194,7 @@ INT32 iHeightOfInitFastHelpText = 0;
extern INT32 giMapContractButton; extern INT32 giMapContractButton;
extern INT32 giCharInfoButton[]; extern INT32 giCharInfoButton[];
extern STR16 pUpdatePanelButtons[]; extern STR16* pUpdatePanelButtons;
// the list of soldiers that are moving // the list of soldiers that are moving
SOLDIERTYPE * pSoldierMovingList[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; SOLDIERTYPE * pSoldierMovingList[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ];
+1 -1
View File
@@ -49,7 +49,7 @@ extern "C" {
extern CHAR16 gzUserDefinedButton1[ 128 ]; extern CHAR16 gzUserDefinedButton1[ 128 ];
extern CHAR16 gzUserDefinedButton2[ 128 ]; extern CHAR16 gzUserDefinedButton2[ 128 ];
extern CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT]; extern CHAR16 (*pTownNames)[MAX_TOWN_NAME_LENGHT];
static size_t MAX_BUTTON_LENGTH = 60; static size_t MAX_BUTTON_LENGTH = 60;
static size_t MAX_BODY_LENGTH = 450; static size_t MAX_BODY_LENGTH = 450;
+2 -2
View File
@@ -2,8 +2,8 @@
#define _QUEST_TEXT_H_ #define _QUEST_TEXT_H_
STR16 QuestDescText[]; extern STR16 *QuestDescText;
STR16 FactDescText[]; extern STR16 *FactDescText;
#endif #endif
+1 -1
View File
@@ -31,7 +31,7 @@ class SOLDIERTYPE;
#ifdef JA2EDITOR #ifdef JA2EDITOR
extern CHAR16 gszScheduleActions[ NUM_SCHEDULE_ACTIONS ][20]; extern CHAR16 (*gszScheduleActions)[20]; // NUM_SCHEDULE_ACTIONS entries
#endif #endif
BOOLEAN GetEarliestMorningScheduleEvent( SCHEDULENODE *pSchedule, UINT32 * puiTime ); BOOLEAN GetEarliestMorningScheduleEvent( SCHEDULENODE *pSchedule, UINT32 * puiTime );
+1 -1
View File
@@ -180,7 +180,7 @@ INT16 sWorldSectorLocationOfFirstBattle = 0;
// preprocess sector for mercs in it // preprocess sector for mercs in it
extern BOOLEAN fSectorsWithSoldiers[ MAP_WORLD_X * MAP_WORLD_X ][ 4 ]; extern BOOLEAN fSectorsWithSoldiers[ MAP_WORLD_X * MAP_WORLD_X ][ 4 ];
extern CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT]; extern CHAR16 (*pTownNames)[MAX_TOWN_NAME_LENGHT];
+2 -2
View File
@@ -613,8 +613,8 @@ extern BOOLEAN gfAutoAIAware;
extern void HandlePreBattleInterfaceStates(); extern void HandlePreBattleInterfaceStates();
// the title for the contract button on the character info panel in the upper left portion of the mapscreen // the title for the contract button on the character info panel in the upper left portion of the mapscreen
extern STR16 pContractButtonString[]; extern STR16* pContractButtonString;
extern STR16 pBullseyeStrings[]; extern STR16* pBullseyeStrings;
extern OBJECTTYPE *gpItemDescObject; extern OBJECTTYPE *gpItemDescObject;
+1 -1
View File
@@ -357,7 +357,7 @@ extern HVSURFACE ghFrameBuffer;
extern BOOLEAN gfOverrideSector; extern BOOLEAN gfOverrideSector;
extern BOOLEAN sBadSectorsList[WORLD_MAP_X][WORLD_MAP_X]; extern BOOLEAN sBadSectorsList[WORLD_MAP_X][WORLD_MAP_X];
extern STR16 pBullseyeStrings[]; extern STR16* pBullseyeStrings;
extern void HandleRPCDescription( ); extern void HandleRPCDescription( );
-1
View File
@@ -2,4 +2,3 @@
# priority (LOW,HIGH) and description # priority (LOW,HIGH) and description
LOW readd the C4838 (https://learn.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4838) warning to CMakeLists.txt once they're all fixed in the code LOW readd the C4838 (https://learn.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4838) warning to CMakeLists.txt once they're all fixed in the code
HIGH get rid of ENGLISH, GERMAN, etc preprocessor definitions completely. that way i18n can be built just once and language can be changed in the options screen pending game restart (hotloading will likely require more work)
+1 -2
View File
@@ -167,7 +167,6 @@ extern BOOLEAN KeyExistsInInventory( SOLDIERTYPE *pSoldier, UINT8 ubKeyID );
extern BOOLEAN KeyExistsInKeyRing( SOLDIERTYPE *pSoldier, UINT8 ubKeyID, UINT8 * pubPos ); extern BOOLEAN KeyExistsInKeyRing( SOLDIERTYPE *pSoldier, UINT8 ubKeyID, UINT8 * pubPos );
extern BOOLEAN SoldierHasKey( SOLDIERTYPE *pSoldier, UINT8 ubKeyID ); extern BOOLEAN SoldierHasKey( SOLDIERTYPE *pSoldier, UINT8 ubKeyID );
extern STR16 sKeyDescriptionStrings[];
/********************************** /**********************************
* Door utils add by Kris Morness * * Door utils add by Kris Morness *
**********************************/ **********************************/
@@ -281,4 +280,4 @@ void AttachStringToDoor( INT32 sGridNo );
void DropKeysInKeyRing( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, INT8 bVisible, BOOLEAN fAddToDropList, INT32 iDropListSlot, BOOLEAN fUseUnLoaded ); void DropKeysInKeyRing( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, INT8 bVisible, BOOLEAN fAddToDropList, INT32 iDropListSlot, BOOLEAN fUseUnLoaded );
#endif #endif
+1 -1
View File
@@ -1180,7 +1180,7 @@ profileEndElementHandle(void *userData, const XML_Char *name)
#include <vfs/Core/vfs_file_raii.h> // added by Flugente for vfs-stuff #include <vfs/Core/vfs_file_raii.h> // added by Flugente for vfs-stuff
#include <iostream> #include <iostream>
extern STR16 gzMercSkillTextNew[]; extern STR16* gzMercSkillTextNew;
void AnalyzeProfiles() void AnalyzeProfiles()
{ {
+1 -1
View File
@@ -22,7 +22,7 @@ UINT32 guiFireAmbientLastUpdate = 0;
extern STR8 pVertStrings[]; extern STR8 pVertStrings[];
extern STR8 pHortStrings[]; extern STR8 pHortStrings[];
extern CHAR16 pTownNames[MAX_TOWNS][MAX_TOWN_NAME_LENGHT]; extern CHAR16 (*pTownNames)[MAX_TOWN_NAME_LENGHT];
UINT8 gubCurrentSteadyStateAmbience = SSA_NONE; UINT8 gubCurrentSteadyStateAmbience = SSA_NONE;
UINT8 gubCurrentSteadyStateSound = 0; UINT8 gubCurrentSteadyStateSound = 0;
+5
View File
@@ -28,6 +28,11 @@ typedef enum
LANGUAGE_LOCATION zlanguageText[1000]; LANGUAGE_LOCATION zlanguageText[1000];
// Single shared buffer for all languages (declared in Text.h): filled at runtime from
// NewTacticalMessages.xml below, never from compiled-in per-language data, so it is not
// part of the BindLanguageStrings pointer-rebind scheme.
CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS];
typedef struct typedef struct
{ {
LANGUAGE_PARSE_STAGE curElement; LANGUAGE_PARSE_STAGE curElement;
-1
View File
@@ -1,6 +1,5 @@
function(CopyUserPresetTemplate) function(CopyUserPresetTemplate)
if( if(
NOT DEFINED Languages AND
NOT DEFINED Applications AND NOT DEFINED Applications AND
NOT EXISTS "${CMAKE_SOURCE_DIR}/CMakePresets.json" AND NOT EXISTS "${CMAKE_SOURCE_DIR}/CMakePresets.json" AND
NOT EXISTS "${CMAKE_SOURCE_DIR}/CMakeUserPresets.json" NOT EXISTS "${CMAKE_SOURCE_DIR}/CMakeUserPresets.json"
-2
View File
@@ -7,8 +7,6 @@
"generator": "Ninja", "generator": "Ninja",
"binaryDir": "${sourceDir}/build/${presetName}", "binaryDir": "${sourceDir}/build/${presetName}",
"cacheVariables": { "cacheVariables": {
// Valid choices: ENGLISH;GERMAN;FRENCH;ITALIAN;POLISH;DUTCH;RUSSIAN;CHINESE. If empty (""), will configure all.
"Languages": "ENGLISH",
// Valid choices: JA2;JA2MAPEDITOR;JA2UB;JA2UBMAPEDITOR. If empty (""), will configure all. // Valid choices: JA2;JA2MAPEDITOR;JA2UB;JA2UBMAPEDITOR. If empty (""), will configure all.
"Applications": "JA2", "Applications": "JA2",
// For debugging: enter your desired gamedir. e.g. C:/Games/JA2 // For debugging: enter your desired gamedir. e.g. C:/Games/JA2
+1 -16
View File
@@ -1,23 +1,8 @@
set(i18nSrc set(i18nSrc
"${CMAKE_CURRENT_SOURCE_DIR}/language.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/language.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/LanguageStrings.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Ja2 Libs.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/Ja2 Libs.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/ExportStrings.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/ExportStrings.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/_ChineseText.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/_DutchText.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/_EnglishText.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/_FrenchText.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/_GermanText.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/_ItalianText.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/_Ja25ChineseText.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/_Ja25DutchText.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/_Ja25EnglishText.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/_Ja25FrenchText.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/_Ja25GermanText.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/_Ja25ItalianText.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/_Ja25PolishText.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/_Ja25RussianText.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/_PolishText.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/_RussianText.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Multi Language Graphic Utils.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/Multi Language Graphic Utils.cpp"
PARENT_SCOPE PARENT_SCOPE
) )
+277 -280
View File
@@ -29,42 +29,39 @@ namespace Loc
////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////
//#define GERMAN
#include "Text.h" #include "Text.h"
namespace Loc #include <language.hpp>
// Declared only as bare externs at their call sites (Ja2/, Strategic/) -- the same
// escapees the C10 header sweep and Cn+1 residue (docs/plans/language-design.md) missed
// because Text.h never declared them. This TU needs them too.
extern STR16* gzIntroScreen;
extern STR16* pBullseyeStrings;
extern STR16* pContractButtonString;
extern STR16* pUpdatePanelButtons;
extern STR16* sRepairsDoneString;
// Table symbols below (Loc::pTownNames etc.) are unqualified inside Loc::ExportStrings's
// body, so they resolve to the pointer globals in Text.h/LanguageStrings.cpp -- rebound to
// the runtime-selected g_lang by BindLanguageStrings before this ever runs (sgp.cpp,
// GetRuntimeSettings then EXPORT_STRINGS ini check). No private per-language copy needed.
namespace
{ {
#ifdef CHINESE Loc::Language ToLocLanguage(i18n::Lang lang)
# include "_ChineseText.cpp" {
static Loc::Language gs_Lang = Loc::Chinese; switch (lang)
#endif {
#ifdef DUTCH case i18n::Lang::zh: return Loc::Chinese;
# include "_DutchText.cpp" case i18n::Lang::nl: return Loc::Dutch;
static Loc::Language gs_Lang = Loc::Dutch; case i18n::Lang::en: return Loc::English;
#endif case i18n::Lang::fr: return Loc::French;
#ifdef ENGLISH case i18n::Lang::de: return Loc::German;
# include "_EnglishText.cpp" case i18n::Lang::it: return Loc::Italian;
static Loc::Language gs_Lang = Loc::English; case i18n::Lang::pl: return Loc::Polish;
#endif case i18n::Lang::ru: return Loc::Russian;
#ifdef FRENCH }
# include "_FrenchText.cpp" return Loc::English;
static Loc::Language gs_Lang = Loc::French; }
#endif
#ifdef GERMAN
# include "_GermanText.cpp"
static Loc::Language gs_Lang = Loc::German;
#endif
#ifdef ITALIAN
# include "_ItalianText.cpp"
static Loc::Language gs_Lang = Loc::Italian;
#endif
#ifdef POLISH
# include "_PolishText.cpp"
static Loc::Language gs_Lang = Loc::Polish;
#endif
#ifdef RUSSIAN
# include "_RussianText.cpp"
static Loc::Language gs_Lang = Loc::Russian;
#endif
} }
#include "Assignments.h" #include "Assignments.h"
@@ -102,271 +99,271 @@ bool Loc::ExportStrings()
vfs::PropertyContainer props; vfs::PropertyContainer props;
//not_required ExportSection(props, L"Ja2Credits", Loc::pCreditsJA2113, 0, 7); //not_required ExportSection(props, L"Ja2Credits", pCreditsJA2113, 0, 7);
ExportSection(props, L"WeaponType", Loc::WeaponType, 0, MAXITEMS); ExportSection(props, L"WeaponType", WeaponType, 0, MAXITEMS);
ExportSection(props, L"TeamTurn", Loc::TeamTurnString, 0, 10); ExportSection(props, L"TeamTurn", TeamTurnString, 0, 10);
ExportSection(props, L"Message", Loc::Message, 0, TEXT_NUM_STR_MESSAGE); ExportSection(props, L"Message", Message, 0, TEXT_NUM_STR_MESSAGE);
ExportSection(props, L"TownNames", Loc::pTownNames, 0, MAX_TOWNS); ExportSection(props, L"TownNames", pTownNames, 0, MAX_TOWNS);
ExportSection(props, L"Time", Loc::sTimeStrings, 0, 6); ExportSection(props, L"Time", sTimeStrings, 0, 6);
ExportSection(props, L"Assignment", Loc::pAssignmentStrings, 0, NUM_ASSIGNMENTS); ExportSection(props, L"Assignment", pAssignmentStrings, 0, NUM_ASSIGNMENTS);
ExportSection(props, L"PersonnelAssignment", Loc::pPersonnelAssignmentStrings, 0, NUM_ASSIGNMENTS); ExportSection(props, L"PersonnelAssignment", pPersonnelAssignmentStrings, 0, NUM_ASSIGNMENTS);
ExportSection(props, L"LongAssignment", Loc::pLongAssignmentStrings, 0, NUM_ASSIGNMENTS); ExportSection(props, L"LongAssignment", pLongAssignmentStrings, 0, NUM_ASSIGNMENTS);
ExportSection(props, L"Militia", Loc::pMilitiaString, 0, 3); ExportSection(props, L"Militia", pMilitiaString, 0, 3);
ExportSection(props, L"MilitiaButton", Loc::pMilitiaButtonString, 0, 2); ExportSection(props, L"MilitiaButton", pMilitiaButtonString, 0, 2);
ExportSection(props, L"Condition", Loc::pConditionStrings, 0, 9); ExportSection(props, L"Condition", pConditionStrings, 0, 9);
ExportSection(props, L"EpcMenu", Loc::pEpcMenuStrings, 0, MAX_EPC_MENU_STRING_COUNT); ExportSection(props, L"EpcMenu", pEpcMenuStrings, 0, MAX_EPC_MENU_STRING_COUNT);
ExportSection(props, L"Contract", Loc::pContractStrings, 0, MAX_CONTRACT_MENU_STRING_COUNT); ExportSection(props, L"Contract", pContractStrings, 0, MAX_CONTRACT_MENU_STRING_COUNT);
ExportSection(props, L"POW", Loc::pPOWStrings, 0, 2); ExportSection(props, L"POW", pPOWStrings, 0, 2);
ExportSection(props, L"InvPanelTitle", Loc::pInvPanelTitleStrings, 0, 5); ExportSection(props, L"InvPanelTitle", pInvPanelTitleStrings, 0, 5);
ExportSection(props, L"LongAttribute", Loc::pLongAttributeStrings, 0, 10); ExportSection(props, L"LongAttribute", pLongAttributeStrings, 0, 10);
ExportSection(props, L"ShortAttribute", Loc::pShortAttributeStrings, 0, 10); ExportSection(props, L"ShortAttribute", pShortAttributeStrings, 0, 10);
ExportSection(props, L"UpperLeftMapScreen", Loc::pUpperLeftMapScreenStrings, 0, 6); ExportSection(props, L"UpperLeftMapScreen", pUpperLeftMapScreenStrings, 0, 6);
ExportSection(props, L"Training", Loc::pTrainingStrings, 0, 4); ExportSection(props, L"Training", pTrainingStrings, 0, 4);
ExportSection(props, L"GuardMenu", Loc::pGuardMenuStrings, 0, 10); ExportSection(props, L"GuardMenu", pGuardMenuStrings, 0, 10);
ExportSection(props, L"OtherGuardMenu", Loc::pOtherGuardMenuStrings, 0, 10); ExportSection(props, L"OtherGuardMenu", pOtherGuardMenuStrings, 0, 10);
ExportSection(props, L"AssignMenu", Loc::pAssignMenuStrings, 0, MAX_ASSIGN_STRING_COUNT); ExportSection(props, L"AssignMenu", pAssignMenuStrings, 0, MAX_ASSIGN_STRING_COUNT);
ExportSection(props, L"MilitiaControlMenu", Loc::pMilitiaControlMenuStrings, 0, MAX_MILCON_STRING_COUNT); ExportSection(props, L"MilitiaControlMenu", pMilitiaControlMenuStrings, 0, MAX_MILCON_STRING_COUNT);
ExportSection(props, L"RemoveMerc", Loc::pRemoveMercStrings, 0, MAX_REMOVE_MERC_COUNT); ExportSection(props, L"RemoveMerc", pRemoveMercStrings, 0, MAX_REMOVE_MERC_COUNT);
ExportSection(props, L"AttributeMenu", Loc::pAttributeMenuStrings, 0, MAX_ATTRIBUTE_STRING_COUNT); ExportSection(props, L"AttributeMenu", pAttributeMenuStrings, 0, MAX_ATTRIBUTE_STRING_COUNT);
ExportSection(props, L"TrainingMenu", Loc::pTrainingMenuStrings, 0, MAX_TRAIN_STRING_COUNT); ExportSection(props, L"TrainingMenu", pTrainingMenuStrings, 0, MAX_TRAIN_STRING_COUNT);
ExportSection(props, L"SquadMenu", Loc::pSquadMenuStrings, 0, MAX_SQUAD_MENU_STRING_COUNT); ExportSection(props, L"SquadMenu", pSquadMenuStrings, 0, MAX_SQUAD_MENU_STRING_COUNT);
ExportSection(props, L"SnitchMenu", Loc::pSnitchMenuStrings, 0, MAX_SNITCH_MENU_STRING_COUNT); ExportSection(props, L"SnitchMenu", pSnitchMenuStrings, 0, MAX_SNITCH_MENU_STRING_COUNT);
ExportSection(props, L"SnitchMenuDesc", Loc::pSnitchMenuDescStrings, 0, MAX_SNITCH_MENU_STRING_COUNT-1); ExportSection(props, L"SnitchMenuDesc", pSnitchMenuDescStrings, 0, MAX_SNITCH_MENU_STRING_COUNT-1);
ExportSection(props, L"SnitchToggleMenu", Loc::pSnitchToggleMenuStrings, 0, MAX_SNITCH_TOGGLE_MENU_STRING_COUNT); ExportSection(props, L"SnitchToggleMenu", pSnitchToggleMenuStrings, 0, MAX_SNITCH_TOGGLE_MENU_STRING_COUNT);
ExportSection(props, L"SnitchToggleMenuDesc", Loc::pSnitchToggleMenuDescStrings, 0, MAX_SNITCH_TOGGLE_MENU_STRING_COUNT-1); ExportSection(props, L"SnitchToggleMenuDesc", pSnitchToggleMenuDescStrings, 0, MAX_SNITCH_TOGGLE_MENU_STRING_COUNT-1);
ExportSection(props, L"SnitchSectorMenu", Loc::pSnitchSectorMenuStrings, 0, MAX_SNITCH_SECTOR_MENU_STRING_COUNT); ExportSection(props, L"SnitchSectorMenu", pSnitchSectorMenuStrings, 0, MAX_SNITCH_SECTOR_MENU_STRING_COUNT);
ExportSection(props, L"SnitchSectorMenuDesc", Loc::pSnitchSectorMenuDescStrings, 0, MAX_SNITCH_SECTOR_MENU_STRING_COUNT-1); ExportSection(props, L"SnitchSectorMenuDesc", pSnitchSectorMenuDescStrings, 0, MAX_SNITCH_SECTOR_MENU_STRING_COUNT-1);
ExportSection(props, L"PrisonerMenu", Loc::pPrisonerMenuStrings, 0, MAX_PRISONER_MENU_STRING_COUNT ); ExportSection(props, L"PrisonerMenu", pPrisonerMenuStrings, 0, MAX_PRISONER_MENU_STRING_COUNT );
ExportSection(props, L"PrisonerMenuDesc", Loc::pPrisonerMenuDescStrings, 0, MAX_PRISONER_MENU_STRING_COUNT - 1 ); ExportSection(props, L"PrisonerMenuDesc", pPrisonerMenuDescStrings, 0, MAX_PRISONER_MENU_STRING_COUNT - 1 );
ExportSection(props, L"SnitchPrisonExposed", Loc::pSnitchPrisonExposedStrings, 0, NUM_SNITCH_PRISON_EXPOSED); ExportSection(props, L"SnitchPrisonExposed", pSnitchPrisonExposedStrings, 0, NUM_SNITCH_PRISON_EXPOSED);
ExportSection(props, L"SnitchGatheringRumoursResult", Loc::pSnitchGatheringRumoursResultStrings, 0, NUM_SNITCH_GATHERING_RUMOURS_RESULT); ExportSection(props, L"SnitchGatheringRumoursResult", pSnitchGatheringRumoursResultStrings, 0, NUM_SNITCH_GATHERING_RUMOURS_RESULT);
ExportSection(props, L"PersonnelTitle", Loc::pPersonnelTitle, 0, 1); ExportSection(props, L"PersonnelTitle", pPersonnelTitle, 0, 1);
ExportSection(props, L"PersonnelScreen", Loc::pPersonnelScreenStrings, 0, TEXT_NUM_PRSNL); ExportSection(props, L"PersonnelScreen", pPersonnelScreenStrings, 0, TEXT_NUM_PRSNL);
ExportSection(props, L"MercSkill", Loc::gzMercSkillText, 0, NUM_SKILLTRAITS_OT); ExportSection(props, L"MercSkill", gzMercSkillText, 0, NUM_SKILLTRAITS_OT);
ExportSection(props, L"TacticalPopupButton", Loc::pTacticalPopupButtonStrings, 0, NUM_ICONS); ExportSection(props, L"TacticalPopupButton", pTacticalPopupButtonStrings, 0, NUM_ICONS);
ExportSection(props, L"DoorTrap", Loc::pDoorTrapStrings, 0, NUM_DOOR_TRAPS); ExportSection(props, L"DoorTrap", pDoorTrapStrings, 0, NUM_DOOR_TRAPS);
ExportSection(props, L"ContractExtend", Loc::pContractExtendStrings, 0, NUM_CONTRACT_EXTEND); ExportSection(props, L"ContractExtend", pContractExtendStrings, 0, NUM_CONTRACT_EXTEND);
ExportSection(props, L"MapScreenMouseRegionHelp", Loc::pMapScreenMouseRegionHelpText, 0, 6); ExportSection(props, L"MapScreenMouseRegionHelp", pMapScreenMouseRegionHelpText, 0, 6);
ExportSection(props, L"NoiseVol", Loc::pNoiseVolStr, 0, 4); ExportSection(props, L"NoiseVol", pNoiseVolStr, 0, 4);
ExportSection(props, L"NoiseType", Loc::pNoiseTypeStr, 0, 12); ExportSection(props, L"NoiseType", pNoiseTypeStr, 0, 12);
ExportSection(props, L"Direction", Loc::pDirectionStr, 0, 8); ExportSection(props, L"Direction", pDirectionStr, 0, 8);
ExportSection(props, L"LandType", Loc::pLandTypeStrings, 0, NUM_TRAVTERRAIN_TYPES); ExportSection(props, L"LandType", pLandTypeStrings, 0, NUM_TRAVTERRAIN_TYPES);
ExportSection(props, L"Strategic", Loc::gpStrategicString, 0, TEXT_NUM_STRATEGIC_TEXT); ExportSection(props, L"Strategic", gpStrategicString, 0, TEXT_NUM_STRATEGIC_TEXT);
ExportSection(props, L"GameClock", Loc::gpGameClockString, 0, TEXT_NUM_GAMECLOCK); ExportSection(props, L"GameClock", gpGameClockString, 0, TEXT_NUM_GAMECLOCK);
ExportSection(props, L"KeyDescription", Loc::sKeyDescriptionStrings, 0, 2); ExportSection(props, L"KeyDescription", sKeyDescriptionStrings, 0, 2);
ExportSection(props, L"WeaponStatsDesc", Loc::gWeaponStatsDesc, 0, 17); ExportSection(props, L"WeaponStatsDesc", gWeaponStatsDesc, 0, 17);
ExportSection(props, L"WeaponStatsFasthelpTactical",Loc::gzWeaponStatsFasthelpTactical, 0, 29); ExportSection(props, L"WeaponStatsFasthelpTactical",gzWeaponStatsFasthelpTactical, 0, 29);
ExportSection(props, L"MiscItemStatsFasthelp", Loc::gzMiscItemStatsFasthelp, 0, 34); ExportSection(props, L"MiscItemStatsFasthelp", gzMiscItemStatsFasthelp, 0, 34);
ExportSection(props, L"MoneyStatsDesc", Loc::gMoneyStatsDesc, 0, TEXT_NUM_MONEY_DESC); ExportSection(props, L"MoneyStatsDesc", gMoneyStatsDesc, 0, TEXT_NUM_MONEY_DESC);
ExportSection(props, L"Health", Loc::zHealthStr, 0, 7); ExportSection(props, L"Health", zHealthStr, 0, 7);
ExportSection(props, L"MoneyAmounts", Loc::gzMoneyAmounts, 0, 6); ExportSection(props, L"MoneyAmounts", gzMoneyAmounts, 0, 6);
ExportSection(props, L"ProsLabel", Loc::gzProsLabel, 0, 1); ExportSection(props, L"ProsLabel", gzProsLabel, 0, 1);
ExportSection(props, L"ConsLabel", Loc::gzConsLabel, 0, 1); ExportSection(props, L"ConsLabel", gzConsLabel, 0, 1);
ExportSection(props, L"TalkMenu", Loc::zTalkMenuStrings, 0, 6); ExportSection(props, L"TalkMenu", zTalkMenuStrings, 0, 6);
ExportSection(props, L"Dealer", Loc::zDealerStrings, 0, 4); ExportSection(props, L"Dealer", zDealerStrings, 0, 4);
ExportSection(props, L"DialogActions", Loc::zDialogActions, 0, 1); ExportSection(props, L"DialogActions", zDialogActions, 0, 1);
ExportSection(props, L"Vehicle", Loc::pVehicleStrings, 0, 6); ExportSection(props, L"Vehicle", pVehicleStrings, 0, 6);
ExportSection(props, L"ShortVehicle", Loc::pShortVehicleStrings, 0, 6); ExportSection(props, L"ShortVehicle", pShortVehicleStrings, 0, 6);
ExportSection(props, L"VehicleName", Loc::zVehicleName, 0, 6); ExportSection(props, L"VehicleName", zVehicleName, 0, 6);
ExportSection(props, L"VehicleSeatsStrings", Loc::pVehicleSeatsStrings, 0, 2); ExportSection(props, L"VehicleSeatsStrings", pVehicleSeatsStrings, 0, 2);
ExportSection(props, L"Tactical", Loc::TacticalStr, 0, TEXT_NUM_TACTICAL_STR); ExportSection(props, L"Tactical", TacticalStr, 0, TEXT_NUM_TACTICAL_STR);
ExportSection(props, L"ExitingSectorHelp", Loc::pExitingSectorHelpText, 0, TEXT_NUM_EXIT_GUI); ExportSection(props, L"ExitingSectorHelp", pExitingSectorHelpText, 0, TEXT_NUM_EXIT_GUI);
ExportSection(props, L"Repair", Loc::pRepairStrings, 0, 4); ExportSection(props, L"Repair", pRepairStrings, 0, 4);
ExportSection(props, L"PreStatBuild", Loc::sPreStatBuildString, 0, 6); ExportSection(props, L"PreStatBuild", sPreStatBuildString, 0, 6);
ExportSection(props, L"StatGain", Loc::sStatGainStrings, 0, 11); ExportSection(props, L"StatGain", sStatGainStrings, 0, 11);
ExportSection(props, L"HelicopterEta", Loc::pHelicopterEtaStrings, 0, TEXT_NUM_STR_HELI_ETA); ExportSection(props, L"HelicopterEta", pHelicopterEtaStrings, 0, TEXT_NUM_STR_HELI_ETA);
ExportSection(props, L"HelicopterRepair", Loc::pHelicopterRepairRefuelStrings, 0, TEXT_NUM_STR_HELI_REPAIRS); ExportSection(props, L"HelicopterRepair", pHelicopterRepairRefuelStrings, 0, TEXT_NUM_STR_HELI_REPAIRS);
ExportSection(props, L"MapLevel", Loc::sMapLevelString, 0, 1); ExportSection(props, L"MapLevel", sMapLevelString, 0, 1);
ExportSection(props, L"Loyal", Loc::gsLoyalString, 0, 1); ExportSection(props, L"Loyal", gsLoyalString, 0, 1);
ExportSection(props, L"Underground", Loc::gsUndergroundString, 0, 1); ExportSection(props, L"Underground", gsUndergroundString, 0, 1);
ExportSection(props, L"TimeStings", Loc::gsTimeStrings, 0, 1); ExportSection(props, L"TimeStings", gsTimeStrings, 0, 1);
ExportSection(props, L"Facilities", Loc::sFacilitiesStrings, 0, 7); ExportSection(props, L"Facilities", sFacilitiesStrings, 0, 7);
ExportSection(props, L"MapPopUpInventory", Loc::pMapPopUpInventoryText, 0, 2); ExportSection(props, L"MapPopUpInventory", pMapPopUpInventoryText, 0, 2);
ExportSection(props, L"TownInfo", Loc::pwTownInfoStrings, 0, 12); ExportSection(props, L"TownInfo", pwTownInfoStrings, 0, 12);
ExportSection(props, L"Mine", Loc::pwMineStrings, 0, 14); ExportSection(props, L"Mine", pwMineStrings, 0, 14);
ExportSection(props, L"MiscSector", Loc::pwMiscSectorStrings, 0, 7); ExportSection(props, L"MiscSector", pwMiscSectorStrings, 0, 7);
ExportSection(props, L"MapInventoryError", Loc::pMapInventoryErrorString, 0, 7); ExportSection(props, L"MapInventoryError", pMapInventoryErrorString, 0, 7);
ExportSection(props, L"MapInventory", Loc::pMapInventoryStrings, 0, 2); ExportSection(props, L"MapInventory", pMapInventoryStrings, 0, 2);
ExportSection(props, L"MapScreenFastHelp", Loc::pMapScreenFastHelpTextList, 0, 10); ExportSection(props, L"MapScreenFastHelp", pMapScreenFastHelpTextList, 0, 10);
ExportSection(props, L"MovementMenu", Loc::pMovementMenuStrings, 0, 4); ExportSection(props, L"MovementMenu", pMovementMenuStrings, 0, 4);
ExportSection(props, L"UpdateMerc", Loc::pUpdateMercStrings, 0, 6); ExportSection(props, L"UpdateMerc", pUpdateMercStrings, 0, 6);
ExportSection(props, L"MapScreenBorderButtonHelp", Loc::pMapScreenBorderButtonHelpText,0, 6); ExportSection(props, L"MapScreenBorderButtonHelp", pMapScreenBorderButtonHelpText,0, 6);
ExportSection(props, L"MapScreenBottomFastHelp", Loc::pMapScreenBottomFastHelp, 0, 8); ExportSection(props, L"MapScreenBottomFastHelp", pMapScreenBottomFastHelp, 0, 8);
ExportSection(props, L"MapScreenBottom", Loc::pMapScreenBottomText, 0, 1); ExportSection(props, L"MapScreenBottom", pMapScreenBottomText, 0, 1);
ExportSection(props, L"MercDead", Loc::pMercDeadString, 0, 1); ExportSection(props, L"MercDead", pMercDeadString, 0, 1);
ExportSection(props, L"Day", Loc::pDayStrings, 0, 1); ExportSection(props, L"Day", pDayStrings, 0, 1);
ExportSection(props, L"SenderName", Loc::pSenderNameList, 0, 51); ExportSection(props, L"SenderName", pSenderNameList, 0, 51);
ExportSection(props, L"Traverse", Loc::pTraverseStrings, 0, 2); ExportSection(props, L"Traverse", pTraverseStrings, 0, 2);
ExportSection(props, L"NewMail", Loc::pNewMailStrings, 0, 1); ExportSection(props, L"NewMail", pNewMailStrings, 0, 1);
ExportSection(props, L"DeleteMail", Loc::pDeleteMailStrings, 0, 2); ExportSection(props, L"DeleteMail", pDeleteMailStrings, 0, 2);
ExportSection(props, L"EmailHeader", Loc::pEmailHeaders, 0, 3); ExportSection(props, L"EmailHeader", pEmailHeaders, 0, 3);
ExportSection(props, L"EmailTitle", Loc::pEmailTitleText, 0, 1); ExportSection(props, L"EmailTitle", pEmailTitleText, 0, 1);
ExportSection(props, L"FinanceTitle", Loc::pFinanceTitle, 0, 1); ExportSection(props, L"FinanceTitle", pFinanceTitle, 0, 1);
ExportSection(props, L"FinanceSummary", Loc::pFinanceSummary, 0, 12); ExportSection(props, L"FinanceSummary", pFinanceSummary, 0, 12);
ExportSection(props, L"FinanceHeader", Loc::pFinanceHeaders, 0, 7); ExportSection(props, L"FinanceHeader", pFinanceHeaders, 0, 7);
ExportSection(props, L"Transaction", Loc::pTransactionText, 0, TEXT_NUM_FINCANCES); ExportSection(props, L"Transaction", pTransactionText, 0, TEXT_NUM_FINCANCES);
ExportSection(props, L"TransactionAlternate", Loc::pTransactionAlternateText, 0, 4); ExportSection(props, L"TransactionAlternate", pTransactionAlternateText, 0, 4);
ExportSection(props, L"Skyrider", Loc::pSkyriderText, 0, 7); ExportSection(props, L"Skyrider", pSkyriderText, 0, 7);
ExportSection(props, L"Moral", Loc::pMoralStrings, 0, 6); ExportSection(props, L"Moral", pMoralStrings, 0, 6);
ExportSection(props, L"LeftEquipment", Loc::pLeftEquipmentString, 0, 2); ExportSection(props, L"LeftEquipment", pLeftEquipmentString, 0, 2);
ExportSection(props, L"MapScreenStatus", Loc::pMapScreenStatusStrings, 0, 5); ExportSection(props, L"MapScreenStatus", pMapScreenStatusStrings, 0, 5);
ExportSection(props, L"MapScreenPrevNextCharButtonHelp", Loc::pMapScreenPrevNextCharButtonHelpText, 0, 2); ExportSection(props, L"MapScreenPrevNextCharButtonHelp", pMapScreenPrevNextCharButtonHelpText, 0, 2);
ExportSection(props, L"Eta", Loc::pEtaString, 0, 1); ExportSection(props, L"Eta", pEtaString, 0, 1);
ExportSection(props, L"TrashItem", Loc::pTrashItemText, 0, 2); ExportSection(props, L"TrashItem", pTrashItemText, 0, 2);
ExportSection(props, L"MapError", Loc::pMapErrorString, 0, 50); ExportSection(props, L"MapError", pMapErrorString, 0, 50);
ExportSection(props, L"MapPlot", Loc::pMapPlotStrings, 0, 5); ExportSection(props, L"MapPlot", pMapPlotStrings, 0, 5);
ExportSection(props, L"Bullseye", Loc::pBullseyeStrings, 0, 5); ExportSection(props, L"Bullseye", pBullseyeStrings, 0, 5);
ExportSection(props, L"MiscMapScreenMouseRegionHelp", Loc::pMiscMapScreenMouseRegionHelpText, 0, 3); ExportSection(props, L"MiscMapScreenMouseRegionHelp", pMiscMapScreenMouseRegionHelpText, 0, 3);
ExportSection(props, L"MercHeLeave", Loc::pMercHeLeaveString, 0, 5); ExportSection(props, L"MercHeLeave", pMercHeLeaveString, 0, 5);
ExportSection(props, L"MercSheLeave", Loc::pMercSheLeaveString, 0, 5); ExportSection(props, L"MercSheLeave", pMercSheLeaveString, 0, 5);
ExportSection(props, L"MercContractOver", Loc::pMercContractOverStrings, 0, 5); ExportSection(props, L"MercContractOver", pMercContractOverStrings, 0, 5);
ExportSection(props, L"ImpPopUp", Loc::pImpPopUpStrings, 0, 12); ExportSection(props, L"ImpPopUp", pImpPopUpStrings, 0, 12);
ExportSection(props, L"ImpButton", Loc::pImpButtonText, 0, 26); ExportSection(props, L"ImpButton", pImpButtonText, 0, 26);
ExportSection(props, L"ExtraIMP", Loc::pExtraIMPStrings, 0, 4); ExportSection(props, L"ExtraIMP", pExtraIMPStrings, 0, 4);
ExportSection(props, L"FilesTitle", Loc::pFilesTitle, 0, 1); ExportSection(props, L"FilesTitle", pFilesTitle, 0, 1);
ExportSection(props, L"FilesSender", Loc::pFilesSenderList, 0, 7); ExportSection(props, L"FilesSender", pFilesSenderList, 0, 7);
ExportSection(props, L"HistoryTitle", Loc::pHistoryTitle, 0, 1); ExportSection(props, L"HistoryTitle", pHistoryTitle, 0, 1);
ExportSection(props, L"HistoryHeader", Loc::pHistoryHeaders, 0, 5); ExportSection(props, L"HistoryHeader", pHistoryHeaders, 0, 5);
//ExportSection(props, L"History", Loc::pHistoryStrings, 0, TEXT_NUM_HISTORY); //ExportSection(props, L"History", pHistoryStrings, 0, TEXT_NUM_HISTORY);
ExportSection(props, L"HistoryLocation", Loc::pHistoryLocations, 0, 1); ExportSection(props, L"HistoryLocation", pHistoryLocations, 0, 1);
ExportSection(props, L"LaptopIcon", Loc::pLaptopIcons, 0, 8); ExportSection(props, L"LaptopIcon", pLaptopIcons, 0, 8);
ExportSection(props, L"BookMark", Loc::pBookMarkStrings, 0, TEXT_NUM_LAPTOP_BOOKMARKS); ExportSection(props, L"BookMark", pBookMarkStrings, 0, TEXT_NUM_LAPTOP_BOOKMARKS);
ExportSection(props, L"BookmarkTitle", Loc::pBookmarkTitle, 0, 2); ExportSection(props, L"BookmarkTitle", pBookmarkTitle, 0, 2);
ExportSection(props, L"Download", Loc::pDownloadString, 0, 2); ExportSection(props, L"Download", pDownloadString, 0, 2);
ExportSection(props, L"AtmStartButton", Loc::gsAtmStartButtonText, 0, 4); ExportSection(props, L"AtmStartButton", gsAtmStartButtonText, 0, 4);
ExportSection(props, L"Error", Loc::pErrorStrings, 0, 5); ExportSection(props, L"Error", pErrorStrings, 0, 5);
ExportSection(props, L"Personnel", Loc::pPersonnelString, 0, 1); ExportSection(props, L"Personnel", pPersonnelString, 0, 1);
ExportSection(props, L"WebTitle", Loc::pWebTitle, 0, 1); ExportSection(props, L"WebTitle", pWebTitle, 0, 1);
ExportSection(props, L"WebPagesTitle", Loc::pWebPagesTitles, 0, 36); ExportSection(props, L"WebPagesTitle", pWebPagesTitles, 0, 36);
ExportSection(props, L"ShowBookmark", Loc::pShowBookmarkString, 0, 2); ExportSection(props, L"ShowBookmark", pShowBookmarkString, 0, 2);
ExportSection(props, L"LaptopTitle", Loc::pLaptopTitles, 0, 5); ExportSection(props, L"LaptopTitle", pLaptopTitles, 0, 5);
ExportSection(props, L"PersonnelDepartedState", Loc::pPersonnelDepartedStateStrings, 0, TEXT_NUM_DEPARTED); ExportSection(props, L"PersonnelDepartedState", pPersonnelDepartedStateStrings, 0, TEXT_NUM_DEPARTED);
ExportSection(props, L"PersonelTeam", Loc::pPersonelTeamStrings, 0, 8); ExportSection(props, L"PersonelTeam", pPersonelTeamStrings, 0, 8);
ExportSection(props, L"PersonnelCurrentTeamStats", Loc::pPersonnelCurrentTeamStatsStrings, 0, 3); ExportSection(props, L"PersonnelCurrentTeamStats", pPersonnelCurrentTeamStatsStrings, 0, 3);
ExportSection(props, L"PersonnelTeamStats", Loc::pPersonnelTeamStatsStrings, 0, 11); ExportSection(props, L"PersonnelTeamStats", pPersonnelTeamStatsStrings, 0, 11);
ExportSection(props, L"MapVertIndex", Loc::pMapVertIndex, 0, 17); ExportSection(props, L"MapVertIndex", pMapVertIndex, 0, 17);
ExportSection(props, L"MapHortIndex", Loc::pMapHortIndex, 0, 17); ExportSection(props, L"MapHortIndex", pMapHortIndex, 0, 17);
ExportSection(props, L"MapDepthIndex", Loc::pMapDepthIndex, 0, 4); ExportSection(props, L"MapDepthIndex", pMapDepthIndex, 0, 4);
ExportSection(props, L"ContractButton", Loc::pContractButtonString, 0, 1); ExportSection(props, L"ContractButton", pContractButtonString, 0, 1);
ExportSection(props, L"UpdatePanelButton", Loc::pUpdatePanelButtons, 0, 2); ExportSection(props, L"UpdatePanelButton", pUpdatePanelButtons, 0, 2);
ExportSection(props, L"LargeTactical", Loc::LargeTacticalStr, 0, TEXT_NUM_LARGESTR); ExportSection(props, L"LargeTactical", LargeTacticalStr, 0, TEXT_NUM_LARGESTR);
ExportSection(props, L"InsContract", Loc::InsContractText, 0, TEXT_NUM_INS_CONTRACT); ExportSection(props, L"InsContract", InsContractText, 0, TEXT_NUM_INS_CONTRACT);
ExportSection(props, L"InsInfo", Loc::InsInfoText, 0, TEXT_NUM_INS_INFO); ExportSection(props, L"InsInfo", InsInfoText, 0, TEXT_NUM_INS_INFO);
ExportSection(props, L"MercAccount", Loc::MercAccountText, 0, TEXT_NUM_MERC_ACCOUNT); ExportSection(props, L"MercAccount", MercAccountText, 0, TEXT_NUM_MERC_ACCOUNT);
ExportSection(props, L"MercAccountPage", Loc::MercAccountPageText, 0, 2); ExportSection(props, L"MercAccountPage", MercAccountPageText, 0, 2);
ExportSection(props, L"MercInfo", Loc::MercInfo, 0, TEXT_NUM_MERC_FILES); ExportSection(props, L"MercInfo", MercInfo, 0, TEXT_NUM_MERC_FILES);
ExportSection(props, L"MercNoAccount", Loc::MercNoAccountText, 0, TEXT_NUM_MERC_NO_ACC); ExportSection(props, L"MercNoAccount", MercNoAccountText, 0, TEXT_NUM_MERC_NO_ACC);
ExportSection(props, L"MercHomePage", Loc::MercHomePageText, 0, TEXT_NUM_MERC); ExportSection(props, L"MercHomePage", MercHomePageText, 0, TEXT_NUM_MERC);
ExportSection(props, L"Funeral", Loc::sFuneralString, 0, TEXT_NUM_FUNERAL); ExportSection(props, L"Funeral", sFuneralString, 0, TEXT_NUM_FUNERAL);
ExportSection(props, L"Florist", Loc::sFloristText, 0, TEXT_NUM_FLORIST); ExportSection(props, L"Florist", sFloristText, 0, TEXT_NUM_FLORIST);
ExportSection(props, L"OrderForm", Loc::sOrderFormText, 0, TEXT_NUM_FLORIST_ORDER); ExportSection(props, L"OrderForm", sOrderFormText, 0, TEXT_NUM_FLORIST_ORDER);
ExportSection(props, L"FloristGallery", Loc::sFloristGalleryText, 0, TEXT_NUM_FLORIST_GALLERY); ExportSection(props, L"FloristGallery", sFloristGalleryText, 0, TEXT_NUM_FLORIST_GALLERY);
ExportSection(props, L"FloristCards", Loc::sFloristCards, 0, TEXT_NUM_FLORIST_CARDS); ExportSection(props, L"FloristCards", sFloristCards, 0, TEXT_NUM_FLORIST_CARDS);
ExportSection(props, L"BobbyROrderForm", Loc::BobbyROrderFormText, 0, TEXT_NUM_BOBBYR_MAILORDER); ExportSection(props, L"BobbyROrderForm", BobbyROrderFormText, 0, TEXT_NUM_BOBBYR_MAILORDER);
ExportSection(props, L"BobbyRFilter", Loc::BobbyRFilter, 0, TEXT_NUM_BOBBYR_FILTER); ExportSection(props, L"BobbyRFilter", BobbyRFilter, 0, TEXT_NUM_BOBBYR_FILTER);
ExportSection(props, L"BobbyR", Loc::BobbyRText, 0, TEXT_NUM_BOBBYR_GUNS); ExportSection(props, L"BobbyR", BobbyRText, 0, TEXT_NUM_BOBBYR_GUNS);
ExportSection(props, L"BobbyRaysFront", Loc::BobbyRaysFrontText, 0, TEXT_NUM_BOBBYR); ExportSection(props, L"BobbyRaysFront", BobbyRaysFrontText, 0, TEXT_NUM_BOBBYR);
ExportSection(props, L"AimSort", Loc::AimSortText, 0, TEXT_NUM_AIM_SORT); ExportSection(props, L"AimSort", AimSortText, 0, TEXT_NUM_AIM_SORT);
ExportSection(props, L"AimPolicy", Loc::AimPolicyText, 0, TEXT_NUM_AIM_POLICIES); ExportSection(props, L"AimPolicy", AimPolicyText, 0, TEXT_NUM_AIM_POLICIES);
ExportSection(props, L"AimMember", Loc::AimMemberText, 0, 4); ExportSection(props, L"AimMember", AimMemberText, 0, 4);
ExportSection(props, L"CharacterInfo", Loc::CharacterInfo, 0, TEXT_NUM_AIM_MEMBER_CHARINFO); ExportSection(props, L"CharacterInfo", CharacterInfo, 0, TEXT_NUM_AIM_MEMBER_CHARINFO);
ExportSection(props, L"VideoConfercing", Loc::VideoConfercingText, 0, TEXT_NUM_AIM_MEMBER_VCONF); ExportSection(props, L"VideoConfercing", VideoConfercingText, 0, TEXT_NUM_AIM_MEMBER_VCONF);
ExportSection(props, L"AimPopUp", Loc::AimPopUpText, 0, TEXT_NUM_AIM_MEMBER_POPUP); ExportSection(props, L"AimPopUp", AimPopUpText, 0, TEXT_NUM_AIM_MEMBER_POPUP);
ExportSection(props, L"AimLink", Loc::AimLinkText, 0, TEXM_NUM_AIM_LINK); ExportSection(props, L"AimLink", AimLinkText, 0, TEXM_NUM_AIM_LINK);
ExportSection(props, L"AimHistory", Loc::AimHistoryText, 0, TEXT_NUM_AIM_HISTORY); ExportSection(props, L"AimHistory", AimHistoryText, 0, TEXT_NUM_AIM_HISTORY);
ExportSection(props, L"AimFi", Loc::AimFiText, 0, TEXT_NUM_AIM_FI); ExportSection(props, L"AimFi", AimFiText, 0, TEXT_NUM_AIM_FI);
ExportSection(props, L"AimAlumni", Loc::AimAlumniText, 0, TEXT_NUM_AIM_ALUMNI); ExportSection(props, L"AimAlumni", AimAlumniText, 0, TEXT_NUM_AIM_ALUMNI);
ExportSection(props, L"AimScreen", Loc::AimScreenText, 0, TEXT_NUM_AIM_SCREEN); ExportSection(props, L"AimScreen", AimScreenText, 0, TEXT_NUM_AIM_SCREEN);
ExportSection(props, L"AimBottomMenu", Loc::AimBottomMenuText, 0, TEXT_NUM_AIM_MENU); ExportSection(props, L"AimBottomMenu", AimBottomMenuText, 0, TEXT_NUM_AIM_MENU);
ExportSection(props, L"SKI", Loc::SKI_Text, 0, TEXT_NUM_SKI_TEXT); ExportSection(props, L"SKI", SKI_Text, 0, TEXT_NUM_SKI_TEXT);
ExportSection(props, L"SkiAtm", Loc::SkiAtmText, 0, NUM_SKI_ATM_BUTTONS); ExportSection(props, L"SkiAtm", SkiAtmText, 0, NUM_SKI_ATM_BUTTONS);
ExportSection(props, L"SkiAtmText", Loc::gzSkiAtmText, 0, TEXT_NUM_SKI_ATM_MODE_TEXT); ExportSection(props, L"SkiAtmText", gzSkiAtmText, 0, TEXT_NUM_SKI_ATM_MODE_TEXT);
ExportSection(props, L"SkiMessageBox", Loc::SkiMessageBoxText, 0, TEXT_NUM_SKI_MBOX_TEXT); ExportSection(props, L"SkiMessageBox", SkiMessageBoxText, 0, TEXT_NUM_SKI_MBOX_TEXT);
ExportSection(props, L"Options", Loc::zOptionsText, 0, TEXT_NUM_OPT_TEXT); ExportSection(props, L"Options", zOptionsText, 0, TEXT_NUM_OPT_TEXT);
ExportSection(props, L"SaveLoad", Loc::zSaveLoadText, 0, TEXT_NUM_SLG_TEXT); ExportSection(props, L"SaveLoad", zSaveLoadText, 0, TEXT_NUM_SLG_TEXT);
ExportSection(props, L"MarksMapScreen", Loc::zMarksMapScreenText, 0, 25); ExportSection(props, L"MarksMapScreen", zMarksMapScreenText, 0, 25);
ExportSection(props, L"LandMarkInSector", Loc::pLandMarkInSectorString, 0, 1); ExportSection(props, L"LandMarkInSector", pLandMarkInSectorString, 0, 1);
ExportSection(props, L"MilitiaConfirm", Loc::pMilitiaConfirmStrings, 0, 11); ExportSection(props, L"MilitiaConfirm", pMilitiaConfirmStrings, 0, 11);
ExportSection(props, L"MoneyWithdrawMessage", Loc::gzMoneyWithdrawMessageText, 0, TEXT_NUM_MONEY_WITHDRAW); ExportSection(props, L"MoneyWithdrawMessage", gzMoneyWithdrawMessageText, 0, TEXT_NUM_MONEY_WITHDRAW);
ExportSection(props, L"Copyright", Loc::gzCopyrightText, 0, 1); ExportSection(props, L"Copyright", gzCopyrightText, 0, 1);
ExportSection(props, L"OptionsToggle", Loc::zOptionsToggleText, 0, 49); ExportSection(props, L"OptionsToggle", zOptionsToggleText, 0, 49);
ExportSection(props, L"OptionsScreenHelp", Loc::zOptionsScreenHelpText, 0, 49); ExportSection(props, L"OptionsScreenHelp", zOptionsScreenHelpText, 0, 49);
ExportSection(props, L"GIOScreen", Loc::gzGIOScreenText, 0, TEXT_NUM_GIO_TEXT); ExportSection(props, L"GIOScreen", gzGIOScreenText, 0, TEXT_NUM_GIO_TEXT);
ExportSection(props, L"MPJScreen", Loc::gzMPJScreenText, 0, TEXT_NUM_MPJ_TEXT); ExportSection(props, L"MPJScreen", gzMPJScreenText, 0, TEXT_NUM_MPJ_TEXT);
ExportSection(props, L"MPJHelpText", Loc::gzMPJHelpText, 0, 10); ExportSection(props, L"MPJHelpText", gzMPJHelpText, 0, 10);
ExportSection(props, L"MPHScreen", Loc::gzMPHScreenText, 0, TEXT_NUM_MPH_TEXT); ExportSection(props, L"MPHScreen", gzMPHScreenText, 0, TEXT_NUM_MPH_TEXT);
ExportSection(props, L"DeliveryLocation", Loc::pDeliveryLocationStrings, 0, 17); ExportSection(props, L"DeliveryLocation", pDeliveryLocationStrings, 0, 17);
ExportSection(props, L"SkillAtZeroWarning", Loc::pSkillAtZeroWarning, 0, 1); ExportSection(props, L"SkillAtZeroWarning", pSkillAtZeroWarning, 0, 1);
ExportSection(props, L"IMPBeginScreen", Loc::pIMPBeginScreenStrings, 0, 1); ExportSection(props, L"IMPBeginScreen", pIMPBeginScreenStrings, 0, 1);
ExportSection(props, L"IMPFinishButton", Loc::pIMPFinishButtonText, 0, 1); ExportSection(props, L"IMPFinishButton", pIMPFinishButtonText, 0, 1);
ExportSection(props, L"IMPFinish", Loc::pIMPFinishStrings, 0, 1); ExportSection(props, L"IMPFinish", pIMPFinishStrings, 0, 1);
ExportSection(props, L"IMPVoices", Loc::pIMPVoicesStrings, 0, 1); ExportSection(props, L"IMPVoices", pIMPVoicesStrings, 0, 1);
ExportSection(props, L"DepartedMercPortrait", Loc::pDepartedMercPortraitStrings, 0, 3); ExportSection(props, L"DepartedMercPortrait", pDepartedMercPortraitStrings, 0, 3);
ExportSection(props, L"PersTitle", Loc::pPersTitleText, 0, 1); ExportSection(props, L"PersTitle", pPersTitleText, 0, 1);
ExportSection(props, L"PausedGame", Loc::pPausedGameText, 0, 3); ExportSection(props, L"PausedGame", pPausedGameText, 0, 3);
ExportSection(props, L"MessageStrings", Loc::pMessageStrings, 0, TEXT_NUM_MSG); ExportSection(props, L"MessageStrings", pMessageStrings, 0, TEXT_NUM_MSG);
ExportSection(props, L"ItemPickupHelpPopup", Loc::ItemPickupHelpPopup, 0, 5); ExportSection(props, L"ItemPickupHelpPopup", ItemPickupHelpPopup, 0, 5);
ExportSection(props, L"DoctorWarning", Loc::pDoctorWarningString, 0, 2); ExportSection(props, L"DoctorWarning", pDoctorWarningString, 0, 2);
ExportSection(props, L"MilitiaButtonsHelp", Loc::pMilitiaButtonsHelpText, 0, 4); ExportSection(props, L"MilitiaButtonsHelp", pMilitiaButtonsHelpText, 0, 4);
ExportSection(props, L"MapScreenJustStartedHelp", Loc::pMapScreenJustStartedHelpText, 0, 2); ExportSection(props, L"MapScreenJustStartedHelp", pMapScreenJustStartedHelpText, 0, 2);
ExportSection(props, L"AntiHacker", Loc::pAntiHackerString, 0, TEXT_NUM_ANTIHACKERSTR); ExportSection(props, L"AntiHacker", pAntiHackerString, 0, TEXT_NUM_ANTIHACKERSTR);
ExportSection(props, L"LaptopHelp", Loc::gzLaptopHelpText, 0, TEXT_NUM_LAPTOP_BN_BOOKMARK_TEXT); ExportSection(props, L"LaptopHelp", gzLaptopHelpText, 0, TEXT_NUM_LAPTOP_BN_BOOKMARK_TEXT);
ExportSection(props, L"HelpScreen", Loc::gzHelpScreenText, 0, TEXT_NUM_HLP); ExportSection(props, L"HelpScreen", gzHelpScreenText, 0, TEXT_NUM_HLP);
ExportSection(props, L"NonPersistantPBI", Loc::gzNonPersistantPBIText, 0, 10); ExportSection(props, L"NonPersistantPBI", gzNonPersistantPBIText, 0, 10);
ExportSection(props, L"MiscString", Loc::gzMiscString, 0, 5); ExportSection(props, L"MiscString", gzMiscString, 0, 5);
ExportSection(props, L"IntroScreen", Loc::gzIntroScreen, 0, 1); ExportSection(props, L"IntroScreen", gzIntroScreen, 0, 1);
ExportSection(props, L"NewNoise", Loc::pNewNoiseStr, 0, 11/*MAX_NOISES*/); ExportSection(props, L"NewNoise", pNewNoiseStr, 0, 11/*MAX_NOISES*/);
ExportSection(props, L"MapScreenSortButtonHelp", Loc::wMapScreenSortButtonHelpText, 0, 6); ExportSection(props, L"MapScreenSortButtonHelp", wMapScreenSortButtonHelpText, 0, 6);
ExportSection(props, L"BrokenLink", Loc::BrokenLinkText, 0, TEXT_NUM_BROKEN_LINK); ExportSection(props, L"BrokenLink", BrokenLinkText, 0, TEXT_NUM_BROKEN_LINK);
ExportSection(props, L"BobbyRShipment", Loc::gzBobbyRShipmentText, 0, TEXT_NUM_BOBBYR_SHIPMENT); ExportSection(props, L"BobbyRShipment", gzBobbyRShipmentText, 0, TEXT_NUM_BOBBYR_SHIPMENT);
ExportSection(props, L"CreditNames", Loc::gzCreditNames, 0, 15); ExportSection(props, L"CreditNames", gzCreditNames, 0, 15);
ExportSection(props, L"CreditNameTitle", Loc::gzCreditNameTitle, 0, 15); ExportSection(props, L"CreditNameTitle", gzCreditNameTitle, 0, 15);
ExportSection(props, L"CreditNameFunny", Loc::gzCreditNameFunny, 0, 15); ExportSection(props, L"CreditNameFunny", gzCreditNameFunny, 0, 15);
ExportSection(props, L"RepairsDone", Loc::sRepairsDoneString, 0, 7); ExportSection(props, L"RepairsDone", sRepairsDoneString, 0, 7);
ExportSection(props, L"GioDifConfirm", Loc::zGioDifConfirmText, 0, TEXT_NUM_GIO_CFS); ExportSection(props, L"GioDifConfirm", zGioDifConfirmText, 0, TEXT_NUM_GIO_CFS);
ExportSection(props, L"LateLocalized", Loc::gzLateLocalizedString, 0, 64); ExportSection(props, L"LateLocalized", gzLateLocalizedString, 0, 64);
ExportSection(props, L"CWStrings", Loc::gzCWStrings, 0, 1); ExportSection(props, L"CWStrings", gzCWStrings, 0, 1);
ExportSection(props, L"TooltipStrings", Loc::gzTooltipStrings, 0, TEXT_NUM_STR_TT); ExportSection(props, L"TooltipStrings", gzTooltipStrings, 0, TEXT_NUM_STR_TT);
ExportSection(props, L"New113Message", Loc::New113Message, 0, TEXT_NUM_MSG113); ExportSection(props, L"New113Message", New113Message, 0, TEXT_NUM_MSG113);
ExportSection(props, L"New113HAMMessage", Loc::New113HAMMessage, 0, 25); ExportSection(props, L"New113HAMMessage", New113HAMMessage, 0, 25);
ExportSection(props, L"New113MERCMercMail", Loc::New113MERCMercMailTexts, 0, 4); ExportSection(props, L"New113MERCMercMail", New113MERCMercMailTexts, 0, 4);
ExportSection(props, L"New113AIMMercMail", Loc::New113AIMMercMailTexts, 0, 16); ExportSection(props, L"New113AIMMercMail", New113AIMMercMailTexts, 0, 16);
ExportSection(props, L"MissingIMPSkills", Loc::MissingIMPSkillsDescriptions, 0, 2); ExportSection(props, L"MissingIMPSkills", MissingIMPSkillsDescriptions, 0, 2);
ExportSection(props, L"NewInvMessage", Loc::NewInvMessage, 0, TEXT_NUM_NIV); ExportSection(props, L"NewInvMessage", NewInvMessage, 0, TEXT_NUM_NIV);
ExportSection(props, L"MPServerMessage", Loc::MPServerMessage, 0, 13); ExportSection(props, L"MPServerMessage", MPServerMessage, 0, 13);
ExportSection(props, L"MPClientMessage", Loc::MPClientMessage, 0, 69); ExportSection(props, L"MPClientMessage", MPClientMessage, 0, 69);
ExportSection(props, L"MPEdges", Loc::gszMPEdgesText, 0, 5); ExportSection(props, L"MPEdges", gszMPEdgesText, 0, 5);
ExportSection(props, L"MPTeamName", Loc::gszMPTeamNames, 0, 5); ExportSection(props, L"MPTeamName", gszMPTeamNames, 0, 5);
ExportSection(props, L"MPMapscreen", Loc::gszMPMapscreenText, 0, 9); ExportSection(props, L"MPMapscreen", gszMPMapscreenText, 0, 9);
ExportSection(props, L"MPSScreen", Loc::gzMPSScreenText, 0, TEXT_NUM_MPS_TEXT); ExportSection(props, L"MPSScreen", gzMPSScreenText, 0, TEXT_NUM_MPS_TEXT);
ExportSection(props, L"MPCScreen", Loc::gzMPCScreenText, 0, TEXT_NUM_MPC_TEXT); ExportSection(props, L"MPCScreen", gzMPCScreenText, 0, TEXT_NUM_MPC_TEXT);
ExportSection(props, L"MPChatToggle", Loc::gzMPChatToggleText, 0, 2); ExportSection(props, L"MPChatToggle", gzMPChatToggleText, 0, 2);
ExportSection(props, L"MPChatbox", Loc::gzMPChatboxText, 0, 2); ExportSection(props, L"MPChatbox", gzMPChatboxText, 0, 2);
props.writeToXMLFile(L"Localization/GameStrings.xml",tmap); props.writeToXMLFile(L"Localization/GameStrings.xml",tmap);
props.writeToIniFile(L"Localization/GameStrings.ini",true); props.writeToIniFile(L"Localization/GameStrings.ini",true);
@@ -524,7 +521,7 @@ namespace Loc
void Loc::ExportMercBio() void Loc::ExportMercBio()
{ {
Loc::Language lang = gs_Lang; Loc::Language lang = ToLocLanguage(g_lang);
#define SIZE_MERC_BIO_INFO 400 * 2 #define SIZE_MERC_BIO_INFO 400 * 2
#define SIZE_MERC_ADDITIONAL_INFO 160 * 2 #define SIZE_MERC_ADDITIONAL_INFO 160 * 2
@@ -554,7 +551,7 @@ void Loc::ExportMercBio()
void Loc::ExportAIMHistory() void Loc::ExportAIMHistory()
{ {
Loc::Language lang = gs_Lang; Loc::Language lang = ToLocLanguage(g_lang);
#define AIM_HISTORY_LINE_SIZE 400 * 2 #define AIM_HISTORY_LINE_SIZE 400 * 2
vfs::String::char_t pHistLine[AIM_HISTORY_LINE_SIZE]; vfs::String::char_t pHistLine[AIM_HISTORY_LINE_SIZE];
vfs::COpenReadFile rfile("BINARYDATA\\AimHist.edt"); vfs::COpenReadFile rfile("BINARYDATA\\AimHist.edt");
@@ -576,7 +573,7 @@ void Loc::ExportAIMHistory()
void Loc::ExportAIMPolicy() void Loc::ExportAIMPolicy()
{ {
Loc::Language lang = gs_Lang; Loc::Language lang = ToLocLanguage(g_lang);
#define AIM_HISTORY_LINE_SIZE 400 * 2 #define AIM_HISTORY_LINE_SIZE 400 * 2
vfs::String::char_t pPolLine[AIM_HISTORY_LINE_SIZE]; vfs::String::char_t pPolLine[AIM_HISTORY_LINE_SIZE];
vfs::COpenReadFile rfile("BINARYDATA\\AimPol.edt"); vfs::COpenReadFile rfile("BINARYDATA\\AimPol.edt");
@@ -597,7 +594,7 @@ void Loc::ExportAIMPolicy()
void Loc::ExportAlumniName() void Loc::ExportAlumniName()
{ {
Loc::Language lang = gs_Lang; Loc::Language lang = ToLocLanguage(g_lang);
#define AIM_ALUMNI_NAME_SIZE 80 * 2 #define AIM_ALUMNI_NAME_SIZE 80 * 2
vfs::String::char_t pAlumniName[AIM_ALUMNI_NAME_SIZE]; vfs::String::char_t pAlumniName[AIM_ALUMNI_NAME_SIZE];
vfs::COpenReadFile rfile("BINARYDATA\\AlumName.edt"); vfs::COpenReadFile rfile("BINARYDATA\\AlumName.edt");
@@ -620,7 +617,7 @@ void Loc::ExportAlumniName()
void Loc::ExportDialogues() void Loc::ExportDialogues()
{ {
Loc::Language lang = gs_Lang; Loc::Language lang = ToLocLanguage(g_lang);
#define DIALOGUESIZE 480 #define DIALOGUESIZE 480
vfs::String::char_t pDiagLine[DIALOGUESIZE]; vfs::String::char_t pDiagLine[DIALOGUESIZE];
@@ -658,7 +655,7 @@ void Loc::ExportDialogues()
void Loc::ExportNPCDialogues() void Loc::ExportNPCDialogues()
{ {
Loc::Language lang = gs_Lang; Loc::Language lang = ToLocLanguage(g_lang);
#define DIALOGUESIZE 480 #define DIALOGUESIZE 480
#define CIVQUOTESIZE 320 #define CIVQUOTESIZE 320
vfs::String::char_t pDiagLine[DIALOGUESIZE]; vfs::String::char_t pDiagLine[DIALOGUESIZE];
+140
View File
@@ -0,0 +1,140 @@
// All eight languages' string tables in one translation unit (docs/plans/
// language-design.md): each base + Ja2.5-carryover text file is included inside its
// own per-language namespace, the game-facing table symbols are the pointer globals
// below (statically bound to the build default), and BindLanguageStrings rebinds all
// of them to the language resolved at startup from the LANGUAGE ini key.
#include "Text.h"
#include "FileMan.h"
#include "Scheduling.h"
#include "EditorMercs.h"
#include "Item Statistics.h"
#include <language.hpp>
#include <type_traits>
// Recipe R1 (docs/plans/language-design.md): the loose _<LANG>Text.cpp files are still
// compiled standalone until Cn+2, and #include the headers declaring the now-pointer
// externs themselves; this guard keeps their array definitions out of those standalone
// TUs (which would collide with the pointer extern) while still compiling them here.
namespace lang_en {
#include "_EnglishText.cpp"
#include "_Ja25EnglishText.cpp"
}
namespace lang_de {
#include "_GermanText.cpp"
#include "_Ja25GermanText.cpp"
}
namespace lang_ru {
#include "_RussianText.cpp"
#include "_Ja25RussianText.cpp"
}
namespace lang_nl {
#include "_DutchText.cpp"
#include "_Ja25DutchText.cpp"
}
namespace lang_pl {
#include "_PolishText.cpp"
#include "_Ja25PolishText.cpp"
}
namespace lang_fr {
#include "_FrenchText.cpp"
#include "_Ja25FrenchText.cpp"
}
namespace lang_it {
#include "_ItalianText.cpp"
#include "_Ja25ItalianText.cpp"
}
namespace lang_zh {
#include "_ChineseText.cpp"
#include "_Ja25ChineseText.cpp"
}
namespace lang_default = lang_en;
// definitions (default language)
#define X(NAME) \
std::decay_t<decltype(lang_default::NAME)> NAME = lang_default::NAME;
#include "text.def"
#undef X
namespace {
auto bind_en() -> void {
#define X(NAME) NAME = lang_en::NAME;
#include "text.def"
#undef X
}
auto bind_de() -> void {
#define X(NAME) NAME = lang_de::NAME;
#include "text.def"
#undef X
}
auto bind_ru() -> void {
#define X(NAME) NAME = lang_ru::NAME;
#include "text.def"
#undef X
}
auto bind_nl() -> void {
#define X(NAME) NAME = lang_nl::NAME;
#include "text.def"
#undef X
}
auto bind_pl() -> void {
#define X(NAME) NAME = lang_pl::NAME;
#include "text.def"
#undef X
}
auto bind_fr() -> void {
#define X(NAME) NAME = lang_fr::NAME;
#include "text.def"
#undef X
}
auto bind_it() -> void {
#define X(NAME) NAME = lang_it::NAME;
#include "text.def"
#undef X
}
auto bind_zh() -> void {
#define X(NAME) NAME = lang_zh::NAME;
#include "text.def"
#undef X
}
} // namespace
auto BindLanguageStrings(i18n::Lang lang) -> void {
switch (lang) {
case i18n::Lang::en:
bind_en();
break;
case i18n::Lang::de:
bind_de();
break;
case i18n::Lang::ru:
bind_ru();
break;
case i18n::Lang::nl:
bind_nl();
break;
case i18n::Lang::pl:
bind_pl();
break;
case i18n::Lang::fr:
bind_fr();
break;
case i18n::Lang::it:
bind_it();
break;
case i18n::Lang::zh:
bind_zh();
break;
}
}
+1 -23
View File
@@ -1,20 +1,4 @@
// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! /*
//#pragma setlocale("CHINESE")
#if defined( CHINESE )
#include "Text.h"
#include "FileMan.h"
#include "Scheduling.h"
#include "EditorMercs.h"
#include "Item Statistics.h"
#endif
//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible
void this_is_the_ChineseText_public_symbol(void){;}
#if defined( CHINESE )
/*
****************************************************************************************************** ******************************************************************************************************
** IMPORTANT TRANSLATION NOTES ** ** IMPORTANT TRANSLATION NOTES **
@@ -110,10 +94,6 @@ FAST HELP TEXT -- Explains how the syntax of fast help text works.
*/ */
CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] =
{
L"",
};
//Encyclopedia //Encyclopedia
@@ -12297,5 +12277,3 @@ STR16 szRobotText[] =
L"机器人的额外装甲破坏了!", //L"The robot's extra armour plating was destroyed!", L"机器人的额外装甲破坏了!", //L"The robot's extra armour plating was destroyed!",
L"机器人附加%s技能效果。", //L"The robot gains the benefit of the %s skill trait.", L"机器人附加%s技能效果。", //L"The robot gains the benefit of the %s skill trait.",
}; };
#endif //CHINESE
+1 -25
View File
@@ -1,22 +1,4 @@
// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! /*
//#pragma setlocale("DUTCH")
#if defined( DUTCH )
#include "Text.h"
#include "FileMan.h"
#include "Scheduling.h"
#include "EditorMercs.h"
#include "Item Statistics.h"
#endif
//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible
void this_is_the_DutchText_public_symbol(void){;}
#ifdef DUTCH
/*
****************************************************************************************************** ******************************************************************************************************
** IMPORTANT TRANSLATION NOTES ** ** IMPORTANT TRANSLATION NOTES **
@@ -112,10 +94,6 @@ FAST HELP TEXT -- Explains how the syntax of fast help text works.
*/ */
CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] =
{
L"",
};
//Encyclopedia //Encyclopedia
STR16 pMenuStrings[] = STR16 pMenuStrings[] =
@@ -12307,5 +12285,3 @@ STR16 szRobotText[] = // TODO: Translate
L"The robot's extra armour plating was destroyed!", L"The robot's extra armour plating was destroyed!",
L"The robot gains the benefit of the %s skill trait.", L"The robot gains the benefit of the %s skill trait.",
}; };
#endif //DUTCH
+1 -24
View File
@@ -1,20 +1,4 @@
// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! /*
//#pragma setlocale("ENGLISH")
#if defined( ENGLISH )
#include "Text.h"
#include "FileMan.h"
#include "Scheduling.h"
#include "EditorMercs.h"
#include "Item Statistics.h"
#endif
//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible
void this_is_the_EnglishText_public_symbol(void);
#if defined( ENGLISH )
/*
****************************************************************************************************** ******************************************************************************************************
** IMPORTANT TRANSLATION NOTES ** ** IMPORTANT TRANSLATION NOTES **
@@ -110,11 +94,6 @@ FAST HELP TEXT -- Explains how the syntax of fast help text works.
*/ */
CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] =
{
L"",
};
//Encyclopedia //Encyclopedia
STR16 pMenuStrings[] = STR16 pMenuStrings[] =
@@ -12297,5 +12276,3 @@ STR16 szRobotText[] =
L"The robot's extra armour plating was destroyed!", L"The robot's extra armour plating was destroyed!",
L"The robot gains the benefit of the %s skill trait.", L"The robot gains the benefit of the %s skill trait.",
}; };
#endif //ENGLISH
+1 -23
View File
@@ -1,20 +1,4 @@
// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! /*
//#pragma setlocale("FRENCH")
#ifdef FRENCH
#include "Text.h"
#include "FileMan.h"
#include "Scheduling.h"
#include "EditorMercs.h"
#include "Item Statistics.h"
#endif
//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible
void this_is_the_FrenchText_public_symbol(void){;}
#ifdef FRENCH
/*
****************************************************************************************************** ******************************************************************************************************
** IMPORTANT TRANSLATION NOTES ** ** IMPORTANT TRANSLATION NOTES **
@@ -115,10 +99,6 @@ FAST HELP TEXT -- Explains how the syntax of fast help text works.
*/ */
CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] =
{
L"",
};
//Encyclopedia //Encyclopedia
@@ -12289,5 +12269,3 @@ STR16 szRobotText[] = // TODO: Translate
L"The robot's extra armour plating was destroyed!", L"The robot's extra armour plating was destroyed!",
L"The robot gains the benefit of the %s skill trait.", L"The robot gains the benefit of the %s skill trait.",
}; };
#endif //FRENCH
+1 -24
View File
@@ -1,21 +1,4 @@
// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! /*
//#pragma setlocale("GERMAN")
#ifdef GERMAN
#include "Text.h"
#include "FileMan.h"
#include "Scheduling.h"
#include "EditorMercs.h"
#include "Item Statistics.h"
#endif
//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible
void this_is_the_GermanText_public_symbol(void){;}
#ifdef GERMAN
/*
****************************************************************************************************** ******************************************************************************************************
** IMPORTANT TRANSLATION NOTES ** ** IMPORTANT TRANSLATION NOTES **
****************************************************************************************************** ******************************************************************************************************
@@ -134,10 +117,6 @@ Remove any LOOTF comment that has been checked, except maybe for "alt." (alterna
07/2010 LootFragg 07/2010 LootFragg
*/ */
CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] =
{
L"",
};
//Encyclopedia //Encyclopedia
@@ -12212,5 +12191,3 @@ STR16 szRobotText[] = // TODO: Translate
L"The robot's extra armour plating was destroyed!", L"The robot's extra armour plating was destroyed!",
L"The robot gains the benefit of the %s skill trait.", L"The robot gains the benefit of the %s skill trait.",
}; };
#endif //GERMAN
+1 -23
View File
@@ -1,20 +1,4 @@
// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! /*
//#pragma setlocale("ITALIAN")
#if defined( ITALIAN )
#include "Text.h"
#include "FileMan.h"
#include "Scheduling.h"
#include "EditorMercs.h"
#include "Item Statistics.h"
#endif
//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible
void this_is_the_ItalianText_public_symbol(void){;}
#ifdef ITALIAN
/*
****************************************************************************************************** ******************************************************************************************************
** IMPORTANT TRANSLATION NOTES ** ** IMPORTANT TRANSLATION NOTES **
@@ -110,10 +94,6 @@ FAST HELP TEXT -- Explains how the syntax of fast help text works.
*/ */
CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] =
{
L"",
};
//Encyclopedia //Encyclopedia
STR16 pMenuStrings[] = STR16 pMenuStrings[] =
@@ -12298,5 +12278,3 @@ STR16 szRobotText[] = // TODO: Translate
L"The robot's extra armour plating was destroyed!", L"The robot's extra armour plating was destroyed!",
L"The robot gains the benefit of the %s skill trait.", L"The robot gains the benefit of the %s skill trait.",
}; };
#endif //ITALIAN
+1 -16
View File
@@ -1,17 +1,4 @@
// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! // VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
//#pragma setlocale("CHINESE")
#ifdef CHINESE
#include "Text.h"
#include "FileMan.h"
#endif
//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible
void this_is_the_Ja25ChineseText_public_symbol(void){;}
#ifdef CHINESE
// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// SANDRO - New STOMP laptop strings // SANDRO - New STOMP laptop strings
@@ -524,5 +511,3 @@ STR16 gzDisplayCoverText[]=
L"隐蔽难度", //L"Stealth difficulty", L"隐蔽难度", //L"Stealth difficulty",
L"陷阱等级", //L"Trap level", L"陷阱等级", //L"Trap level",
}; };
#endif
+1 -17
View File
@@ -1,17 +1,4 @@
// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! // VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
//#pragma setlocale("DUTCH")
#ifdef DUTCH
#include "Text.h"
#include "FileMan.h"
#endif
//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible
void this_is_the_Ja25DutchText_public_symbol(void){;}
#ifdef DUTCH
// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// SANDRO - New STOMP laptop strings // SANDRO - New STOMP laptop strings
@@ -525,6 +512,3 @@ STR16 gzDisplayCoverText[]=
L"Stealth difficulty", L"Stealth difficulty",
L"Trap level", L"Trap level",
}; };
#endif
+1 -16
View File
@@ -1,17 +1,4 @@
// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! // VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
//#pragma setlocale("ENGLISH")
#ifdef ENGLISH
#include "Text.h"
#include "FileMan.h"
#endif
//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible
void this_is_the_Ja25EnglishText_public_symbol(void);
#ifdef ENGLISH
// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// SANDRO - New STOMP laptop strings // SANDRO - New STOMP laptop strings
@@ -524,5 +511,3 @@ STR16 gzDisplayCoverText[]=
L"Stealth difficulty", L"Stealth difficulty",
L"Trap level", L"Trap level",
}; };
#endif
+1 -17
View File
@@ -1,17 +1,4 @@
// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! // VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
//#pragma setlocale("FRENCH")
#ifdef FRENCH
#include "Text.h"
#include "FileMan.h"
#endif
//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible
void this_is_the_Ja25FrenchText_public_symbol(void){;}
#ifdef FRENCH
// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -525,6 +512,3 @@ STR16 gzDisplayCoverText[]=
L"Stealth difficulty", L"Stealth difficulty",
L"Trap level", L"Trap level",
}; };
#endif
+1 -17
View File
@@ -1,17 +1,4 @@
// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! // VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
//#pragma setlocale("GERMAN")
#ifdef GERMAN
#include "Text.h"
#include "FileMan.h"
#endif
//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible
void this_is_the_Ja25GermanText_public_symbol(void){;}
#ifdef GERMAN
// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
//these strings match up with the defines in IMP Skill trait.cpp //these strings match up with the defines in IMP Skill trait.cpp
STR16 gzIMPSkillTraitsText[]= STR16 gzIMPSkillTraitsText[]=
@@ -526,6 +513,3 @@ STR16 gzDisplayCoverText[]=
L"Stealth difficulty", L"Stealth difficulty",
L"Trap level", L"Trap level",
}; };
#endif
+1 -17
View File
@@ -1,17 +1,4 @@
// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! // VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
//#pragma setlocale("ITALIAN")
#ifdef ITALIAN
#include "Text.h"
#include "FileMan.h"
#endif
//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible
void this_is_the_Ja25ItalianText_public_symbol(void){;}
#ifdef ITALIAN
// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// SANDRO - New STOMP laptop strings // SANDRO - New STOMP laptop strings
@@ -523,6 +510,3 @@ STR16 gzDisplayCoverText[]=
L"Stealth difficulty", L"Stealth difficulty",
L"Trap level", L"Trap level",
}; };
#endif
+1 -18
View File
@@ -1,18 +1,4 @@
// WANNE: This pragma should not be needed anymore for Polish version, after we set the encoding to UTF8 // VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
// WANNE: Yes we need this here exclusivly in Polish version, because we do not have a codepage in the code like for other versions.
//#pragma setlocale("POLISH")
#ifdef POLISH
#include "Text.h"
#include "FileMan.h"
#endif
//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible
void this_is_the_Ja25PolishText_public_symbol(void){;}
#ifdef POLISH
// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// SANDRO - New STOMP laptop strings // SANDRO - New STOMP laptop strings
@@ -525,6 +511,3 @@ STR16 gzDisplayCoverText[]=
L"Stealth difficulty", L"Stealth difficulty",
L"Trap level", L"Trap level",
}; };
#endif
+1 -16
View File
@@ -1,17 +1,4 @@
// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! // VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
//#pragma setlocale("RUSSIAN")
#ifdef RUSSIAN
#include "Text.h"
#include "FileMan.h"
#endif
//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible
void this_is_the_Ja25RussianText_public_symbol(void){;}
#ifdef RUSSIAN
// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// SANDRO - New STOMP laptop strings // SANDRO - New STOMP laptop strings
@@ -524,5 +511,3 @@ STR16 gzDisplayCoverText[]=
L"Сложность остаться незаметным", //Stealth difficulty L"Сложность остаться незаметным", //Stealth difficulty
L"Уровень ловушки", L"Уровень ловушки",
}; };
#endif
+1 -24
View File
@@ -1,21 +1,4 @@
// WANNE: This pragma should not be needed anymore for Polish version, after we set the encoding to UTF8 /*
// WANNE: Yes we need this here exclusivly in Polish version, because we do not have a codepage in the code like for other versions.
//#pragma setlocale("POLISH")
#if defined( POLISH )
#include "Text.h"
#include "FileMan.h"
#include "Scheduling.h"
#include "EditorMercs.h"
#include "Item Statistics.h"
#endif
//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible
void this_is_the_PolishText_public_symbol(void){;}
#ifdef POLISH
/*
****************************************************************************************************** ******************************************************************************************************
** IMPORTANT TRANSLATION NOTES ** ** IMPORTANT TRANSLATION NOTES **
@@ -111,10 +94,6 @@ FAST HELP TEXT -- Explains how the syntax of fast help text works.
*/ */
CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] =
{
L"",
};
//Encyclopedia //Encyclopedia
@@ -12311,5 +12290,3 @@ STR16 szRobotText[] = // TODO: Translate
L"The robot's extra armour plating was destroyed!", L"The robot's extra armour plating was destroyed!",
L"The robot gains the benefit of the %s skill trait.", L"The robot gains the benefit of the %s skill trait.",
}; };
#endif //POLISH
+1 -23
View File
@@ -1,20 +1,4 @@
// WANNE: Yes, this should be disabled, otherwise we get weird behavior when running the game with a VS 2005 build! /*
//#pragma setlocale("RUSSIAN")
#if defined( RUSSIAN )
#include "Text.h"
#include "FileMan.h"
#include "Scheduling.h"
#include "EditorMercs.h"
#include "Item Statistics.h"
#endif
//suppress : warning LNK4221: no public symbols found; archive member will be inaccessible
void this_is_the_RussianText_public_symbol(void){;}
#ifdef RUSSIAN
/*
****************************************************************************************************** ******************************************************************************************************
** IMPORTANT TRANSLATION NOTES ** ** IMPORTANT TRANSLATION NOTES **
@@ -110,10 +94,6 @@ FAST HELP TEXT -- Explains how the syntax of fast help text works.
*/ */
CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] =
{
L"",
};
//Encyclopedia //Encyclopedia
@@ -12292,5 +12272,3 @@ STR16 szRobotText[] = // TODO: Translate
L"The robot's extra armour plating was destroyed!", L"The robot's extra armour plating was destroyed!",
L"The robot gains the benefit of the %s skill trait.", L"The robot gains the benefit of the %s skill trait.",
}; };
#endif //RUSSIAN
+483 -504
View File
File diff suppressed because it is too large Load Diff
+36 -36
View File
@@ -1,49 +1,49 @@
#ifndef _JA25ENGLISHTEXT__H_ #ifndef _JA25ENGLISHTEXT__H_
#define _JA25ENGLISHTEXT__H_ #define _JA25ENGLISHTEXT__H_
extern STR16 gzIMPSkillTraitsText[]; extern STR16* gzIMPSkillTraitsText;
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
// added by SANDRO // added by SANDRO
extern STR16 gzIMPSkillTraitsTextNewMajor[]; extern STR16* gzIMPSkillTraitsTextNewMajor;
extern STR16 gzIMPSkillTraitsTextNewMinor[]; extern STR16* gzIMPSkillTraitsTextNewMinor;
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; extern STR16* gzIMPMajorTraitsHelpTextsAutoWeapons;
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; extern STR16* gzIMPMajorTraitsHelpTextsHeavyWeapons;
extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; extern STR16* gzIMPMajorTraitsHelpTextsSniper;
extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; extern STR16* gzIMPMajorTraitsHelpTextsRanger;
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; extern STR16* gzIMPMajorTraitsHelpTextsGunslinger;
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; extern STR16* gzIMPMajorTraitsHelpTextsMartialArts;
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; extern STR16* gzIMPMajorTraitsHelpTextsSquadleader;
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; extern STR16* gzIMPMajorTraitsHelpTextsTechnician;
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; extern STR16* gzIMPMajorTraitsHelpTextsDoctor;
extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsCovertOps; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsRadioOperator; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsNone[]; extern STR16* gzIMPMajorTraitsHelpTextsNone;
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; extern STR16* gzIMPMinorTraitsHelpTextsAmbidextrous;
extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; extern STR16* gzIMPMinorTraitsHelpTextsMelee;
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; extern STR16* gzIMPMinorTraitsHelpTextsThrowing;
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; extern STR16* gzIMPMinorTraitsHelpTextsStealthy;
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; extern STR16* gzIMPMinorTraitsHelpTextsNightOps;
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; extern STR16* gzIMPMinorTraitsHelpTextsAthletics;
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; extern STR16* gzIMPMinorTraitsHelpTextsBodybuilding;
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; extern STR16* gzIMPMinorTraitsHelpTextsDemolitions;
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; extern STR16* gzIMPMinorTraitsHelpTextsTeaching;
extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; extern STR16* gzIMPMinorTraitsHelpTextsScouting;
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; extern STR16* gzIMPMinorTraitsHelpTextsSnitch;
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsSurvival; // added by Flugente
extern STR16 gzIMPMinorTraitsHelpTextsNone[]; extern STR16* gzIMPMinorTraitsHelpTextsNone;
extern STR16 gzIMPOldSkillTraitsHelpTexts[]; extern STR16* gzIMPOldSkillTraitsHelpTexts;
extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; extern STR16* gzIMPNewCharacterTraitsHelpTexts;
extern STR16 gzIMPDisabilitiesHelpTexts[]; extern STR16* gzIMPDisabilitiesHelpTexts;
extern STR16 gzIMPProfileCostText[]; extern STR16* gzIMPProfileCostText;
extern STR16 zGioNewTraitsImpossibleText[]; extern STR16* zGioNewTraitsImpossibleText;
/////////////////////////////////////////////////////// ///////////////////////////////////////////////////////
enum enum
@@ -52,7 +52,7 @@ enum
IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT,
IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT,
}; };
extern STR16 gzIronManModeWarningText[]; extern STR16* gzIronManModeWarningText;
// display cover message (for tactical usually, seperated) // display cover message (for tactical usually, seperated)
// display cover terrain type info (used in cover information) // display cover terrain type info (used in cover information)
@@ -80,7 +80,7 @@ enum
DC_TTI__DETAILED_STEALTH, DC_TTI__DETAILED_STEALTH,
DC_TTI__DETAILED_TRAP_LEVEL, DC_TTI__DETAILED_TRAP_LEVEL,
}; };
extern STR16 gzDisplayCoverText[]; extern STR16* gzDisplayCoverText;
#endif #endif
+36 -36
View File
@@ -1,49 +1,49 @@
#ifndef _JA25ENGLISHTEXT__H_ #ifndef _JA25ENGLISHTEXT__H_
#define _JA25ENGLISHTEXT__H_ #define _JA25ENGLISHTEXT__H_
extern STR16 gzIMPSkillTraitsText[]; extern STR16* gzIMPSkillTraitsText;
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
// added by SANDRO // added by SANDRO
extern STR16 gzIMPSkillTraitsTextNewMajor[]; extern STR16* gzIMPSkillTraitsTextNewMajor;
extern STR16 gzIMPSkillTraitsTextNewMinor[]; extern STR16* gzIMPSkillTraitsTextNewMinor;
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; extern STR16* gzIMPMajorTraitsHelpTextsAutoWeapons;
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; extern STR16* gzIMPMajorTraitsHelpTextsHeavyWeapons;
extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; extern STR16* gzIMPMajorTraitsHelpTextsSniper;
extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; extern STR16* gzIMPMajorTraitsHelpTextsRanger;
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; extern STR16* gzIMPMajorTraitsHelpTextsGunslinger;
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; extern STR16* gzIMPMajorTraitsHelpTextsMartialArts;
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; extern STR16* gzIMPMajorTraitsHelpTextsSquadleader;
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; extern STR16* gzIMPMajorTraitsHelpTextsTechnician;
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; extern STR16* gzIMPMajorTraitsHelpTextsDoctor;
extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsCovertOps; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsRadioOperator; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsNone[]; extern STR16* gzIMPMajorTraitsHelpTextsNone;
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; extern STR16* gzIMPMinorTraitsHelpTextsAmbidextrous;
extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; extern STR16* gzIMPMinorTraitsHelpTextsMelee;
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; extern STR16* gzIMPMinorTraitsHelpTextsThrowing;
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; extern STR16* gzIMPMinorTraitsHelpTextsStealthy;
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; extern STR16* gzIMPMinorTraitsHelpTextsNightOps;
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; extern STR16* gzIMPMinorTraitsHelpTextsAthletics;
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; extern STR16* gzIMPMinorTraitsHelpTextsBodybuilding;
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; extern STR16* gzIMPMinorTraitsHelpTextsDemolitions;
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; extern STR16* gzIMPMinorTraitsHelpTextsTeaching;
extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; extern STR16* gzIMPMinorTraitsHelpTextsScouting;
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; extern STR16* gzIMPMinorTraitsHelpTextsSnitch;
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsSurvival; // added by Flugente
extern STR16 gzIMPMinorTraitsHelpTextsNone[]; extern STR16* gzIMPMinorTraitsHelpTextsNone;
extern STR16 gzIMPOldSkillTraitsHelpTexts[]; extern STR16* gzIMPOldSkillTraitsHelpTexts;
extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; extern STR16* gzIMPNewCharacterTraitsHelpTexts;
extern STR16 gzIMPDisabilitiesHelpTexts[]; extern STR16* gzIMPDisabilitiesHelpTexts;
extern STR16 gzIMPProfileCostText[]; extern STR16* gzIMPProfileCostText;
extern STR16 zGioNewTraitsImpossibleText[]; extern STR16* zGioNewTraitsImpossibleText;
/////////////////////////////////////////////////////// ///////////////////////////////////////////////////////
enum enum
@@ -52,7 +52,7 @@ enum
IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT,
IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT,
}; };
extern STR16 gzIronManModeWarningText[]; extern STR16* gzIronManModeWarningText;
// display cover message (for tactical usually, seperated) // display cover message (for tactical usually, seperated)
// display cover terrain type info (used in cover information) // display cover terrain type info (used in cover information)
@@ -81,7 +81,7 @@ enum
DC_TTI__DETAILED_TRAP_LEVEL, DC_TTI__DETAILED_TRAP_LEVEL,
}; };
extern STR16 gzDisplayCoverText[]; extern STR16* gzDisplayCoverText;
#endif #endif
+36 -36
View File
@@ -1,49 +1,49 @@
#ifndef _JA25ENGLISHTEXT__H_ #ifndef _JA25ENGLISHTEXT__H_
#define _JA25ENGLISHTEXT__H_ #define _JA25ENGLISHTEXT__H_
extern STR16 gzIMPSkillTraitsText[]; extern STR16* gzIMPSkillTraitsText;
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
// added by SANDRO // added by SANDRO
extern STR16 gzIMPSkillTraitsTextNewMajor[]; extern STR16* gzIMPSkillTraitsTextNewMajor;
extern STR16 gzIMPSkillTraitsTextNewMinor[]; extern STR16* gzIMPSkillTraitsTextNewMinor;
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; extern STR16* gzIMPMajorTraitsHelpTextsAutoWeapons;
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; extern STR16* gzIMPMajorTraitsHelpTextsHeavyWeapons;
extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; extern STR16* gzIMPMajorTraitsHelpTextsSniper;
extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; extern STR16* gzIMPMajorTraitsHelpTextsRanger;
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; extern STR16* gzIMPMajorTraitsHelpTextsGunslinger;
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; extern STR16* gzIMPMajorTraitsHelpTextsMartialArts;
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; extern STR16* gzIMPMajorTraitsHelpTextsSquadleader;
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; extern STR16* gzIMPMajorTraitsHelpTextsTechnician;
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; extern STR16* gzIMPMajorTraitsHelpTextsDoctor;
extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsCovertOps; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsRadioOperator; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsNone[]; extern STR16* gzIMPMajorTraitsHelpTextsNone;
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; extern STR16* gzIMPMinorTraitsHelpTextsAmbidextrous;
extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; extern STR16* gzIMPMinorTraitsHelpTextsMelee;
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; extern STR16* gzIMPMinorTraitsHelpTextsThrowing;
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; extern STR16* gzIMPMinorTraitsHelpTextsStealthy;
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; extern STR16* gzIMPMinorTraitsHelpTextsNightOps;
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; extern STR16* gzIMPMinorTraitsHelpTextsAthletics;
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; extern STR16* gzIMPMinorTraitsHelpTextsBodybuilding;
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; extern STR16* gzIMPMinorTraitsHelpTextsDemolitions;
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; extern STR16* gzIMPMinorTraitsHelpTextsTeaching;
extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; extern STR16* gzIMPMinorTraitsHelpTextsScouting;
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; extern STR16* gzIMPMinorTraitsHelpTextsSnitch;
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsSurvival; // added by Flugente
extern STR16 gzIMPMinorTraitsHelpTextsNone[]; extern STR16* gzIMPMinorTraitsHelpTextsNone;
extern STR16 gzIMPOldSkillTraitsHelpTexts[]; extern STR16* gzIMPOldSkillTraitsHelpTexts;
extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; extern STR16* gzIMPNewCharacterTraitsHelpTexts;
extern STR16 gzIMPDisabilitiesHelpTexts[]; extern STR16* gzIMPDisabilitiesHelpTexts;
extern STR16 gzIMPProfileCostText[]; extern STR16* gzIMPProfileCostText;
extern STR16 zGioNewTraitsImpossibleText[]; extern STR16* zGioNewTraitsImpossibleText;
/////////////////////////////////////////////////////// ///////////////////////////////////////////////////////
enum enum
@@ -52,7 +52,7 @@ enum
IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT,
IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT,
}; };
extern STR16 gzIronManModeWarningText[]; extern STR16* gzIronManModeWarningText;
// display cover message (for tactical usually, seperated) // display cover message (for tactical usually, seperated)
// display cover terrain type info (used in cover information) // display cover terrain type info (used in cover information)
@@ -80,7 +80,7 @@ enum
DC_TTI__DETAILED_STEALTH, DC_TTI__DETAILED_STEALTH,
DC_TTI__DETAILED_TRAP_LEVEL, DC_TTI__DETAILED_TRAP_LEVEL,
}; };
extern STR16 gzDisplayCoverText[]; extern STR16* gzDisplayCoverText;
#endif #endif
+36 -36
View File
@@ -1,49 +1,49 @@
#ifndef _JA25GERMANTEXT__H_ #ifndef _JA25GERMANTEXT__H_
#define _JA25GERMANTEXT__H_ #define _JA25GERMANTEXT__H_
extern STR16 gzIMPSkillTraitsText[]; extern STR16* gzIMPSkillTraitsText;
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
// added by SANDRO // added by SANDRO
extern STR16 gzIMPSkillTraitsTextNewMajor[]; extern STR16* gzIMPSkillTraitsTextNewMajor;
extern STR16 gzIMPSkillTraitsTextNewMinor[]; extern STR16* gzIMPSkillTraitsTextNewMinor;
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; extern STR16* gzIMPMajorTraitsHelpTextsAutoWeapons;
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; extern STR16* gzIMPMajorTraitsHelpTextsHeavyWeapons;
extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; extern STR16* gzIMPMajorTraitsHelpTextsSniper;
extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; extern STR16* gzIMPMajorTraitsHelpTextsRanger;
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; extern STR16* gzIMPMajorTraitsHelpTextsGunslinger;
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; extern STR16* gzIMPMajorTraitsHelpTextsMartialArts;
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; extern STR16* gzIMPMajorTraitsHelpTextsSquadleader;
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; extern STR16* gzIMPMajorTraitsHelpTextsTechnician;
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; extern STR16* gzIMPMajorTraitsHelpTextsDoctor;
extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsCovertOps; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsRadioOperator; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsNone[]; extern STR16* gzIMPMajorTraitsHelpTextsNone;
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; extern STR16* gzIMPMinorTraitsHelpTextsAmbidextrous;
extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; extern STR16* gzIMPMinorTraitsHelpTextsMelee;
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; extern STR16* gzIMPMinorTraitsHelpTextsThrowing;
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; extern STR16* gzIMPMinorTraitsHelpTextsStealthy;
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; extern STR16* gzIMPMinorTraitsHelpTextsNightOps;
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; extern STR16* gzIMPMinorTraitsHelpTextsAthletics;
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; extern STR16* gzIMPMinorTraitsHelpTextsBodybuilding;
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; extern STR16* gzIMPMinorTraitsHelpTextsDemolitions;
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; extern STR16* gzIMPMinorTraitsHelpTextsTeaching;
extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; extern STR16* gzIMPMinorTraitsHelpTextsScouting;
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; extern STR16* gzIMPMinorTraitsHelpTextsSnitch;
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsSurvival; // added by Flugente
extern STR16 gzIMPMinorTraitsHelpTextsNone[]; extern STR16* gzIMPMinorTraitsHelpTextsNone;
extern STR16 gzIMPOldSkillTraitsHelpTexts[]; extern STR16* gzIMPOldSkillTraitsHelpTexts;
extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; extern STR16* gzIMPNewCharacterTraitsHelpTexts;
extern STR16 gzIMPDisabilitiesHelpTexts[]; extern STR16* gzIMPDisabilitiesHelpTexts;
extern STR16 gzIMPProfileCostText[]; extern STR16* gzIMPProfileCostText;
extern STR16 zGioNewTraitsImpossibleText[]; extern STR16* zGioNewTraitsImpossibleText;
/////////////////////////////////////////////////////// ///////////////////////////////////////////////////////
enum enum
@@ -52,7 +52,7 @@ enum
IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT,
IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT,
}; };
extern STR16 gzIronManModeWarningText[]; extern STR16* gzIronManModeWarningText;
// display cover message (for tactical usually, seperated) // display cover message (for tactical usually, seperated)
// display cover terrain type info (used in cover information) // display cover terrain type info (used in cover information)
@@ -80,7 +80,7 @@ enum
DC_TTI__DETAILED_STEALTH, DC_TTI__DETAILED_STEALTH,
DC_TTI__DETAILED_TRAP_LEVEL, DC_TTI__DETAILED_TRAP_LEVEL,
}; };
extern STR16 gzDisplayCoverText[]; extern STR16* gzDisplayCoverText;
#endif #endif
+36 -36
View File
@@ -1,49 +1,49 @@
#ifndef _JA25ENGLISHTEXT__H_ #ifndef _JA25ENGLISHTEXT__H_
#define _JA25ENGLISHTEXT__H_ #define _JA25ENGLISHTEXT__H_
extern STR16 gzIMPSkillTraitsText[]; extern STR16* gzIMPSkillTraitsText;
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
// added by SANDRO // added by SANDRO
extern STR16 gzIMPSkillTraitsTextNewMajor[]; extern STR16* gzIMPSkillTraitsTextNewMajor;
extern STR16 gzIMPSkillTraitsTextNewMinor[]; extern STR16* gzIMPSkillTraitsTextNewMinor;
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; extern STR16* gzIMPMajorTraitsHelpTextsAutoWeapons;
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; extern STR16* gzIMPMajorTraitsHelpTextsHeavyWeapons;
extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; extern STR16* gzIMPMajorTraitsHelpTextsSniper;
extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; extern STR16* gzIMPMajorTraitsHelpTextsRanger;
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; extern STR16* gzIMPMajorTraitsHelpTextsGunslinger;
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; extern STR16* gzIMPMajorTraitsHelpTextsMartialArts;
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; extern STR16* gzIMPMajorTraitsHelpTextsSquadleader;
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; extern STR16* gzIMPMajorTraitsHelpTextsTechnician;
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; extern STR16* gzIMPMajorTraitsHelpTextsDoctor;
extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsCovertOps; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsRadioOperator; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsNone[]; extern STR16* gzIMPMajorTraitsHelpTextsNone;
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; extern STR16* gzIMPMinorTraitsHelpTextsAmbidextrous;
extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; extern STR16* gzIMPMinorTraitsHelpTextsMelee;
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; extern STR16* gzIMPMinorTraitsHelpTextsThrowing;
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; extern STR16* gzIMPMinorTraitsHelpTextsStealthy;
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; extern STR16* gzIMPMinorTraitsHelpTextsNightOps;
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; extern STR16* gzIMPMinorTraitsHelpTextsAthletics;
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; extern STR16* gzIMPMinorTraitsHelpTextsBodybuilding;
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; extern STR16* gzIMPMinorTraitsHelpTextsDemolitions;
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; extern STR16* gzIMPMinorTraitsHelpTextsTeaching;
extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; extern STR16* gzIMPMinorTraitsHelpTextsScouting;
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; extern STR16* gzIMPMinorTraitsHelpTextsSnitch;
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsSurvival; // added by Flugente
extern STR16 gzIMPMinorTraitsHelpTextsNone[]; extern STR16* gzIMPMinorTraitsHelpTextsNone;
extern STR16 gzIMPOldSkillTraitsHelpTexts[]; extern STR16* gzIMPOldSkillTraitsHelpTexts;
extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; extern STR16* gzIMPNewCharacterTraitsHelpTexts;
extern STR16 gzIMPDisabilitiesHelpTexts[]; extern STR16* gzIMPDisabilitiesHelpTexts;
extern STR16 gzIMPProfileCostText[]; extern STR16* gzIMPProfileCostText;
extern STR16 zGioNewTraitsImpossibleText[]; extern STR16* zGioNewTraitsImpossibleText;
/////////////////////////////////////////////////////// ///////////////////////////////////////////////////////
enum enum
@@ -52,7 +52,7 @@ enum
IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT,
IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT,
}; };
extern STR16 gzIronManModeWarningText[]; extern STR16* gzIronManModeWarningText;
// display cover message (for tactical usually, seperated) // display cover message (for tactical usually, seperated)
// display cover terrain type info (used in cover information) // display cover terrain type info (used in cover information)
@@ -80,7 +80,7 @@ enum
DC_TTI__DETAILED_STEALTH, DC_TTI__DETAILED_STEALTH,
DC_TTI__DETAILED_TRAP_LEVEL, DC_TTI__DETAILED_TRAP_LEVEL,
}; };
extern STR16 gzDisplayCoverText[]; extern STR16* gzDisplayCoverText;
#endif #endif
+36 -36
View File
@@ -1,49 +1,49 @@
#ifndef _JA25ENGLISHTEXT__H_ #ifndef _JA25ENGLISHTEXT__H_
#define _JA25ENGLISHTEXT__H_ #define _JA25ENGLISHTEXT__H_
extern STR16 gzIMPSkillTraitsText[]; extern STR16* gzIMPSkillTraitsText;
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
// added by SANDRO // added by SANDRO
extern STR16 gzIMPSkillTraitsTextNewMajor[]; extern STR16* gzIMPSkillTraitsTextNewMajor;
extern STR16 gzIMPSkillTraitsTextNewMinor[]; extern STR16* gzIMPSkillTraitsTextNewMinor;
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; extern STR16* gzIMPMajorTraitsHelpTextsAutoWeapons;
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; extern STR16* gzIMPMajorTraitsHelpTextsHeavyWeapons;
extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; extern STR16* gzIMPMajorTraitsHelpTextsSniper;
extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; extern STR16* gzIMPMajorTraitsHelpTextsRanger;
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; extern STR16* gzIMPMajorTraitsHelpTextsGunslinger;
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; extern STR16* gzIMPMajorTraitsHelpTextsMartialArts;
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; extern STR16* gzIMPMajorTraitsHelpTextsSquadleader;
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; extern STR16* gzIMPMajorTraitsHelpTextsTechnician;
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; extern STR16* gzIMPMajorTraitsHelpTextsDoctor;
extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsCovertOps; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsRadioOperator; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsNone[]; extern STR16* gzIMPMajorTraitsHelpTextsNone;
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; extern STR16* gzIMPMinorTraitsHelpTextsAmbidextrous;
extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; extern STR16* gzIMPMinorTraitsHelpTextsMelee;
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; extern STR16* gzIMPMinorTraitsHelpTextsThrowing;
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; extern STR16* gzIMPMinorTraitsHelpTextsStealthy;
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; extern STR16* gzIMPMinorTraitsHelpTextsNightOps;
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; extern STR16* gzIMPMinorTraitsHelpTextsAthletics;
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; extern STR16* gzIMPMinorTraitsHelpTextsBodybuilding;
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; extern STR16* gzIMPMinorTraitsHelpTextsDemolitions;
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; extern STR16* gzIMPMinorTraitsHelpTextsTeaching;
extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; extern STR16* gzIMPMinorTraitsHelpTextsScouting;
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; extern STR16* gzIMPMinorTraitsHelpTextsSnitch;
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsSurvival; // added by Flugente
extern STR16 gzIMPMinorTraitsHelpTextsNone[]; extern STR16* gzIMPMinorTraitsHelpTextsNone;
extern STR16 gzIMPOldSkillTraitsHelpTexts[]; extern STR16* gzIMPOldSkillTraitsHelpTexts;
extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; extern STR16* gzIMPNewCharacterTraitsHelpTexts;
extern STR16 gzIMPDisabilitiesHelpTexts[]; extern STR16* gzIMPDisabilitiesHelpTexts;
extern STR16 gzIMPProfileCostText[]; extern STR16* gzIMPProfileCostText;
extern STR16 zGioNewTraitsImpossibleText[]; extern STR16* zGioNewTraitsImpossibleText;
/////////////////////////////////////////////////////// ///////////////////////////////////////////////////////
enum enum
@@ -52,7 +52,7 @@ enum
IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT,
IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT,
}; };
extern STR16 gzIronManModeWarningText[]; extern STR16* gzIronManModeWarningText;
// display cover message (for tactical usually, seperated) // display cover message (for tactical usually, seperated)
// display cover terrain type info (used in cover information) // display cover terrain type info (used in cover information)
@@ -80,7 +80,7 @@ enum
DC_TTI__DETAILED_STEALTH, DC_TTI__DETAILED_STEALTH,
DC_TTI__DETAILED_TRAP_LEVEL, DC_TTI__DETAILED_TRAP_LEVEL,
}; };
extern STR16 gzDisplayCoverText[]; extern STR16* gzDisplayCoverText;
#endif #endif
+36 -36
View File
@@ -1,49 +1,49 @@
#ifndef _JA25ENGLISHTEXT__H_ #ifndef _JA25ENGLISHTEXT__H_
#define _JA25ENGLISHTEXT__H_ #define _JA25ENGLISHTEXT__H_
extern STR16 gzIMPSkillTraitsText[]; extern STR16* gzIMPSkillTraitsText;
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
// added by SANDRO // added by SANDRO
extern STR16 gzIMPSkillTraitsTextNewMajor[]; extern STR16* gzIMPSkillTraitsTextNewMajor;
extern STR16 gzIMPSkillTraitsTextNewMinor[]; extern STR16* gzIMPSkillTraitsTextNewMinor;
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[]; extern STR16* gzIMPMajorTraitsHelpTextsAutoWeapons;
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[]; extern STR16* gzIMPMajorTraitsHelpTextsHeavyWeapons;
extern STR16 gzIMPMajorTraitsHelpTextsSniper[]; extern STR16* gzIMPMajorTraitsHelpTextsSniper;
extern STR16 gzIMPMajorTraitsHelpTextsRanger[]; extern STR16* gzIMPMajorTraitsHelpTextsRanger;
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[]; extern STR16* gzIMPMajorTraitsHelpTextsGunslinger;
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[]; extern STR16* gzIMPMajorTraitsHelpTextsMartialArts;
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[]; extern STR16* gzIMPMajorTraitsHelpTextsSquadleader;
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[]; extern STR16* gzIMPMajorTraitsHelpTextsTechnician;
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[]; extern STR16* gzIMPMajorTraitsHelpTextsDoctor;
extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsCovertOps; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsRadioOperator; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsNone[]; extern STR16* gzIMPMajorTraitsHelpTextsNone;
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[]; extern STR16* gzIMPMinorTraitsHelpTextsAmbidextrous;
extern STR16 gzIMPMinorTraitsHelpTextsMelee[]; extern STR16* gzIMPMinorTraitsHelpTextsMelee;
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[]; extern STR16* gzIMPMinorTraitsHelpTextsThrowing;
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[]; extern STR16* gzIMPMinorTraitsHelpTextsStealthy;
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[]; extern STR16* gzIMPMinorTraitsHelpTextsNightOps;
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[]; extern STR16* gzIMPMinorTraitsHelpTextsAthletics;
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[]; extern STR16* gzIMPMinorTraitsHelpTextsBodybuilding;
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[]; extern STR16* gzIMPMinorTraitsHelpTextsDemolitions;
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[]; extern STR16* gzIMPMinorTraitsHelpTextsTeaching;
extern STR16 gzIMPMinorTraitsHelpTextsScouting[]; extern STR16* gzIMPMinorTraitsHelpTextsScouting;
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[]; extern STR16* gzIMPMinorTraitsHelpTextsSnitch;
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente extern STR16* gzIMPMajorTraitsHelpTextsSurvival; // added by Flugente
extern STR16 gzIMPMinorTraitsHelpTextsNone[]; extern STR16* gzIMPMinorTraitsHelpTextsNone;
extern STR16 gzIMPOldSkillTraitsHelpTexts[]; extern STR16* gzIMPOldSkillTraitsHelpTexts;
extern STR16 gzIMPNewCharacterTraitsHelpTexts[]; extern STR16* gzIMPNewCharacterTraitsHelpTexts;
extern STR16 gzIMPDisabilitiesHelpTexts[]; extern STR16* gzIMPDisabilitiesHelpTexts;
extern STR16 gzIMPProfileCostText[]; extern STR16* gzIMPProfileCostText;
extern STR16 zGioNewTraitsImpossibleText[]; extern STR16* zGioNewTraitsImpossibleText;
/////////////////////////////////////////////////////// ///////////////////////////////////////////////////////
enum enum
@@ -52,7 +52,7 @@ enum
IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT, IMM__SOFT_IRON_MAN_MODE_WARNING_TEXT,
IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT, IMM__EXTREME_IRON_MAN_MODE_WARNING_TEXT,
}; };
extern STR16 gzIronManModeWarningText[]; extern STR16* gzIronManModeWarningText;
// display cover message (for tactical usually, seperated) // display cover message (for tactical usually, seperated)
// display cover terrain type info (used in cover information) // display cover terrain type info (used in cover information)
@@ -80,7 +80,7 @@ enum
DC_TTI__DETAILED_STEALTH, DC_TTI__DETAILED_STEALTH,
DC_TTI__DETAILED_TRAP_LEVEL, DC_TTI__DETAILED_TRAP_LEVEL,
}; };
extern STR16 gzDisplayCoverText[]; extern STR16* gzDisplayCoverText;
#endif #endif
+15 -2
View File
@@ -2,6 +2,8 @@
#include <types.h> #include <types.h>
#include <string>
namespace i18n { namespace i18n {
enum class Lang enum class Lang
{ {
@@ -16,8 +18,19 @@ enum class Lang
}; };
} }
extern const i18n::Lang g_lang; extern i18n::Lang g_lang;
extern const int MAX_MESSAGES_ON_MAP_BOTTOM; /* Parses a LANGUAGE ini value (ENGLISH/GERMAN/...) into i18n::Lang; falls back
* to the build's compiled-in default (and logs) on unknown input. Called once
* at startup. */
auto SetLanguageFromName(std::string const& name) -> void;
extern int MAX_MESSAGES_ON_MAP_BOTTOM;
auto GetLanguagePrefix() -> const STR; auto GetLanguagePrefix() -> const STR;
/* Rebinds every language table's global pointer to the given language's
* namespace (see LanguageStrings.cpp). Called once at startup, right after
* the LANGUAGE ini key resolves g_lang (sgp.cpp GetRuntimeSettings), before
* any UI reads a string. */
auto BindLanguageStrings(i18n::Lang lang) -> void;
+57 -48
View File
@@ -1,54 +1,63 @@
#include <language.hpp> #include <language.hpp>
#include "DEBUG.H"
/* FIXME: The ugliest of ugly hacks. Getting rid of this and letting language namespace {
* (ideally text and voice separately) be set in the options menu would be // Cn+4 retired the per-exe ENGLISH/GERMAN/... compile definitions along with the CMake
* ideal. */ // language axis, so the build default is now a fixed constant; the ini key (below)
const i18n::Lang g_lang{ // overrides it at runtime via g_lang/BindLanguageStrings.
#if defined(ENGLISH) constexpr i18n::Lang kBuildDefaultLang = i18n::Lang::en;
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
};
const int MAX_MESSAGES_ON_MAP_BOTTOM{ auto RowsForLang(i18n::Lang lang) -> int {
#if defined(CHINESE) // zwwoooooo: Chinese fonts relatively high , so to reduce the number of rows return lang == i18n::Lang::zh ? 6 : 9;
6 }
#else }
9
#endif /* g_lang used to be a compile-time const picked by the ENGLISH/GERMAN/...
}; * define; it is now a runtime value that starts at the build's default and
* can be overridden at startup from the [Ja2 Settings] LANGUAGE ini key (see
* SetLanguageFromName / sgp.cpp GetRuntimeSettings). */
i18n::Lang g_lang = kBuildDefaultLang;
int MAX_MESSAGES_ON_MAP_BOTTOM = RowsForLang(g_lang);
auto ApplyLang(i18n::Lang lang = kBuildDefaultLang ) {
MAX_MESSAGES_ON_MAP_BOTTOM = RowsForLang(lang);
g_lang = lang;
}
auto SetLanguageFromName(std::string const& name) -> void {
static const struct { const STR name; i18n::Lang lang; } table[] = {
{ "ENGLISH", i18n::Lang::en },
{ "GERMAN", i18n::Lang::de },
{ "RUSSIAN", i18n::Lang::ru },
{ "DUTCH", i18n::Lang::nl },
{ "POLISH", i18n::Lang::pl },
{ "FRENCH", i18n::Lang::fr },
{ "ITALIAN", i18n::Lang::it },
{ "CHINESE", i18n::Lang::zh },
};
for (auto const& entry : table) {
if (_stricmp(name.c_str(), entry.name) == 0) {
ApplyLang(entry.lang);
return;
}
}
ApplyLang();
FastDebugMsg(String("SetLanguageFromName: unknown LANGUAGE value '%s', keeping build default", name.c_str()));
}
auto GetLanguagePrefix() -> const STR { auto GetLanguagePrefix() -> const STR {
return switch (g_lang) {
#if defined(ENGLISH) case i18n::Lang::en: return "";
"" case i18n::Lang::de: return "German.";
#elif defined(CHINESE) case i18n::Lang::ru: return "Russian.";
"Chinese." case i18n::Lang::nl: return "Dutch.";
#elif defined(DUTCH) case i18n::Lang::pl: return "Polish.";
"Dutch." case i18n::Lang::fr: return "French.";
#elif defined(FRENCH) case i18n::Lang::it: return "Italian.";
"French." case i18n::Lang::zh: return "Chinese.";
#elif defined(GERMAN) }
"German." return "";
#elif defined(ITALIAN)
"Italian."
#elif defined(POLISH)
"Polish."
#elif defined(RUSSIAN)
"Russian."
#endif
;
} }
+519
View File
@@ -0,0 +1,519 @@
X(pMenuStrings)
X(pLocationPageText)
X(pSectorPageText)
X(pEncyclopediaHelpText)
X(pEncyclopediaTypeText)
X(pEncyclopediaSkrotyText)
X(pEncyclopediaFilterLocationText)
X(pEncyclopediaSubFilterLocationText)
X(pEncyclopediaFilterCharText)
X(pEncyclopediaSubFilterCharText)
X(pEncyclopediaFilterItemText)
X(pEncyclopediaSubFilterItemText)
X(pEncyclopediaFilterQuestText)
X(pEncyclopediaSubFilterQuestText)
X(pEncyclopediaShortCharacterText)
X(pEncyclopediaHelpCharacterText)
X(pEncyclopediaShortInventoryText)
X(BoxFilter)
X(pOtherButtonsText)
X(pOtherButtonsHelpText)
X(QuestDescText)
X(FactDescText)
X(iEditorItemStatsButtonsText)
X(FaceDirs)
X(iEditorMercsToolbarText)
X(iEditorBuildingsToolbarText)
X(iEditorItemsToolbarText)
X(iEditorMapInfoToolbarText)
X(iEditorOptionsToolbarText)
X(iEditorTerrainToolbarText)
X(iEditorTaskbarInternalText)
X(iRenderMapEntryPointsAndLightsText)
X(iBuildTriggerNameText)
X(iRenderDoorLockInfoText)
X(iRenderEditorInfoText)
X(iUpdateBuildingsInfoText)
X(iRenderDoorEditingWindowText)
X(pInitEditorItemsInfoText)
X(pDisplayItemStatisticsTex)
X(pUpdateMapInfoText)
X(gszScheduleActions)
X(zDiffNames)
X(EditMercStat)
X(EditMercOrders)
X(EditMercAttitudes)
X(pDisplayEditMercWindowText)
X(pCreateEditMercWindowText)
X(pDisplayBodyTypeInfoText)
X(pUpdateMercsInfoText)
X(pRenderMercStringsText)
X(pClearCurrentScheduleText)
X(pCopyMercPlacementText)
X(pPasteMercPlacementText)
X(pEditModeShutdownText)
X(pHandleKeyboardShortcutsText)
X(pPerformSelectedActionText)
X(pWaitForHelpScreenResponseText)
X(pAutoLoadMapText)
X(pShowHighGroundText)
X(pUpdateItemStatsPanelText)
X(pSetupGameTypeFlagsText)
X(pSetupGunGUIText)
X(pSetupArmourGUIText)
X(pSetupExplosivesGUIText)
X(pSetupTriggersGUIText)
X(pCreateSummaryWindowText)
X(pRenderSectorInformationText)
X(pRenderItemDetailsText)
X(pRenderSummaryWindowText)
X(pUpdateSectorSummaryText)
X(pSummaryLoadMapCallbackText)
X(pReportErrorText)
X(pRegenerateSummaryInfoForAllOutdatedMapsText)
X(pSummaryUpdateCallbackText)
X(pApologizeOverrideAndForceUpdateEverythingText)
X(pDisplaySelectionWindowGraphicalInformationText)
X(pDisplaySelectionWindowButtonText)
X(wszSelType)
X(gzNewLaptopMessages)
X(zNewTacticalMessages)
X(gszAimPages)
X(zGrod)
X(pCreditsJA2113)
X(ShortItemNames)
X(ItemNames)
X(AmmoCaliber)
X(BobbyRayAmmoCaliber)
X(WeaponType)
X(Message)
X(TeamTurnString)
X(pMilitiaControlMenuStrings)
X(pTraitSkillsMenuStrings)
X(pTraitSkillsMenuDescStrings)
X(pTraitSkillsDenialStrings)
X(pSkillMenuStrings)
X(pSnitchMenuStrings)
X(pSnitchMenuDescStrings)
X(pSnitchToggleMenuStrings)
X(pSnitchToggleMenuDescStrings)
X(pSnitchSectorMenuStrings)
X(pSnitchSectorMenuDescStrings)
X(pPrisonerMenuStrings)
X(pPrisonerMenuDescStrings)
X(pSnitchPrisonExposedStrings)
X(pSnitchGatheringRumoursResultStrings)
X(pAssignMenuStrings)
X(pTrainingStrings)
X(pTrainingMenuStrings)
X(pAttributeMenuStrings)
X(pVehicleStrings)
X(pShortAttributeStrings)
X(pLongAttributeStrings)
X(pContractStrings)
X(pAssignmentStrings)
X(pConditionStrings)
X(pCountryNames)
X(pTownNames)
X(pPersonnelScreenStrings)
X(pPersonnelRecordsHelpTexts)
X(pPersonnelTitle)
X(pUpperLeftMapScreenStrings)
X(pTacticalPopupButtonStrings)
X(pSquadMenuStrings)
X(pDoorTrapStrings)
X(pLongAssignmentStrings)
X(pContractExtendStrings)
X(pMapScreenMouseRegionHelpText)
X(pPersonnelAssignmentStrings)
X(pNoiseVolStr)
X(pNoiseTypeStr)
X(pDirectionStr)
X(pRemoveMercStrings)
X(sTimeStrings)
X(pLandTypeStrings)
X(pGuardMenuStrings)
X(pOtherGuardMenuStrings)
X(pInvPanelTitleStrings)
X(pPOWStrings)
X(pMilitiaString)
X(pMilitiaButtonString)
X(pEpcMenuStrings)
X(pRepairStrings)
X(sPreStatBuildString)
X(sStatGainStrings)
X(pHelicopterEtaStrings)
X(pHelicopterRepairRefuelStrings)
X(sMapLevelString)
X(gsLoyalString)
X(gsUndergroundString)
X(gsTimeStrings)
X(sFacilitiesStrings)
X(pMapPopUpInventoryText)
X(pwTownInfoStrings)
X(pwMineStrings)
X(pwMiscSectorStrings)
X(pMapInventoryErrorString)
X(pMapInventoryStrings)
X(pMapScreenFastHelpTextList)
X(pMovementMenuStrings)
X(pUpdateMercStrings)
X(pMapScreenBorderButtonHelpText)
X(pMapScreenInvenButtonHelpText)
X(pMapScreenBottomFastHelp)
X(pMapScreenBottomText)
X(pMercDeadString)
X(pSenderNameList)
X(pTraverseStrings)
X(pNewMailStrings)
X(pDeleteMailStrings)
X(pEmailHeaders)
X(pEmailTitleText)
X(pFinanceTitle)
X(pFinanceSummary)
X(pFinanceHeaders)
X(pTransactionText)
X(pTransactionAlternateText)
X(pMoralStrings)
X(pSkyriderText)
X(pLeftEquipmentString)
X(pMapScreenStatusStrings)
X(pMapScreenPrevNextCharButtonHelpText)
X(pEtaString)
X(pShortVehicleStrings)
X(pTrashItemText)
X(pMapErrorString)
X(pMapPlotStrings)
X(pMiscMapScreenMouseRegionHelpText)
X(pMercHeLeaveString)
X(pMercSheLeaveString)
X(pImpPopUpStrings)
X(pImpButtonText)
X(pExtraIMPStrings)
X(pDayStrings)
X(pMercContractOverStrings)
X(pFilesTitle)
X(pFilesSenderList)
X(pHistoryLocations)
X(pHistoryHeaders)
X(pHistoryTitle)
X(pShowBookmarkString)
X(pWebPagesTitles)
X(pWebTitle)
X(pPersonnelString)
X(pErrorStrings)
X(pDownloadString)
X(pBookmarkTitle)
X(pBookMarkStrings)
X(pLaptopIcons)
X(gsAtmStartButtonText)
X(pPersonnelTeamStatsStrings)
X(pPersonnelCurrentTeamStatsStrings)
X(pPersonelTeamStrings)
X(pPersonnelDepartedStateStrings)
X(pMapHortIndex)
X(pMapVertIndex)
X(pMapDepthIndex)
X(pLaptopTitles)
X(pMilitiaConfirmStrings)
X(pDeliveryLocationStrings)
X(pSkillAtZeroWarning)
X(pIMPBeginScreenStrings)
X(pIMPFinishButtonText)
X(pIMPFinishStrings)
X(pIMPVoicesStrings)
X(pDepartedMercPortraitStrings)
X(pPersTitleText)
X(pPausedGameText)
X(zOptionsToggleText)
X(zOptionsScreenHelpText)
X(pDoctorWarningString)
X(pMilitiaButtonsHelpText)
X(pMapScreenJustStartedHelpText)
X(pLandMarkInSectorString)
X(gzMercSkillText)
X(gzMercSkillTextNew)
X(gzNonPersistantPBIText)
X(gzMiscString)
X(pBullseyeStrings)
X(wMapScreenSortButtonHelpText)
X(pNewNoiseStr)
X(pTauntUnknownVoice)
X(gzLateLocalizedString)
X(gzCWStrings)
X(gzTooltipStrings)
X(pSkillTraitBeginIMPStrings)
X(sgAttributeSelectionText)
X(pCharacterTraitBeginIMPStrings)
X(gzIMPCharacterTraitText)
X(gzIMPAttitudesText)
X(gzIMPColorChoosingText)
X(sColorChoiceExplanationTexts)
X(gzIMPDisabilityTraitText)
X(gzIMPDisabilityTraitEmailTextDeaf)
X(gzIMPDisabilityTraitEmailTextShortSighted)
X(gzIMPDisabilityTraitEmailTextHemophiliac)
X(gzIMPDisabilityTraitEmailTextAfraidOfHeights)
X(gzIMPDisabilityTraitEmailTextSelfHarm)
X(sEnemyTauntsFireGun)
X(sEnemyTauntsFireLauncher)
X(sEnemyTauntsThrow)
X(sEnemyTauntsChargeKnife)
X(sEnemyTauntsRunAway)
X(sEnemyTauntsSeekNoise)
X(sEnemyTauntsAlert)
X(sEnemyTauntsGotHit)
X(sEnemyTauntsNoticedMerc)
X(sSpecialCharacters)
X(gzFacilityErrorMessage)
X(gzFacilityAssignmentStrings)
X(gzFacilityRiskResultStrings)
X(gzNCTHlabels)
X(gzMapInventorySortingMessage)
X(gzMapInventoryFilterOptions)
X(gzMercCompare)
X(pAntiHackerString)
X(pMessageStrings)
X(gzMoneyAmounts)
X(gzProsLabel)
X(gzConsLabel)
X(gzItemDescTabButtonText)
X(gzItemDescTabButtonShortText)
X(gzItemDescGenHeaders)
X(gzItemDescGenIndexes)
X(gConditionDesc)
X(gTemperatureDesc)
X(gFoodDesc)
X(gzWeaponStatsFasthelpTactical)
X(gzMiscItemStatsFasthelp)
X(gzUDBButtonTooltipText)
X(gzUDBHeaderTooltipText)
X(gzUDBGenIndexTooltipText)
X(gzUDBAdvIndexTooltipText)
X(szUDBGenWeaponsStatsTooltipText)
X(szUDBGenWeaponsStatsExplanationsTooltipText)
X(szUDBGenArmorStatsTooltipText)
X(szUDBGenArmorStatsExplanationsTooltipText)
X(szUDBGenAmmoStatsTooltipText)
X(szUDBGenAmmoStatsExplanationsTooltipText)
X(szUDBGenExplosiveStatsTooltipText)
X(szUDBGenExplosiveStatsExplanationsTooltipText)
X(szUDBGenCommonStatsTooltipText)
X(szUDBGenCommonStatsExplanationsTooltipText)
X(szUDBGenSecondaryStatsTooltipText)
X(szUDBGenSecondaryStatsExplanationsTooltipText)
X(szUDBAdvStatsTooltipText)
X(szUDBAdvStatsExplanationsTooltipText)
X(szUDBAdvStatsExplanationsTooltipTextForWeapons)
X(sKeyDescriptionStrings)
X(gzHiddenHitCountStr)
X(zVehicleName)
X(pVehicleSeatsStrings)
X(szCovertTextStr)
X(gPowerPackDesc)
X(szCorpseTextStr)
X(szFoodTextStr)
X(szPrisonerTextStr)
X(szMTATextStr)
X(szInventoryArmTextStr)
X(pExitingSectorHelpText)
X(InsContractText)
X(InsInfoText)
X(MercAccountText)
X(MercAccountPageText)
X(MercInfo)
X(MercNoAccountText)
X(MercHomePageText)
X(sFuneralString)
X(sFloristText)
X(sOrderFormText)
X(sFloristGalleryText)
X(sFloristCards)
X(BobbyROrderFormText)
X(BobbyRText)
X(BobbyRFilter)
X(BobbyRaysFrontText)
X(AimSortText)
X(AimPolicyText)
X(AimMemberText)
X(CharacterInfo)
X(VideoConfercingText)
X(AimPopUpText)
X(AimLinkText)
X(AimHistoryText)
X(AimFiText)
X(AimAlumniText)
X(AimScreenText)
X(AimBottomMenuText)
X(zMarksMapScreenText)
X(gpStrategicString)
X(gpGameClockString)
X(SKI_Text)
X(SkiAtmText)
X(gzSkiAtmText)
X(SkiMessageBoxText)
X(zSaveLoadText)
X(zOptionsText)
X(z113FeaturesScreenText)
X(z113FeaturesToggleText)
X(z113FeaturesHelpText)
X(z113FeaturesPanelText)
X(gzGIOScreenText)
X(gzMPJHelpText)
X(gzMPJScreenText)
X(gzMPHScreenText)
X(gzMPSScreenText)
X(gzMPCScreenText)
X(gszMPEdgesText)
X(gszMPTeamNames)
X(gzMPChatToggleText)
X(gzMPChatboxText)
X(gzHelpScreenText)
X(gzLaptopHelpText)
X(gzMoneyWithdrawMessageText)
X(gzCopyrightText)
X(BrokenLinkText)
X(gzBobbyRShipmentText)
X(zGioDifConfirmText)
X(gzCreditNames)
X(gzCreditNameTitle)
X(gzCreditNameFunny)
X(New113Message)
X(New113MERCMercMailTexts)
X(MissingIMPSkillsDescriptions)
X(New113AIMMercMailTexts)
X(New113HAMMessage)
X(gzTransformationMessage)
X(NewInvMessage)
X(MPServerMessage)
X(MPClientMessage)
X(gszMPMapscreenText)
X(Additional113Text)
X(ranks)
X(gszPocketPopupText)
X(gLbeStatsDesc)
X(szBackgroundText_Flags)
X(szBackgroundText_Value)
X(szSoldierClassName)
X(szBackgroundTitleText)
X(szPersonalityTitleText)
X(szPersonalityDisplayText)
X(szPersonalityHelpText)
X(szRaceText)
X(szAppearanceText)
X(szRefinementText)
X(szRefinementTextTypes)
X(szNationalityText)
X(szNationalityTextAdjective)
X(szNationalityText_Special)
X(szCareLevelText)
X(szRacistText)
X(szSexistText)
X(szCampaignHistoryWebSite)
X(szCampaignHistoryDetail)
X(szCampaignHistoryTimeString)
X(szCampaignHistoryMoneyTypeString)
X(szCampaignHistoryConsumptionTypeString)
X(szCampaignHistoryResultString)
X(szCampaignHistoryImportanceString)
X(szCampaignHistoryWebpageString)
X(szCampaignStatsOperationPrefix)
X(szCampaignStatsOperationSuffix)
X(szMercCompareWebSite)
X(szMercCompareEventText)
X(szWHOWebSite)
X(szPMCWebSite)
X(szTacticalInventoryDialogString)
X(szTacticalCoverDialogString)
X(szTacticalCoverDialogPrintString)
X(szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_DENY)
X(szDynamicDialogueText_DOST_VICTIM_TO_INTERJECTOR_AGREE)
X(szDynamicDialogueText_DOST_SIDEWITH_VICTIM)
X(szDynamicDialogueText_DOST_SIDEWITH_CAUSE)
X(szDynamicDialogueText_DOST_INTERJECTOR_DIALOGUESELECTION_SHORTTEXT)
X(szDynamicDialogueText_GenderText)
X(szDiseaseText)
X(szSpyText)
X(szFoodText)
X(szIMPGearWebSiteText)
X(szIMPGearPocketText)
X(szMilitiaStrategicMovementText)
X(szEnemyHeliText)
X(szFortificationText)
X(szMilitiaWebSite)
X(szIndividualMilitiaBattleReportText)
X(szIndividualMilitiaTraitRequirements)
X(szIdividualMilitiaWebsiteText)
X(szIdividualMilitiaWebsiteFilterText_Dead)
X(szIdividualMilitiaWebsiteFilterText_Rank)
X(szIdividualMilitiaWebsiteFilterText_Origin)
X(szIdividualMilitiaWebsiteFilterText_Sector)
X(szNonProfileMerchantText)
X(szWeatherTypeText)
X(szSnakeText)
X(szSMilitiaResourceText)
X(szInteractiveActionText)
X(szLaptopStatText)
X(szGearTemplateText)
X(szIntelWebsiteText)
X(szIntelText)
X(szChatTextSpy)
X(szChatTextEnemy)
X(szMilitiaText)
X(szFactoryText)
X(szTurncoatText)
X(szRebelCommandText)
X(szRebelCommandHelpText)
X(szRebelCommandAdminActionsText)
X(szRebelCommandDirectivesText)
X(szRebelCommandAgentMissionsText)
X(szRobotText)
X(gzIMPSkillTraitsText)
X(gzIMPSkillTraitsTextNewMajor)
X(gzIMPSkillTraitsTextNewMinor)
X(gzIMPMajorTraitsHelpTextsAutoWeapons)
X(gzIMPMajorTraitsHelpTextsHeavyWeapons)
X(gzIMPMajorTraitsHelpTextsSniper)
X(gzIMPMajorTraitsHelpTextsRanger)
X(gzIMPMajorTraitsHelpTextsGunslinger)
X(gzIMPMajorTraitsHelpTextsMartialArts)
X(gzIMPMajorTraitsHelpTextsSquadleader)
X(gzIMPMajorTraitsHelpTextsTechnician)
X(gzIMPMajorTraitsHelpTextsDoctor)
X(gzIMPMajorTraitsHelpTextsCovertOps)
X(gzIMPMajorTraitsHelpTextsRadioOperator)
X(gzIMPMajorTraitsHelpTextsNone)
X(gzIMPMinorTraitsHelpTextsAmbidextrous)
X(gzIMPMinorTraitsHelpTextsMelee)
X(gzIMPMinorTraitsHelpTextsThrowing)
X(gzIMPMinorTraitsHelpTextsStealthy)
X(gzIMPMinorTraitsHelpTextsNightOps)
X(gzIMPMinorTraitsHelpTextsAthletics)
X(gzIMPMinorTraitsHelpTextsBodybuilding)
X(gzIMPMinorTraitsHelpTextsDemolitions)
X(gzIMPMinorTraitsHelpTextsTeaching)
X(gzIMPMinorTraitsHelpTextsScouting)
X(gzIMPMinorTraitsHelpTextsSnitch)
X(gzIMPMajorTraitsHelpTextsSurvival)
X(gzIMPMinorTraitsHelpTextsNone)
X(gzIMPOldSkillTraitsHelpTexts)
X(gzIMPNewCharacterTraitsHelpTexts)
X(gzIMPDisabilitiesHelpTexts)
X(gzIMPProfileCostText)
X(zGioNewTraitsImpossibleText)
X(gzIronManModeWarningText)
X(gzDisplayCoverText)
X(ItemPickupHelpPopup)
X(TacticalStr)
X(LargeTacticalStr)
X(zDialogActions)
X(zDealerStrings)
X(zTalkMenuStrings)
X(gMoneyStatsDesc)
X(gWeaponStatsDesc)
X(zHealthStr)
X(szDynamicDialogueText)
X(pContractButtonString)
X(pUpdatePanelButtons)
X(gzIntroScreen)
X(sRepairsDoneString)
+12
View File
@@ -949,6 +949,18 @@ void GetRuntimeSettings( )
SGP_THROW_IFFALSE( setlocale(LC_ALL, loc.utf8().c_str()), _BS(L"invalid locale : ") << loc << _BS::wget ); SGP_THROW_IFFALSE( setlocale(LC_ALL, loc.utf8().c_str()), _BS(L"invalid locale : ") << loc << _BS::wget );
} }
vfs::String language = oProps.getStringProperty("Ja2 Settings", L"LANGUAGE");
if(!language.empty())
{
std::string languageName = language.utf8();
SetLanguageFromName(languageName);
}
// Rebind every language table pointer to the resolved g_lang. Unconditional:
// with no LANGUAGE key this binds the build default, matching the static
// lang_default initialization the pointers start with.
BindLanguageStrings(g_lang);
iResolution = (int)oProps.getIntProperty(L"Ja2 Settings", L"SCREEN_RESOLUTION", -1); iResolution = (int)oProps.getIntProperty(L"Ja2 Settings", L"SCREEN_RESOLUTION", -1);
// WANNE: Always enable // WANNE: Always enable