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
+1 -16
View File
@@ -1,23 +1,8 @@
set(i18nSrc
"${CMAKE_CURRENT_SOURCE_DIR}/language.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/LanguageStrings.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Ja2 Libs.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"
PARENT_SCOPE
)
+277 -280
View File
@@ -29,42 +29,39 @@ namespace Loc
//////////////////////////////////////////////////////////
//#define GERMAN
#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
# include "_ChineseText.cpp"
static Loc::Language gs_Lang = Loc::Chinese;
#endif
#ifdef DUTCH
# include "_DutchText.cpp"
static Loc::Language gs_Lang = Loc::Dutch;
#endif
#ifdef ENGLISH
# include "_EnglishText.cpp"
static Loc::Language gs_Lang = Loc::English;
#endif
#ifdef FRENCH
# include "_FrenchText.cpp"
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
Loc::Language ToLocLanguage(i18n::Lang lang)
{
switch (lang)
{
case i18n::Lang::zh: return Loc::Chinese;
case i18n::Lang::nl: return Loc::Dutch;
case i18n::Lang::en: return Loc::English;
case i18n::Lang::fr: return Loc::French;
case i18n::Lang::de: return Loc::German;
case i18n::Lang::it: return Loc::Italian;
case i18n::Lang::pl: return Loc::Polish;
case i18n::Lang::ru: return Loc::Russian;
}
return Loc::English;
}
}
#include "Assignments.h"
@@ -102,271 +99,271 @@ bool Loc::ExportStrings()
vfs::PropertyContainer props;
//not_required ExportSection(props, L"Ja2Credits", Loc::pCreditsJA2113, 0, 7);
ExportSection(props, L"WeaponType", Loc::WeaponType, 0, MAXITEMS);
ExportSection(props, L"TeamTurn", Loc::TeamTurnString, 0, 10);
ExportSection(props, L"Message", Loc::Message, 0, TEXT_NUM_STR_MESSAGE);
ExportSection(props, L"TownNames", Loc::pTownNames, 0, MAX_TOWNS);
ExportSection(props, L"Time", Loc::sTimeStrings, 0, 6);
ExportSection(props, L"Assignment", Loc::pAssignmentStrings, 0, NUM_ASSIGNMENTS);
ExportSection(props, L"PersonnelAssignment", Loc::pPersonnelAssignmentStrings, 0, NUM_ASSIGNMENTS);
ExportSection(props, L"LongAssignment", Loc::pLongAssignmentStrings, 0, NUM_ASSIGNMENTS);
ExportSection(props, L"Militia", Loc::pMilitiaString, 0, 3);
//not_required ExportSection(props, L"Ja2Credits", pCreditsJA2113, 0, 7);
ExportSection(props, L"WeaponType", WeaponType, 0, MAXITEMS);
ExportSection(props, L"TeamTurn", TeamTurnString, 0, 10);
ExportSection(props, L"Message", Message, 0, TEXT_NUM_STR_MESSAGE);
ExportSection(props, L"TownNames", pTownNames, 0, MAX_TOWNS);
ExportSection(props, L"Time", sTimeStrings, 0, 6);
ExportSection(props, L"Assignment", pAssignmentStrings, 0, NUM_ASSIGNMENTS);
ExportSection(props, L"PersonnelAssignment", pPersonnelAssignmentStrings, 0, NUM_ASSIGNMENTS);
ExportSection(props, L"LongAssignment", pLongAssignmentStrings, 0, NUM_ASSIGNMENTS);
ExportSection(props, L"Militia", pMilitiaString, 0, 3);
ExportSection(props, L"MilitiaButton", Loc::pMilitiaButtonString, 0, 2);
ExportSection(props, L"Condition", Loc::pConditionStrings, 0, 9);
ExportSection(props, L"EpcMenu", Loc::pEpcMenuStrings, 0, MAX_EPC_MENU_STRING_COUNT);
ExportSection(props, L"Contract", Loc::pContractStrings, 0, MAX_CONTRACT_MENU_STRING_COUNT);
ExportSection(props, L"POW", Loc::pPOWStrings, 0, 2);
ExportSection(props, L"InvPanelTitle", Loc::pInvPanelTitleStrings, 0, 5);
ExportSection(props, L"LongAttribute", Loc::pLongAttributeStrings, 0, 10);
ExportSection(props, L"ShortAttribute", Loc::pShortAttributeStrings, 0, 10);
ExportSection(props, L"UpperLeftMapScreen", Loc::pUpperLeftMapScreenStrings, 0, 6);
ExportSection(props, L"Training", Loc::pTrainingStrings, 0, 4);
ExportSection(props, L"MilitiaButton", pMilitiaButtonString, 0, 2);
ExportSection(props, L"Condition", pConditionStrings, 0, 9);
ExportSection(props, L"EpcMenu", pEpcMenuStrings, 0, MAX_EPC_MENU_STRING_COUNT);
ExportSection(props, L"Contract", pContractStrings, 0, MAX_CONTRACT_MENU_STRING_COUNT);
ExportSection(props, L"POW", pPOWStrings, 0, 2);
ExportSection(props, L"InvPanelTitle", pInvPanelTitleStrings, 0, 5);
ExportSection(props, L"LongAttribute", pLongAttributeStrings, 0, 10);
ExportSection(props, L"ShortAttribute", pShortAttributeStrings, 0, 10);
ExportSection(props, L"UpperLeftMapScreen", pUpperLeftMapScreenStrings, 0, 6);
ExportSection(props, L"Training", pTrainingStrings, 0, 4);
ExportSection(props, L"GuardMenu", Loc::pGuardMenuStrings, 0, 10);
ExportSection(props, L"OtherGuardMenu", Loc::pOtherGuardMenuStrings, 0, 10);
ExportSection(props, L"AssignMenu", Loc::pAssignMenuStrings, 0, MAX_ASSIGN_STRING_COUNT);
ExportSection(props, L"MilitiaControlMenu", Loc::pMilitiaControlMenuStrings, 0, MAX_MILCON_STRING_COUNT);
ExportSection(props, L"RemoveMerc", Loc::pRemoveMercStrings, 0, MAX_REMOVE_MERC_COUNT);
ExportSection(props, L"AttributeMenu", Loc::pAttributeMenuStrings, 0, MAX_ATTRIBUTE_STRING_COUNT);
ExportSection(props, L"TrainingMenu", Loc::pTrainingMenuStrings, 0, MAX_TRAIN_STRING_COUNT);
ExportSection(props, L"SquadMenu", Loc::pSquadMenuStrings, 0, MAX_SQUAD_MENU_STRING_COUNT);
ExportSection(props, L"GuardMenu", pGuardMenuStrings, 0, 10);
ExportSection(props, L"OtherGuardMenu", pOtherGuardMenuStrings, 0, 10);
ExportSection(props, L"AssignMenu", pAssignMenuStrings, 0, MAX_ASSIGN_STRING_COUNT);
ExportSection(props, L"MilitiaControlMenu", pMilitiaControlMenuStrings, 0, MAX_MILCON_STRING_COUNT);
ExportSection(props, L"RemoveMerc", pRemoveMercStrings, 0, MAX_REMOVE_MERC_COUNT);
ExportSection(props, L"AttributeMenu", pAttributeMenuStrings, 0, MAX_ATTRIBUTE_STRING_COUNT);
ExportSection(props, L"TrainingMenu", pTrainingMenuStrings, 0, MAX_TRAIN_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"SnitchMenuDesc", Loc::pSnitchMenuDescStrings, 0, MAX_SNITCH_MENU_STRING_COUNT-1);
ExportSection(props, L"SnitchToggleMenu", Loc::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"SnitchSectorMenu", Loc::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"PrisonerMenu", Loc::pPrisonerMenuStrings, 0, MAX_PRISONER_MENU_STRING_COUNT );
ExportSection(props, L"PrisonerMenuDesc", Loc::pPrisonerMenuDescStrings, 0, MAX_PRISONER_MENU_STRING_COUNT - 1 );
ExportSection(props, L"SnitchPrisonExposed", Loc::pSnitchPrisonExposedStrings, 0, NUM_SNITCH_PRISON_EXPOSED);
ExportSection(props, L"SnitchGatheringRumoursResult", Loc::pSnitchGatheringRumoursResultStrings, 0, NUM_SNITCH_GATHERING_RUMOURS_RESULT);
ExportSection(props, L"SnitchMenu", pSnitchMenuStrings, 0, MAX_SNITCH_MENU_STRING_COUNT);
ExportSection(props, L"SnitchMenuDesc", pSnitchMenuDescStrings, 0, MAX_SNITCH_MENU_STRING_COUNT-1);
ExportSection(props, L"SnitchToggleMenu", pSnitchToggleMenuStrings, 0, MAX_SNITCH_TOGGLE_MENU_STRING_COUNT);
ExportSection(props, L"SnitchToggleMenuDesc", pSnitchToggleMenuDescStrings, 0, MAX_SNITCH_TOGGLE_MENU_STRING_COUNT-1);
ExportSection(props, L"SnitchSectorMenu", pSnitchSectorMenuStrings, 0, MAX_SNITCH_SECTOR_MENU_STRING_COUNT);
ExportSection(props, L"SnitchSectorMenuDesc", pSnitchSectorMenuDescStrings, 0, MAX_SNITCH_SECTOR_MENU_STRING_COUNT-1);
ExportSection(props, L"PrisonerMenu", pPrisonerMenuStrings, 0, MAX_PRISONER_MENU_STRING_COUNT );
ExportSection(props, L"PrisonerMenuDesc", pPrisonerMenuDescStrings, 0, MAX_PRISONER_MENU_STRING_COUNT - 1 );
ExportSection(props, L"SnitchPrisonExposed", pSnitchPrisonExposedStrings, 0, NUM_SNITCH_PRISON_EXPOSED);
ExportSection(props, L"SnitchGatheringRumoursResult", pSnitchGatheringRumoursResultStrings, 0, NUM_SNITCH_GATHERING_RUMOURS_RESULT);
ExportSection(props, L"PersonnelTitle", Loc::pPersonnelTitle, 0, 1);
ExportSection(props, L"PersonnelScreen", Loc::pPersonnelScreenStrings, 0, TEXT_NUM_PRSNL);
ExportSection(props, L"PersonnelTitle", pPersonnelTitle, 0, 1);
ExportSection(props, L"PersonnelScreen", pPersonnelScreenStrings, 0, TEXT_NUM_PRSNL);
ExportSection(props, L"MercSkill", Loc::gzMercSkillText, 0, NUM_SKILLTRAITS_OT);
ExportSection(props, L"TacticalPopupButton", Loc::pTacticalPopupButtonStrings, 0, NUM_ICONS);
ExportSection(props, L"DoorTrap", Loc::pDoorTrapStrings, 0, NUM_DOOR_TRAPS);
ExportSection(props, L"ContractExtend", Loc::pContractExtendStrings, 0, NUM_CONTRACT_EXTEND);
ExportSection(props, L"MapScreenMouseRegionHelp", Loc::pMapScreenMouseRegionHelpText, 0, 6);
ExportSection(props, L"NoiseVol", Loc::pNoiseVolStr, 0, 4);
ExportSection(props, L"NoiseType", Loc::pNoiseTypeStr, 0, 12);
ExportSection(props, L"Direction", Loc::pDirectionStr, 0, 8);
ExportSection(props, L"LandType", Loc::pLandTypeStrings, 0, NUM_TRAVTERRAIN_TYPES);
ExportSection(props, L"Strategic", Loc::gpStrategicString, 0, TEXT_NUM_STRATEGIC_TEXT);
ExportSection(props, L"MercSkill", gzMercSkillText, 0, NUM_SKILLTRAITS_OT);
ExportSection(props, L"TacticalPopupButton", pTacticalPopupButtonStrings, 0, NUM_ICONS);
ExportSection(props, L"DoorTrap", pDoorTrapStrings, 0, NUM_DOOR_TRAPS);
ExportSection(props, L"ContractExtend", pContractExtendStrings, 0, NUM_CONTRACT_EXTEND);
ExportSection(props, L"MapScreenMouseRegionHelp", pMapScreenMouseRegionHelpText, 0, 6);
ExportSection(props, L"NoiseVol", pNoiseVolStr, 0, 4);
ExportSection(props, L"NoiseType", pNoiseTypeStr, 0, 12);
ExportSection(props, L"Direction", pDirectionStr, 0, 8);
ExportSection(props, L"LandType", pLandTypeStrings, 0, NUM_TRAVTERRAIN_TYPES);
ExportSection(props, L"Strategic", gpStrategicString, 0, TEXT_NUM_STRATEGIC_TEXT);
ExportSection(props, L"GameClock", Loc::gpGameClockString, 0, TEXT_NUM_GAMECLOCK);
ExportSection(props, L"KeyDescription", Loc::sKeyDescriptionStrings, 0, 2);
ExportSection(props, L"WeaponStatsDesc", Loc::gWeaponStatsDesc, 0, 17);
ExportSection(props, L"WeaponStatsFasthelpTactical",Loc::gzWeaponStatsFasthelpTactical, 0, 29);
ExportSection(props, L"MiscItemStatsFasthelp", Loc::gzMiscItemStatsFasthelp, 0, 34);
ExportSection(props, L"MoneyStatsDesc", Loc::gMoneyStatsDesc, 0, TEXT_NUM_MONEY_DESC);
ExportSection(props, L"GameClock", gpGameClockString, 0, TEXT_NUM_GAMECLOCK);
ExportSection(props, L"KeyDescription", sKeyDescriptionStrings, 0, 2);
ExportSection(props, L"WeaponStatsDesc", gWeaponStatsDesc, 0, 17);
ExportSection(props, L"WeaponStatsFasthelpTactical",gzWeaponStatsFasthelpTactical, 0, 29);
ExportSection(props, L"MiscItemStatsFasthelp", gzMiscItemStatsFasthelp, 0, 34);
ExportSection(props, L"MoneyStatsDesc", gMoneyStatsDesc, 0, TEXT_NUM_MONEY_DESC);
ExportSection(props, L"Health", Loc::zHealthStr, 0, 7);
ExportSection(props, L"MoneyAmounts", Loc::gzMoneyAmounts, 0, 6);
ExportSection(props, L"ProsLabel", Loc::gzProsLabel, 0, 1);
ExportSection(props, L"ConsLabel", Loc::gzConsLabel, 0, 1);
ExportSection(props, L"TalkMenu", Loc::zTalkMenuStrings, 0, 6);
ExportSection(props, L"Dealer", Loc::zDealerStrings, 0, 4);
ExportSection(props, L"DialogActions", Loc::zDialogActions, 0, 1);
ExportSection(props, L"Vehicle", Loc::pVehicleStrings, 0, 6);
ExportSection(props, L"ShortVehicle", Loc::pShortVehicleStrings, 0, 6);
ExportSection(props, L"VehicleName", Loc::zVehicleName, 0, 6);
ExportSection(props, L"VehicleSeatsStrings", Loc::pVehicleSeatsStrings, 0, 2);
ExportSection(props, L"Health", zHealthStr, 0, 7);
ExportSection(props, L"MoneyAmounts", gzMoneyAmounts, 0, 6);
ExportSection(props, L"ProsLabel", gzProsLabel, 0, 1);
ExportSection(props, L"ConsLabel", gzConsLabel, 0, 1);
ExportSection(props, L"TalkMenu", zTalkMenuStrings, 0, 6);
ExportSection(props, L"Dealer", zDealerStrings, 0, 4);
ExportSection(props, L"DialogActions", zDialogActions, 0, 1);
ExportSection(props, L"Vehicle", pVehicleStrings, 0, 6);
ExportSection(props, L"ShortVehicle", pShortVehicleStrings, 0, 6);
ExportSection(props, L"VehicleName", zVehicleName, 0, 6);
ExportSection(props, L"VehicleSeatsStrings", pVehicleSeatsStrings, 0, 2);
ExportSection(props, L"Tactical", Loc::TacticalStr, 0, TEXT_NUM_TACTICAL_STR);
ExportSection(props, L"ExitingSectorHelp", Loc::pExitingSectorHelpText, 0, TEXT_NUM_EXIT_GUI);
ExportSection(props, L"Repair", Loc::pRepairStrings, 0, 4);
ExportSection(props, L"PreStatBuild", Loc::sPreStatBuildString, 0, 6);
ExportSection(props, L"StatGain", Loc::sStatGainStrings, 0, 11);
ExportSection(props, L"HelicopterEta", Loc::pHelicopterEtaStrings, 0, TEXT_NUM_STR_HELI_ETA);
ExportSection(props, L"HelicopterRepair", Loc::pHelicopterRepairRefuelStrings, 0, TEXT_NUM_STR_HELI_REPAIRS);
ExportSection(props, L"MapLevel", Loc::sMapLevelString, 0, 1);
ExportSection(props, L"Loyal", Loc::gsLoyalString, 0, 1);
ExportSection(props, L"Underground", Loc::gsUndergroundString, 0, 1);
ExportSection(props, L"TimeStings", Loc::gsTimeStrings, 0, 1);
ExportSection(props, L"Tactical", TacticalStr, 0, TEXT_NUM_TACTICAL_STR);
ExportSection(props, L"ExitingSectorHelp", pExitingSectorHelpText, 0, TEXT_NUM_EXIT_GUI);
ExportSection(props, L"Repair", pRepairStrings, 0, 4);
ExportSection(props, L"PreStatBuild", sPreStatBuildString, 0, 6);
ExportSection(props, L"StatGain", sStatGainStrings, 0, 11);
ExportSection(props, L"HelicopterEta", pHelicopterEtaStrings, 0, TEXT_NUM_STR_HELI_ETA);
ExportSection(props, L"HelicopterRepair", pHelicopterRepairRefuelStrings, 0, TEXT_NUM_STR_HELI_REPAIRS);
ExportSection(props, L"MapLevel", sMapLevelString, 0, 1);
ExportSection(props, L"Loyal", gsLoyalString, 0, 1);
ExportSection(props, L"Underground", gsUndergroundString, 0, 1);
ExportSection(props, L"TimeStings", gsTimeStrings, 0, 1);
ExportSection(props, L"Facilities", Loc::sFacilitiesStrings, 0, 7);
ExportSection(props, L"MapPopUpInventory", Loc::pMapPopUpInventoryText, 0, 2);
ExportSection(props, L"TownInfo", Loc::pwTownInfoStrings, 0, 12);
ExportSection(props, L"Mine", Loc::pwMineStrings, 0, 14);
ExportSection(props, L"MiscSector", Loc::pwMiscSectorStrings, 0, 7);
ExportSection(props, L"MapInventoryError", Loc::pMapInventoryErrorString, 0, 7);
ExportSection(props, L"MapInventory", Loc::pMapInventoryStrings, 0, 2);
ExportSection(props, L"MapScreenFastHelp", Loc::pMapScreenFastHelpTextList, 0, 10);
ExportSection(props, L"MovementMenu", Loc::pMovementMenuStrings, 0, 4);
ExportSection(props, L"UpdateMerc", Loc::pUpdateMercStrings, 0, 6);
ExportSection(props, L"Facilities", sFacilitiesStrings, 0, 7);
ExportSection(props, L"MapPopUpInventory", pMapPopUpInventoryText, 0, 2);
ExportSection(props, L"TownInfo", pwTownInfoStrings, 0, 12);
ExportSection(props, L"Mine", pwMineStrings, 0, 14);
ExportSection(props, L"MiscSector", pwMiscSectorStrings, 0, 7);
ExportSection(props, L"MapInventoryError", pMapInventoryErrorString, 0, 7);
ExportSection(props, L"MapInventory", pMapInventoryStrings, 0, 2);
ExportSection(props, L"MapScreenFastHelp", pMapScreenFastHelpTextList, 0, 10);
ExportSection(props, L"MovementMenu", pMovementMenuStrings, 0, 4);
ExportSection(props, L"UpdateMerc", pUpdateMercStrings, 0, 6);
ExportSection(props, L"MapScreenBorderButtonHelp", Loc::pMapScreenBorderButtonHelpText,0, 6);
ExportSection(props, L"MapScreenBottomFastHelp", Loc::pMapScreenBottomFastHelp, 0, 8);
ExportSection(props, L"MapScreenBottom", Loc::pMapScreenBottomText, 0, 1);
ExportSection(props, L"MercDead", Loc::pMercDeadString, 0, 1);
ExportSection(props, L"Day", Loc::pDayStrings, 0, 1);
ExportSection(props, L"SenderName", Loc::pSenderNameList, 0, 51);
ExportSection(props, L"Traverse", Loc::pTraverseStrings, 0, 2);
ExportSection(props, L"NewMail", Loc::pNewMailStrings, 0, 1);
ExportSection(props, L"DeleteMail", Loc::pDeleteMailStrings, 0, 2);
ExportSection(props, L"EmailHeader", Loc::pEmailHeaders, 0, 3);
ExportSection(props, L"MapScreenBorderButtonHelp", pMapScreenBorderButtonHelpText,0, 6);
ExportSection(props, L"MapScreenBottomFastHelp", pMapScreenBottomFastHelp, 0, 8);
ExportSection(props, L"MapScreenBottom", pMapScreenBottomText, 0, 1);
ExportSection(props, L"MercDead", pMercDeadString, 0, 1);
ExportSection(props, L"Day", pDayStrings, 0, 1);
ExportSection(props, L"SenderName", pSenderNameList, 0, 51);
ExportSection(props, L"Traverse", pTraverseStrings, 0, 2);
ExportSection(props, L"NewMail", pNewMailStrings, 0, 1);
ExportSection(props, L"DeleteMail", pDeleteMailStrings, 0, 2);
ExportSection(props, L"EmailHeader", pEmailHeaders, 0, 3);
ExportSection(props, L"EmailTitle", Loc::pEmailTitleText, 0, 1);
ExportSection(props, L"FinanceTitle", Loc::pFinanceTitle, 0, 1);
ExportSection(props, L"FinanceSummary", Loc::pFinanceSummary, 0, 12);
ExportSection(props, L"FinanceHeader", Loc::pFinanceHeaders, 0, 7);
ExportSection(props, L"Transaction", Loc::pTransactionText, 0, TEXT_NUM_FINCANCES);
ExportSection(props, L"TransactionAlternate", Loc::pTransactionAlternateText, 0, 4);
ExportSection(props, L"Skyrider", Loc::pSkyriderText, 0, 7);
ExportSection(props, L"Moral", Loc::pMoralStrings, 0, 6);
ExportSection(props, L"LeftEquipment", Loc::pLeftEquipmentString, 0, 2);
ExportSection(props, L"MapScreenStatus", Loc::pMapScreenStatusStrings, 0, 5);
ExportSection(props, L"EmailTitle", pEmailTitleText, 0, 1);
ExportSection(props, L"FinanceTitle", pFinanceTitle, 0, 1);
ExportSection(props, L"FinanceSummary", pFinanceSummary, 0, 12);
ExportSection(props, L"FinanceHeader", pFinanceHeaders, 0, 7);
ExportSection(props, L"Transaction", pTransactionText, 0, TEXT_NUM_FINCANCES);
ExportSection(props, L"TransactionAlternate", pTransactionAlternateText, 0, 4);
ExportSection(props, L"Skyrider", pSkyriderText, 0, 7);
ExportSection(props, L"Moral", pMoralStrings, 0, 6);
ExportSection(props, L"LeftEquipment", pLeftEquipmentString, 0, 2);
ExportSection(props, L"MapScreenStatus", pMapScreenStatusStrings, 0, 5);
ExportSection(props, L"MapScreenPrevNextCharButtonHelp", Loc::pMapScreenPrevNextCharButtonHelpText, 0, 2);
ExportSection(props, L"Eta", Loc::pEtaString, 0, 1);
ExportSection(props, L"TrashItem", Loc::pTrashItemText, 0, 2);
ExportSection(props, L"MapError", Loc::pMapErrorString, 0, 50);
ExportSection(props, L"MapPlot", Loc::pMapPlotStrings, 0, 5);
ExportSection(props, L"Bullseye", Loc::pBullseyeStrings, 0, 5);
ExportSection(props, L"MiscMapScreenMouseRegionHelp", Loc::pMiscMapScreenMouseRegionHelpText, 0, 3);
ExportSection(props, L"MercHeLeave", Loc::pMercHeLeaveString, 0, 5);
ExportSection(props, L"MercSheLeave", Loc::pMercSheLeaveString, 0, 5);
ExportSection(props, L"MercContractOver", Loc::pMercContractOverStrings, 0, 5);
ExportSection(props, L"MapScreenPrevNextCharButtonHelp", pMapScreenPrevNextCharButtonHelpText, 0, 2);
ExportSection(props, L"Eta", pEtaString, 0, 1);
ExportSection(props, L"TrashItem", pTrashItemText, 0, 2);
ExportSection(props, L"MapError", pMapErrorString, 0, 50);
ExportSection(props, L"MapPlot", pMapPlotStrings, 0, 5);
ExportSection(props, L"Bullseye", pBullseyeStrings, 0, 5);
ExportSection(props, L"MiscMapScreenMouseRegionHelp", pMiscMapScreenMouseRegionHelpText, 0, 3);
ExportSection(props, L"MercHeLeave", pMercHeLeaveString, 0, 5);
ExportSection(props, L"MercSheLeave", pMercSheLeaveString, 0, 5);
ExportSection(props, L"MercContractOver", pMercContractOverStrings, 0, 5);
ExportSection(props, L"ImpPopUp", Loc::pImpPopUpStrings, 0, 12);
ExportSection(props, L"ImpButton", Loc::pImpButtonText, 0, 26);
ExportSection(props, L"ExtraIMP", Loc::pExtraIMPStrings, 0, 4);
ExportSection(props, L"FilesTitle", Loc::pFilesTitle, 0, 1);
ExportSection(props, L"FilesSender", Loc::pFilesSenderList, 0, 7);
ExportSection(props, L"HistoryTitle", Loc::pHistoryTitle, 0, 1);
ExportSection(props, L"HistoryHeader", Loc::pHistoryHeaders, 0, 5);
//ExportSection(props, L"History", Loc::pHistoryStrings, 0, TEXT_NUM_HISTORY);
ExportSection(props, L"HistoryLocation", Loc::pHistoryLocations, 0, 1);
ExportSection(props, L"LaptopIcon", Loc::pLaptopIcons, 0, 8);
ExportSection(props, L"ImpPopUp", pImpPopUpStrings, 0, 12);
ExportSection(props, L"ImpButton", pImpButtonText, 0, 26);
ExportSection(props, L"ExtraIMP", pExtraIMPStrings, 0, 4);
ExportSection(props, L"FilesTitle", pFilesTitle, 0, 1);
ExportSection(props, L"FilesSender", pFilesSenderList, 0, 7);
ExportSection(props, L"HistoryTitle", pHistoryTitle, 0, 1);
ExportSection(props, L"HistoryHeader", pHistoryHeaders, 0, 5);
//ExportSection(props, L"History", pHistoryStrings, 0, TEXT_NUM_HISTORY);
ExportSection(props, L"HistoryLocation", pHistoryLocations, 0, 1);
ExportSection(props, L"LaptopIcon", pLaptopIcons, 0, 8);
ExportSection(props, L"BookMark", Loc::pBookMarkStrings, 0, TEXT_NUM_LAPTOP_BOOKMARKS);
ExportSection(props, L"BookmarkTitle", Loc::pBookmarkTitle, 0, 2);
ExportSection(props, L"Download", Loc::pDownloadString, 0, 2);
ExportSection(props, L"AtmStartButton", Loc::gsAtmStartButtonText, 0, 4);
ExportSection(props, L"Error", Loc::pErrorStrings, 0, 5);
ExportSection(props, L"Personnel", Loc::pPersonnelString, 0, 1);
ExportSection(props, L"WebTitle", Loc::pWebTitle, 0, 1);
ExportSection(props, L"WebPagesTitle", Loc::pWebPagesTitles, 0, 36);
ExportSection(props, L"BookMark", pBookMarkStrings, 0, TEXT_NUM_LAPTOP_BOOKMARKS);
ExportSection(props, L"BookmarkTitle", pBookmarkTitle, 0, 2);
ExportSection(props, L"Download", pDownloadString, 0, 2);
ExportSection(props, L"AtmStartButton", gsAtmStartButtonText, 0, 4);
ExportSection(props, L"Error", pErrorStrings, 0, 5);
ExportSection(props, L"Personnel", pPersonnelString, 0, 1);
ExportSection(props, L"WebTitle", pWebTitle, 0, 1);
ExportSection(props, L"WebPagesTitle", pWebPagesTitles, 0, 36);
ExportSection(props, L"ShowBookmark", Loc::pShowBookmarkString, 0, 2);
ExportSection(props, L"LaptopTitle", Loc::pLaptopTitles, 0, 5);
ExportSection(props, L"PersonnelDepartedState", Loc::pPersonnelDepartedStateStrings, 0, TEXT_NUM_DEPARTED);
ExportSection(props, L"PersonelTeam", Loc::pPersonelTeamStrings, 0, 8);
ExportSection(props, L"PersonnelCurrentTeamStats", Loc::pPersonnelCurrentTeamStatsStrings, 0, 3);
ExportSection(props, L"PersonnelTeamStats", Loc::pPersonnelTeamStatsStrings, 0, 11);
ExportSection(props, L"MapVertIndex", Loc::pMapVertIndex, 0, 17);
ExportSection(props, L"MapHortIndex", Loc::pMapHortIndex, 0, 17);
ExportSection(props, L"MapDepthIndex", Loc::pMapDepthIndex, 0, 4);
ExportSection(props, L"ContractButton", Loc::pContractButtonString, 0, 1);
ExportSection(props, L"ShowBookmark", pShowBookmarkString, 0, 2);
ExportSection(props, L"LaptopTitle", pLaptopTitles, 0, 5);
ExportSection(props, L"PersonnelDepartedState", pPersonnelDepartedStateStrings, 0, TEXT_NUM_DEPARTED);
ExportSection(props, L"PersonelTeam", pPersonelTeamStrings, 0, 8);
ExportSection(props, L"PersonnelCurrentTeamStats", pPersonnelCurrentTeamStatsStrings, 0, 3);
ExportSection(props, L"PersonnelTeamStats", pPersonnelTeamStatsStrings, 0, 11);
ExportSection(props, L"MapVertIndex", pMapVertIndex, 0, 17);
ExportSection(props, L"MapHortIndex", pMapHortIndex, 0, 17);
ExportSection(props, L"MapDepthIndex", pMapDepthIndex, 0, 4);
ExportSection(props, L"ContractButton", pContractButtonString, 0, 1);
ExportSection(props, L"UpdatePanelButton", Loc::pUpdatePanelButtons, 0, 2);
ExportSection(props, L"LargeTactical", Loc::LargeTacticalStr, 0, TEXT_NUM_LARGESTR);
ExportSection(props, L"InsContract", Loc::InsContractText, 0, TEXT_NUM_INS_CONTRACT);
ExportSection(props, L"InsInfo", Loc::InsInfoText, 0, TEXT_NUM_INS_INFO);
ExportSection(props, L"MercAccount", Loc::MercAccountText, 0, TEXT_NUM_MERC_ACCOUNT);
ExportSection(props, L"MercAccountPage", Loc::MercAccountPageText, 0, 2);
ExportSection(props, L"MercInfo", Loc::MercInfo, 0, TEXT_NUM_MERC_FILES);
ExportSection(props, L"MercNoAccount", Loc::MercNoAccountText, 0, TEXT_NUM_MERC_NO_ACC);
ExportSection(props, L"MercHomePage", Loc::MercHomePageText, 0, TEXT_NUM_MERC);
ExportSection(props, L"Funeral", Loc::sFuneralString, 0, TEXT_NUM_FUNERAL);
ExportSection(props, L"UpdatePanelButton", pUpdatePanelButtons, 0, 2);
ExportSection(props, L"LargeTactical", LargeTacticalStr, 0, TEXT_NUM_LARGESTR);
ExportSection(props, L"InsContract", InsContractText, 0, TEXT_NUM_INS_CONTRACT);
ExportSection(props, L"InsInfo", InsInfoText, 0, TEXT_NUM_INS_INFO);
ExportSection(props, L"MercAccount", MercAccountText, 0, TEXT_NUM_MERC_ACCOUNT);
ExportSection(props, L"MercAccountPage", MercAccountPageText, 0, 2);
ExportSection(props, L"MercInfo", MercInfo, 0, TEXT_NUM_MERC_FILES);
ExportSection(props, L"MercNoAccount", MercNoAccountText, 0, TEXT_NUM_MERC_NO_ACC);
ExportSection(props, L"MercHomePage", MercHomePageText, 0, TEXT_NUM_MERC);
ExportSection(props, L"Funeral", sFuneralString, 0, TEXT_NUM_FUNERAL);
ExportSection(props, L"Florist", Loc::sFloristText, 0, TEXT_NUM_FLORIST);
ExportSection(props, L"OrderForm", Loc::sOrderFormText, 0, TEXT_NUM_FLORIST_ORDER);
ExportSection(props, L"FloristGallery", Loc::sFloristGalleryText, 0, TEXT_NUM_FLORIST_GALLERY);
ExportSection(props, L"FloristCards", Loc::sFloristCards, 0, TEXT_NUM_FLORIST_CARDS);
ExportSection(props, L"BobbyROrderForm", Loc::BobbyROrderFormText, 0, TEXT_NUM_BOBBYR_MAILORDER);
ExportSection(props, L"BobbyRFilter", Loc::BobbyRFilter, 0, TEXT_NUM_BOBBYR_FILTER);
ExportSection(props, L"BobbyR", Loc::BobbyRText, 0, TEXT_NUM_BOBBYR_GUNS);
ExportSection(props, L"BobbyRaysFront", Loc::BobbyRaysFrontText, 0, TEXT_NUM_BOBBYR);
ExportSection(props, L"AimSort", Loc::AimSortText, 0, TEXT_NUM_AIM_SORT);
ExportSection(props, L"AimPolicy", Loc::AimPolicyText, 0, TEXT_NUM_AIM_POLICIES);
ExportSection(props, L"Florist", sFloristText, 0, TEXT_NUM_FLORIST);
ExportSection(props, L"OrderForm", sOrderFormText, 0, TEXT_NUM_FLORIST_ORDER);
ExportSection(props, L"FloristGallery", sFloristGalleryText, 0, TEXT_NUM_FLORIST_GALLERY);
ExportSection(props, L"FloristCards", sFloristCards, 0, TEXT_NUM_FLORIST_CARDS);
ExportSection(props, L"BobbyROrderForm", BobbyROrderFormText, 0, TEXT_NUM_BOBBYR_MAILORDER);
ExportSection(props, L"BobbyRFilter", BobbyRFilter, 0, TEXT_NUM_BOBBYR_FILTER);
ExportSection(props, L"BobbyR", BobbyRText, 0, TEXT_NUM_BOBBYR_GUNS);
ExportSection(props, L"BobbyRaysFront", BobbyRaysFrontText, 0, TEXT_NUM_BOBBYR);
ExportSection(props, L"AimSort", AimSortText, 0, TEXT_NUM_AIM_SORT);
ExportSection(props, L"AimPolicy", AimPolicyText, 0, TEXT_NUM_AIM_POLICIES);
ExportSection(props, L"AimMember", Loc::AimMemberText, 0, 4);
ExportSection(props, L"CharacterInfo", Loc::CharacterInfo, 0, TEXT_NUM_AIM_MEMBER_CHARINFO);
ExportSection(props, L"VideoConfercing", Loc::VideoConfercingText, 0, TEXT_NUM_AIM_MEMBER_VCONF);
ExportSection(props, L"AimPopUp", Loc::AimPopUpText, 0, TEXT_NUM_AIM_MEMBER_POPUP);
ExportSection(props, L"AimLink", Loc::AimLinkText, 0, TEXM_NUM_AIM_LINK);
ExportSection(props, L"AimHistory", Loc::AimHistoryText, 0, TEXT_NUM_AIM_HISTORY);
ExportSection(props, L"AimFi", Loc::AimFiText, 0, TEXT_NUM_AIM_FI);
ExportSection(props, L"AimAlumni", Loc::AimAlumniText, 0, TEXT_NUM_AIM_ALUMNI);
ExportSection(props, L"AimScreen", Loc::AimScreenText, 0, TEXT_NUM_AIM_SCREEN);
ExportSection(props, L"AimBottomMenu", Loc::AimBottomMenuText, 0, TEXT_NUM_AIM_MENU);
ExportSection(props, L"AimMember", AimMemberText, 0, 4);
ExportSection(props, L"CharacterInfo", CharacterInfo, 0, TEXT_NUM_AIM_MEMBER_CHARINFO);
ExportSection(props, L"VideoConfercing", VideoConfercingText, 0, TEXT_NUM_AIM_MEMBER_VCONF);
ExportSection(props, L"AimPopUp", AimPopUpText, 0, TEXT_NUM_AIM_MEMBER_POPUP);
ExportSection(props, L"AimLink", AimLinkText, 0, TEXM_NUM_AIM_LINK);
ExportSection(props, L"AimHistory", AimHistoryText, 0, TEXT_NUM_AIM_HISTORY);
ExportSection(props, L"AimFi", AimFiText, 0, TEXT_NUM_AIM_FI);
ExportSection(props, L"AimAlumni", AimAlumniText, 0, TEXT_NUM_AIM_ALUMNI);
ExportSection(props, L"AimScreen", AimScreenText, 0, TEXT_NUM_AIM_SCREEN);
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"SkiAtm", Loc::SkiAtmText, 0, NUM_SKI_ATM_BUTTONS);
ExportSection(props, L"SkiAtmText", Loc::gzSkiAtmText, 0, TEXT_NUM_SKI_ATM_MODE_TEXT);
ExportSection(props, L"SkiMessageBox", Loc::SkiMessageBoxText, 0, TEXT_NUM_SKI_MBOX_TEXT);
ExportSection(props, L"Options", Loc::zOptionsText, 0, TEXT_NUM_OPT_TEXT);
ExportSection(props, L"SaveLoad", Loc::zSaveLoadText, 0, TEXT_NUM_SLG_TEXT);
ExportSection(props, L"MarksMapScreen", Loc::zMarksMapScreenText, 0, 25);
ExportSection(props, L"LandMarkInSector", Loc::pLandMarkInSectorString, 0, 1);
ExportSection(props, L"MilitiaConfirm", Loc::pMilitiaConfirmStrings, 0, 11);
ExportSection(props, L"MoneyWithdrawMessage", Loc::gzMoneyWithdrawMessageText, 0, TEXT_NUM_MONEY_WITHDRAW);
ExportSection(props, L"SKI", SKI_Text, 0, TEXT_NUM_SKI_TEXT);
ExportSection(props, L"SkiAtm", SkiAtmText, 0, NUM_SKI_ATM_BUTTONS);
ExportSection(props, L"SkiAtmText", gzSkiAtmText, 0, TEXT_NUM_SKI_ATM_MODE_TEXT);
ExportSection(props, L"SkiMessageBox", SkiMessageBoxText, 0, TEXT_NUM_SKI_MBOX_TEXT);
ExportSection(props, L"Options", zOptionsText, 0, TEXT_NUM_OPT_TEXT);
ExportSection(props, L"SaveLoad", zSaveLoadText, 0, TEXT_NUM_SLG_TEXT);
ExportSection(props, L"MarksMapScreen", zMarksMapScreenText, 0, 25);
ExportSection(props, L"LandMarkInSector", pLandMarkInSectorString, 0, 1);
ExportSection(props, L"MilitiaConfirm", pMilitiaConfirmStrings, 0, 11);
ExportSection(props, L"MoneyWithdrawMessage", gzMoneyWithdrawMessageText, 0, TEXT_NUM_MONEY_WITHDRAW);
ExportSection(props, L"Copyright", Loc::gzCopyrightText, 0, 1);
ExportSection(props, L"OptionsToggle", Loc::zOptionsToggleText, 0, 49);
ExportSection(props, L"OptionsScreenHelp", Loc::zOptionsScreenHelpText, 0, 49);
ExportSection(props, L"GIOScreen", Loc::gzGIOScreenText, 0, TEXT_NUM_GIO_TEXT);
ExportSection(props, L"MPJScreen", Loc::gzMPJScreenText, 0, TEXT_NUM_MPJ_TEXT);
ExportSection(props, L"MPJHelpText", Loc::gzMPJHelpText, 0, 10);
ExportSection(props, L"MPHScreen", Loc::gzMPHScreenText, 0, TEXT_NUM_MPH_TEXT);
ExportSection(props, L"DeliveryLocation", Loc::pDeliveryLocationStrings, 0, 17);
ExportSection(props, L"SkillAtZeroWarning", Loc::pSkillAtZeroWarning, 0, 1);
ExportSection(props, L"IMPBeginScreen", Loc::pIMPBeginScreenStrings, 0, 1);
ExportSection(props, L"IMPFinishButton", Loc::pIMPFinishButtonText, 0, 1);
ExportSection(props, L"Copyright", gzCopyrightText, 0, 1);
ExportSection(props, L"OptionsToggle", zOptionsToggleText, 0, 49);
ExportSection(props, L"OptionsScreenHelp", zOptionsScreenHelpText, 0, 49);
ExportSection(props, L"GIOScreen", gzGIOScreenText, 0, TEXT_NUM_GIO_TEXT);
ExportSection(props, L"MPJScreen", gzMPJScreenText, 0, TEXT_NUM_MPJ_TEXT);
ExportSection(props, L"MPJHelpText", gzMPJHelpText, 0, 10);
ExportSection(props, L"MPHScreen", gzMPHScreenText, 0, TEXT_NUM_MPH_TEXT);
ExportSection(props, L"DeliveryLocation", pDeliveryLocationStrings, 0, 17);
ExportSection(props, L"SkillAtZeroWarning", pSkillAtZeroWarning, 0, 1);
ExportSection(props, L"IMPBeginScreen", pIMPBeginScreenStrings, 0, 1);
ExportSection(props, L"IMPFinishButton", pIMPFinishButtonText, 0, 1);
ExportSection(props, L"IMPFinish", Loc::pIMPFinishStrings, 0, 1);
ExportSection(props, L"IMPVoices", Loc::pIMPVoicesStrings, 0, 1);
ExportSection(props, L"DepartedMercPortrait", Loc::pDepartedMercPortraitStrings, 0, 3);
ExportSection(props, L"PersTitle", Loc::pPersTitleText, 0, 1);
ExportSection(props, L"PausedGame", Loc::pPausedGameText, 0, 3);
ExportSection(props, L"MessageStrings", Loc::pMessageStrings, 0, TEXT_NUM_MSG);
ExportSection(props, L"ItemPickupHelpPopup", Loc::ItemPickupHelpPopup, 0, 5);
ExportSection(props, L"DoctorWarning", Loc::pDoctorWarningString, 0, 2);
ExportSection(props, L"MilitiaButtonsHelp", Loc::pMilitiaButtonsHelpText, 0, 4);
ExportSection(props, L"MapScreenJustStartedHelp", Loc::pMapScreenJustStartedHelpText, 0, 2);
ExportSection(props, L"IMPFinish", pIMPFinishStrings, 0, 1);
ExportSection(props, L"IMPVoices", pIMPVoicesStrings, 0, 1);
ExportSection(props, L"DepartedMercPortrait", pDepartedMercPortraitStrings, 0, 3);
ExportSection(props, L"PersTitle", pPersTitleText, 0, 1);
ExportSection(props, L"PausedGame", pPausedGameText, 0, 3);
ExportSection(props, L"MessageStrings", pMessageStrings, 0, TEXT_NUM_MSG);
ExportSection(props, L"ItemPickupHelpPopup", ItemPickupHelpPopup, 0, 5);
ExportSection(props, L"DoctorWarning", pDoctorWarningString, 0, 2);
ExportSection(props, L"MilitiaButtonsHelp", pMilitiaButtonsHelpText, 0, 4);
ExportSection(props, L"MapScreenJustStartedHelp", pMapScreenJustStartedHelpText, 0, 2);
ExportSection(props, L"AntiHacker", Loc::pAntiHackerString, 0, TEXT_NUM_ANTIHACKERSTR);
ExportSection(props, L"LaptopHelp", Loc::gzLaptopHelpText, 0, TEXT_NUM_LAPTOP_BN_BOOKMARK_TEXT);
ExportSection(props, L"HelpScreen", Loc::gzHelpScreenText, 0, TEXT_NUM_HLP);
ExportSection(props, L"NonPersistantPBI", Loc::gzNonPersistantPBIText, 0, 10);
ExportSection(props, L"MiscString", Loc::gzMiscString, 0, 5);
ExportSection(props, L"IntroScreen", Loc::gzIntroScreen, 0, 1);
ExportSection(props, L"NewNoise", Loc::pNewNoiseStr, 0, 11/*MAX_NOISES*/);
ExportSection(props, L"MapScreenSortButtonHelp", Loc::wMapScreenSortButtonHelpText, 0, 6);
ExportSection(props, L"BrokenLink", Loc::BrokenLinkText, 0, TEXT_NUM_BROKEN_LINK);
ExportSection(props, L"BobbyRShipment", Loc::gzBobbyRShipmentText, 0, TEXT_NUM_BOBBYR_SHIPMENT);
ExportSection(props, L"AntiHacker", pAntiHackerString, 0, TEXT_NUM_ANTIHACKERSTR);
ExportSection(props, L"LaptopHelp", gzLaptopHelpText, 0, TEXT_NUM_LAPTOP_BN_BOOKMARK_TEXT);
ExportSection(props, L"HelpScreen", gzHelpScreenText, 0, TEXT_NUM_HLP);
ExportSection(props, L"NonPersistantPBI", gzNonPersistantPBIText, 0, 10);
ExportSection(props, L"MiscString", gzMiscString, 0, 5);
ExportSection(props, L"IntroScreen", gzIntroScreen, 0, 1);
ExportSection(props, L"NewNoise", pNewNoiseStr, 0, 11/*MAX_NOISES*/);
ExportSection(props, L"MapScreenSortButtonHelp", wMapScreenSortButtonHelpText, 0, 6);
ExportSection(props, L"BrokenLink", BrokenLinkText, 0, TEXT_NUM_BROKEN_LINK);
ExportSection(props, L"BobbyRShipment", gzBobbyRShipmentText, 0, TEXT_NUM_BOBBYR_SHIPMENT);
ExportSection(props, L"CreditNames", Loc::gzCreditNames, 0, 15);
ExportSection(props, L"CreditNameTitle", Loc::gzCreditNameTitle, 0, 15);
ExportSection(props, L"CreditNameFunny", Loc::gzCreditNameFunny, 0, 15);
ExportSection(props, L"RepairsDone", Loc::sRepairsDoneString, 0, 7);
ExportSection(props, L"GioDifConfirm", Loc::zGioDifConfirmText, 0, TEXT_NUM_GIO_CFS);
ExportSection(props, L"LateLocalized", Loc::gzLateLocalizedString, 0, 64);
ExportSection(props, L"CWStrings", Loc::gzCWStrings, 0, 1);
ExportSection(props, L"TooltipStrings", Loc::gzTooltipStrings, 0, TEXT_NUM_STR_TT);
ExportSection(props, L"New113Message", Loc::New113Message, 0, TEXT_NUM_MSG113);
ExportSection(props, L"CreditNames", gzCreditNames, 0, 15);
ExportSection(props, L"CreditNameTitle", gzCreditNameTitle, 0, 15);
ExportSection(props, L"CreditNameFunny", gzCreditNameFunny, 0, 15);
ExportSection(props, L"RepairsDone", sRepairsDoneString, 0, 7);
ExportSection(props, L"GioDifConfirm", zGioDifConfirmText, 0, TEXT_NUM_GIO_CFS);
ExportSection(props, L"LateLocalized", gzLateLocalizedString, 0, 64);
ExportSection(props, L"CWStrings", gzCWStrings, 0, 1);
ExportSection(props, L"TooltipStrings", gzTooltipStrings, 0, TEXT_NUM_STR_TT);
ExportSection(props, L"New113Message", New113Message, 0, TEXT_NUM_MSG113);
ExportSection(props, L"New113HAMMessage", Loc::New113HAMMessage, 0, 25);
ExportSection(props, L"New113MERCMercMail", Loc::New113MERCMercMailTexts, 0, 4);
ExportSection(props, L"New113AIMMercMail", Loc::New113AIMMercMailTexts, 0, 16);
ExportSection(props, L"MissingIMPSkills", Loc::MissingIMPSkillsDescriptions, 0, 2);
ExportSection(props, L"NewInvMessage", Loc::NewInvMessage, 0, TEXT_NUM_NIV);
ExportSection(props, L"MPServerMessage", Loc::MPServerMessage, 0, 13);
ExportSection(props, L"MPClientMessage", Loc::MPClientMessage, 0, 69);
ExportSection(props, L"MPEdges", Loc::gszMPEdgesText, 0, 5);
ExportSection(props, L"MPTeamName", Loc::gszMPTeamNames, 0, 5);
ExportSection(props, L"MPMapscreen", Loc::gszMPMapscreenText, 0, 9);
ExportSection(props, L"New113HAMMessage", New113HAMMessage, 0, 25);
ExportSection(props, L"New113MERCMercMail", New113MERCMercMailTexts, 0, 4);
ExportSection(props, L"New113AIMMercMail", New113AIMMercMailTexts, 0, 16);
ExportSection(props, L"MissingIMPSkills", MissingIMPSkillsDescriptions, 0, 2);
ExportSection(props, L"NewInvMessage", NewInvMessage, 0, TEXT_NUM_NIV);
ExportSection(props, L"MPServerMessage", MPServerMessage, 0, 13);
ExportSection(props, L"MPClientMessage", MPClientMessage, 0, 69);
ExportSection(props, L"MPEdges", gszMPEdgesText, 0, 5);
ExportSection(props, L"MPTeamName", gszMPTeamNames, 0, 5);
ExportSection(props, L"MPMapscreen", gszMPMapscreenText, 0, 9);
ExportSection(props, L"MPSScreen", Loc::gzMPSScreenText, 0, TEXT_NUM_MPS_TEXT);
ExportSection(props, L"MPCScreen", Loc::gzMPCScreenText, 0, TEXT_NUM_MPC_TEXT);
ExportSection(props, L"MPChatToggle", Loc::gzMPChatToggleText, 0, 2);
ExportSection(props, L"MPChatbox", Loc::gzMPChatboxText, 0, 2);
ExportSection(props, L"MPSScreen", gzMPSScreenText, 0, TEXT_NUM_MPS_TEXT);
ExportSection(props, L"MPCScreen", gzMPCScreenText, 0, TEXT_NUM_MPC_TEXT);
ExportSection(props, L"MPChatToggle", gzMPChatToggleText, 0, 2);
ExportSection(props, L"MPChatbox", gzMPChatboxText, 0, 2);
props.writeToXMLFile(L"Localization/GameStrings.xml",tmap);
props.writeToIniFile(L"Localization/GameStrings.ini",true);
@@ -524,7 +521,7 @@ namespace Loc
void Loc::ExportMercBio()
{
Loc::Language lang = gs_Lang;
Loc::Language lang = ToLocLanguage(g_lang);
#define SIZE_MERC_BIO_INFO 400 * 2
#define SIZE_MERC_ADDITIONAL_INFO 160 * 2
@@ -554,7 +551,7 @@ void Loc::ExportMercBio()
void Loc::ExportAIMHistory()
{
Loc::Language lang = gs_Lang;
Loc::Language lang = ToLocLanguage(g_lang);
#define AIM_HISTORY_LINE_SIZE 400 * 2
vfs::String::char_t pHistLine[AIM_HISTORY_LINE_SIZE];
vfs::COpenReadFile rfile("BINARYDATA\\AimHist.edt");
@@ -576,7 +573,7 @@ void Loc::ExportAIMHistory()
void Loc::ExportAIMPolicy()
{
Loc::Language lang = gs_Lang;
Loc::Language lang = ToLocLanguage(g_lang);
#define AIM_HISTORY_LINE_SIZE 400 * 2
vfs::String::char_t pPolLine[AIM_HISTORY_LINE_SIZE];
vfs::COpenReadFile rfile("BINARYDATA\\AimPol.edt");
@@ -597,7 +594,7 @@ void Loc::ExportAIMPolicy()
void Loc::ExportAlumniName()
{
Loc::Language lang = gs_Lang;
Loc::Language lang = ToLocLanguage(g_lang);
#define AIM_ALUMNI_NAME_SIZE 80 * 2
vfs::String::char_t pAlumniName[AIM_ALUMNI_NAME_SIZE];
vfs::COpenReadFile rfile("BINARYDATA\\AlumName.edt");
@@ -620,7 +617,7 @@ void Loc::ExportAlumniName()
void Loc::ExportDialogues()
{
Loc::Language lang = gs_Lang;
Loc::Language lang = ToLocLanguage(g_lang);
#define DIALOGUESIZE 480
vfs::String::char_t pDiagLine[DIALOGUESIZE];
@@ -658,7 +655,7 @@ void Loc::ExportDialogues()
void Loc::ExportNPCDialogues()
{
Loc::Language lang = gs_Lang;
Loc::Language lang = ToLocLanguage(g_lang);
#define DIALOGUESIZE 480
#define CIVQUOTESIZE 320
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 **
@@ -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
@@ -12297,5 +12277,3 @@ STR16 szRobotText[] =
L"机器人的额外装甲破坏了!", //L"The robot's extra armour plating was destroyed!",
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 **
@@ -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
STR16 pMenuStrings[] =
@@ -12307,5 +12285,3 @@ STR16 szRobotText[] = // TODO: Translate
L"The robot's extra armour plating was destroyed!",
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 **
@@ -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
STR16 pMenuStrings[] =
@@ -12297,5 +12276,3 @@ STR16 szRobotText[] =
L"The robot's extra armour plating was destroyed!",
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 **
@@ -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
@@ -12289,5 +12269,3 @@ STR16 szRobotText[] = // TODO: Translate
L"The robot's extra armour plating was destroyed!",
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 **
******************************************************************************************************
@@ -134,10 +117,6 @@ Remove any LOOTF comment that has been checked, except maybe for "alt." (alterna
07/2010 LootFragg
*/
CHAR16 XMLTacticalMessages[1000][MAX_MESSAGE_NAMES_CHARS] =
{
L"",
};
//Encyclopedia
@@ -12212,5 +12191,3 @@ STR16 szRobotText[] = // TODO: Translate
L"The robot's extra armour plating was destroyed!",
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 **
@@ -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
STR16 pMenuStrings[] =
@@ -12298,5 +12278,3 @@ STR16 szRobotText[] = // TODO: Translate
L"The robot's extra armour plating was destroyed!",
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!
//#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
// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// SANDRO - New STOMP laptop strings
@@ -524,5 +511,3 @@ STR16 gzDisplayCoverText[]=
L"隐蔽难度", //L"Stealth difficulty",
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!
//#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
// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// SANDRO - New STOMP laptop strings
@@ -525,6 +512,3 @@ STR16 gzDisplayCoverText[]=
L"Stealth difficulty",
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!
//#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
// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// SANDRO - New STOMP laptop strings
@@ -524,5 +511,3 @@ STR16 gzDisplayCoverText[]=
L"Stealth difficulty",
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!
//#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
// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -525,6 +512,3 @@ STR16 gzDisplayCoverText[]=
L"Stealth difficulty",
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!
//#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
// 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
STR16 gzIMPSkillTraitsText[]=
@@ -526,6 +513,3 @@ STR16 gzDisplayCoverText[]=
L"Stealth difficulty",
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!
//#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
// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// SANDRO - New STOMP laptop strings
@@ -523,6 +510,3 @@ STR16 gzDisplayCoverText[]=
L"Stealth difficulty",
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
// 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
// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// SANDRO - New STOMP laptop strings
@@ -525,6 +511,3 @@ STR16 gzDisplayCoverText[]=
L"Stealth difficulty",
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!
//#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
// VERY TRUNCATED FILE COPIED FROM JA2.5 FOR ITS FEATURES FOR JA2 GOLD
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// SANDRO - New STOMP laptop strings
@@ -524,5 +511,3 @@ STR16 gzDisplayCoverText[]=
L"Сложность остаться незаметным", //Stealth difficulty
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 **
@@ -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
@@ -12311,5 +12290,3 @@ STR16 szRobotText[] = // TODO: Translate
L"The robot's extra armour plating was destroyed!",
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 **
@@ -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
@@ -12292,5 +12272,3 @@ STR16 szRobotText[] = // TODO: Translate
L"The robot's extra armour plating was destroyed!",
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_
extern STR16 gzIMPSkillTraitsText[];
extern STR16* gzIMPSkillTraitsText;
////////////////////////////////////////////////////////
// added by SANDRO
extern STR16 gzIMPSkillTraitsTextNewMajor[];
extern STR16 gzIMPSkillTraitsTextNewMinor[];
extern STR16* gzIMPSkillTraitsTextNewMajor;
extern STR16* gzIMPSkillTraitsTextNewMinor;
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[];
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[];
extern STR16 gzIMPMajorTraitsHelpTextsSniper[];
extern STR16 gzIMPMajorTraitsHelpTextsRanger[];
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[];
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[];
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[];
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[];
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[];
extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsNone[];
extern STR16* gzIMPMajorTraitsHelpTextsAutoWeapons;
extern STR16* gzIMPMajorTraitsHelpTextsHeavyWeapons;
extern STR16* gzIMPMajorTraitsHelpTextsSniper;
extern STR16* gzIMPMajorTraitsHelpTextsRanger;
extern STR16* gzIMPMajorTraitsHelpTextsGunslinger;
extern STR16* gzIMPMajorTraitsHelpTextsMartialArts;
extern STR16* gzIMPMajorTraitsHelpTextsSquadleader;
extern STR16* gzIMPMajorTraitsHelpTextsTechnician;
extern STR16* gzIMPMajorTraitsHelpTextsDoctor;
extern STR16* gzIMPMajorTraitsHelpTextsCovertOps; // added by Flugente
extern STR16* gzIMPMajorTraitsHelpTextsRadioOperator; // added by Flugente
extern STR16* gzIMPMajorTraitsHelpTextsNone;
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[];
extern STR16 gzIMPMinorTraitsHelpTextsMelee[];
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[];
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[];
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[];
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[];
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[];
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[];
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
extern STR16* gzIMPMinorTraitsHelpTextsAmbidextrous;
extern STR16* gzIMPMinorTraitsHelpTextsMelee;
extern STR16* gzIMPMinorTraitsHelpTextsThrowing;
extern STR16* gzIMPMinorTraitsHelpTextsStealthy;
extern STR16* gzIMPMinorTraitsHelpTextsNightOps;
extern STR16* gzIMPMinorTraitsHelpTextsAthletics;
extern STR16* gzIMPMinorTraitsHelpTextsBodybuilding;
extern STR16* gzIMPMinorTraitsHelpTextsDemolitions;
extern STR16* gzIMPMinorTraitsHelpTextsTeaching;
extern STR16* gzIMPMinorTraitsHelpTextsScouting;
extern STR16* gzIMPMinorTraitsHelpTextsSnitch;
extern STR16* gzIMPMajorTraitsHelpTextsSurvival; // added by Flugente
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
@@ -52,7 +52,7 @@ enum
IMM__SOFT_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 terrain type info (used in cover information)
@@ -80,7 +80,7 @@ enum
DC_TTI__DETAILED_STEALTH,
DC_TTI__DETAILED_TRAP_LEVEL,
};
extern STR16 gzDisplayCoverText[];
extern STR16* gzDisplayCoverText;
#endif
+36 -36
View File
@@ -1,49 +1,49 @@
#ifndef _JA25ENGLISHTEXT__H_
#ifndef _JA25ENGLISHTEXT__H_
#define _JA25ENGLISHTEXT__H_
extern STR16 gzIMPSkillTraitsText[];
extern STR16* gzIMPSkillTraitsText;
////////////////////////////////////////////////////////
// added by SANDRO
extern STR16 gzIMPSkillTraitsTextNewMajor[];
extern STR16 gzIMPSkillTraitsTextNewMinor[];
extern STR16* gzIMPSkillTraitsTextNewMajor;
extern STR16* gzIMPSkillTraitsTextNewMinor;
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[];
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[];
extern STR16 gzIMPMajorTraitsHelpTextsSniper[];
extern STR16 gzIMPMajorTraitsHelpTextsRanger[];
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[];
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[];
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[];
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[];
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[];
extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsNone[];
extern STR16* gzIMPMajorTraitsHelpTextsAutoWeapons;
extern STR16* gzIMPMajorTraitsHelpTextsHeavyWeapons;
extern STR16* gzIMPMajorTraitsHelpTextsSniper;
extern STR16* gzIMPMajorTraitsHelpTextsRanger;
extern STR16* gzIMPMajorTraitsHelpTextsGunslinger;
extern STR16* gzIMPMajorTraitsHelpTextsMartialArts;
extern STR16* gzIMPMajorTraitsHelpTextsSquadleader;
extern STR16* gzIMPMajorTraitsHelpTextsTechnician;
extern STR16* gzIMPMajorTraitsHelpTextsDoctor;
extern STR16* gzIMPMajorTraitsHelpTextsCovertOps; // added by Flugente
extern STR16* gzIMPMajorTraitsHelpTextsRadioOperator; // added by Flugente
extern STR16* gzIMPMajorTraitsHelpTextsNone;
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[];
extern STR16 gzIMPMinorTraitsHelpTextsMelee[];
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[];
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[];
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[];
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[];
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[];
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[];
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
extern STR16* gzIMPMinorTraitsHelpTextsAmbidextrous;
extern STR16* gzIMPMinorTraitsHelpTextsMelee;
extern STR16* gzIMPMinorTraitsHelpTextsThrowing;
extern STR16* gzIMPMinorTraitsHelpTextsStealthy;
extern STR16* gzIMPMinorTraitsHelpTextsNightOps;
extern STR16* gzIMPMinorTraitsHelpTextsAthletics;
extern STR16* gzIMPMinorTraitsHelpTextsBodybuilding;
extern STR16* gzIMPMinorTraitsHelpTextsDemolitions;
extern STR16* gzIMPMinorTraitsHelpTextsTeaching;
extern STR16* gzIMPMinorTraitsHelpTextsScouting;
extern STR16* gzIMPMinorTraitsHelpTextsSnitch;
extern STR16* gzIMPMajorTraitsHelpTextsSurvival; // added by Flugente
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
@@ -52,7 +52,7 @@ enum
IMM__SOFT_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 terrain type info (used in cover information)
@@ -81,7 +81,7 @@ enum
DC_TTI__DETAILED_TRAP_LEVEL,
};
extern STR16 gzDisplayCoverText[];
extern STR16* gzDisplayCoverText;
#endif
+36 -36
View File
@@ -1,49 +1,49 @@
#ifndef _JA25ENGLISHTEXT__H_
#ifndef _JA25ENGLISHTEXT__H_
#define _JA25ENGLISHTEXT__H_
extern STR16 gzIMPSkillTraitsText[];
extern STR16* gzIMPSkillTraitsText;
////////////////////////////////////////////////////////
// added by SANDRO
extern STR16 gzIMPSkillTraitsTextNewMajor[];
extern STR16 gzIMPSkillTraitsTextNewMinor[];
extern STR16* gzIMPSkillTraitsTextNewMajor;
extern STR16* gzIMPSkillTraitsTextNewMinor;
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[];
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[];
extern STR16 gzIMPMajorTraitsHelpTextsSniper[];
extern STR16 gzIMPMajorTraitsHelpTextsRanger[];
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[];
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[];
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[];
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[];
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[];
extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsNone[];
extern STR16* gzIMPMajorTraitsHelpTextsAutoWeapons;
extern STR16* gzIMPMajorTraitsHelpTextsHeavyWeapons;
extern STR16* gzIMPMajorTraitsHelpTextsSniper;
extern STR16* gzIMPMajorTraitsHelpTextsRanger;
extern STR16* gzIMPMajorTraitsHelpTextsGunslinger;
extern STR16* gzIMPMajorTraitsHelpTextsMartialArts;
extern STR16* gzIMPMajorTraitsHelpTextsSquadleader;
extern STR16* gzIMPMajorTraitsHelpTextsTechnician;
extern STR16* gzIMPMajorTraitsHelpTextsDoctor;
extern STR16* gzIMPMajorTraitsHelpTextsCovertOps; // added by Flugente
extern STR16* gzIMPMajorTraitsHelpTextsRadioOperator; // added by Flugente
extern STR16* gzIMPMajorTraitsHelpTextsNone;
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[];
extern STR16 gzIMPMinorTraitsHelpTextsMelee[];
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[];
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[];
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[];
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[];
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[];
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[];
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
extern STR16* gzIMPMinorTraitsHelpTextsAmbidextrous;
extern STR16* gzIMPMinorTraitsHelpTextsMelee;
extern STR16* gzIMPMinorTraitsHelpTextsThrowing;
extern STR16* gzIMPMinorTraitsHelpTextsStealthy;
extern STR16* gzIMPMinorTraitsHelpTextsNightOps;
extern STR16* gzIMPMinorTraitsHelpTextsAthletics;
extern STR16* gzIMPMinorTraitsHelpTextsBodybuilding;
extern STR16* gzIMPMinorTraitsHelpTextsDemolitions;
extern STR16* gzIMPMinorTraitsHelpTextsTeaching;
extern STR16* gzIMPMinorTraitsHelpTextsScouting;
extern STR16* gzIMPMinorTraitsHelpTextsSnitch;
extern STR16* gzIMPMajorTraitsHelpTextsSurvival; // added by Flugente
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
@@ -52,7 +52,7 @@ enum
IMM__SOFT_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 terrain type info (used in cover information)
@@ -80,7 +80,7 @@ enum
DC_TTI__DETAILED_STEALTH,
DC_TTI__DETAILED_TRAP_LEVEL,
};
extern STR16 gzDisplayCoverText[];
extern STR16* gzDisplayCoverText;
#endif
+36 -36
View File
@@ -1,49 +1,49 @@
#ifndef _JA25GERMANTEXT__H_
#ifndef _JA25GERMANTEXT__H_
#define _JA25GERMANTEXT__H_
extern STR16 gzIMPSkillTraitsText[];
extern STR16* gzIMPSkillTraitsText;
////////////////////////////////////////////////////////
// added by SANDRO
extern STR16 gzIMPSkillTraitsTextNewMajor[];
extern STR16 gzIMPSkillTraitsTextNewMinor[];
extern STR16* gzIMPSkillTraitsTextNewMajor;
extern STR16* gzIMPSkillTraitsTextNewMinor;
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[];
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[];
extern STR16 gzIMPMajorTraitsHelpTextsSniper[];
extern STR16 gzIMPMajorTraitsHelpTextsRanger[];
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[];
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[];
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[];
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[];
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[];
extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsNone[];
extern STR16* gzIMPMajorTraitsHelpTextsAutoWeapons;
extern STR16* gzIMPMajorTraitsHelpTextsHeavyWeapons;
extern STR16* gzIMPMajorTraitsHelpTextsSniper;
extern STR16* gzIMPMajorTraitsHelpTextsRanger;
extern STR16* gzIMPMajorTraitsHelpTextsGunslinger;
extern STR16* gzIMPMajorTraitsHelpTextsMartialArts;
extern STR16* gzIMPMajorTraitsHelpTextsSquadleader;
extern STR16* gzIMPMajorTraitsHelpTextsTechnician;
extern STR16* gzIMPMajorTraitsHelpTextsDoctor;
extern STR16* gzIMPMajorTraitsHelpTextsCovertOps; // added by Flugente
extern STR16* gzIMPMajorTraitsHelpTextsRadioOperator; // added by Flugente
extern STR16* gzIMPMajorTraitsHelpTextsNone;
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[];
extern STR16 gzIMPMinorTraitsHelpTextsMelee[];
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[];
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[];
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[];
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[];
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[];
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[];
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
extern STR16* gzIMPMinorTraitsHelpTextsAmbidextrous;
extern STR16* gzIMPMinorTraitsHelpTextsMelee;
extern STR16* gzIMPMinorTraitsHelpTextsThrowing;
extern STR16* gzIMPMinorTraitsHelpTextsStealthy;
extern STR16* gzIMPMinorTraitsHelpTextsNightOps;
extern STR16* gzIMPMinorTraitsHelpTextsAthletics;
extern STR16* gzIMPMinorTraitsHelpTextsBodybuilding;
extern STR16* gzIMPMinorTraitsHelpTextsDemolitions;
extern STR16* gzIMPMinorTraitsHelpTextsTeaching;
extern STR16* gzIMPMinorTraitsHelpTextsScouting;
extern STR16* gzIMPMinorTraitsHelpTextsSnitch;
extern STR16* gzIMPMajorTraitsHelpTextsSurvival; // added by Flugente
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
@@ -52,7 +52,7 @@ enum
IMM__SOFT_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 terrain type info (used in cover information)
@@ -80,7 +80,7 @@ enum
DC_TTI__DETAILED_STEALTH,
DC_TTI__DETAILED_TRAP_LEVEL,
};
extern STR16 gzDisplayCoverText[];
extern STR16* gzDisplayCoverText;
#endif
+36 -36
View File
@@ -1,49 +1,49 @@
#ifndef _JA25ENGLISHTEXT__H_
#ifndef _JA25ENGLISHTEXT__H_
#define _JA25ENGLISHTEXT__H_
extern STR16 gzIMPSkillTraitsText[];
extern STR16* gzIMPSkillTraitsText;
////////////////////////////////////////////////////////
// added by SANDRO
extern STR16 gzIMPSkillTraitsTextNewMajor[];
extern STR16 gzIMPSkillTraitsTextNewMinor[];
extern STR16* gzIMPSkillTraitsTextNewMajor;
extern STR16* gzIMPSkillTraitsTextNewMinor;
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[];
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[];
extern STR16 gzIMPMajorTraitsHelpTextsSniper[];
extern STR16 gzIMPMajorTraitsHelpTextsRanger[];
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[];
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[];
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[];
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[];
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[];
extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsNone[];
extern STR16* gzIMPMajorTraitsHelpTextsAutoWeapons;
extern STR16* gzIMPMajorTraitsHelpTextsHeavyWeapons;
extern STR16* gzIMPMajorTraitsHelpTextsSniper;
extern STR16* gzIMPMajorTraitsHelpTextsRanger;
extern STR16* gzIMPMajorTraitsHelpTextsGunslinger;
extern STR16* gzIMPMajorTraitsHelpTextsMartialArts;
extern STR16* gzIMPMajorTraitsHelpTextsSquadleader;
extern STR16* gzIMPMajorTraitsHelpTextsTechnician;
extern STR16* gzIMPMajorTraitsHelpTextsDoctor;
extern STR16* gzIMPMajorTraitsHelpTextsCovertOps; // added by Flugente
extern STR16* gzIMPMajorTraitsHelpTextsRadioOperator; // added by Flugente
extern STR16* gzIMPMajorTraitsHelpTextsNone;
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[];
extern STR16 gzIMPMinorTraitsHelpTextsMelee[];
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[];
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[];
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[];
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[];
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[];
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[];
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
extern STR16* gzIMPMinorTraitsHelpTextsAmbidextrous;
extern STR16* gzIMPMinorTraitsHelpTextsMelee;
extern STR16* gzIMPMinorTraitsHelpTextsThrowing;
extern STR16* gzIMPMinorTraitsHelpTextsStealthy;
extern STR16* gzIMPMinorTraitsHelpTextsNightOps;
extern STR16* gzIMPMinorTraitsHelpTextsAthletics;
extern STR16* gzIMPMinorTraitsHelpTextsBodybuilding;
extern STR16* gzIMPMinorTraitsHelpTextsDemolitions;
extern STR16* gzIMPMinorTraitsHelpTextsTeaching;
extern STR16* gzIMPMinorTraitsHelpTextsScouting;
extern STR16* gzIMPMinorTraitsHelpTextsSnitch;
extern STR16* gzIMPMajorTraitsHelpTextsSurvival; // added by Flugente
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
@@ -52,7 +52,7 @@ enum
IMM__SOFT_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 terrain type info (used in cover information)
@@ -80,7 +80,7 @@ enum
DC_TTI__DETAILED_STEALTH,
DC_TTI__DETAILED_TRAP_LEVEL,
};
extern STR16 gzDisplayCoverText[];
extern STR16* gzDisplayCoverText;
#endif
+36 -36
View File
@@ -1,49 +1,49 @@
#ifndef _JA25ENGLISHTEXT__H_
#ifndef _JA25ENGLISHTEXT__H_
#define _JA25ENGLISHTEXT__H_
extern STR16 gzIMPSkillTraitsText[];
extern STR16* gzIMPSkillTraitsText;
////////////////////////////////////////////////////////
// added by SANDRO
extern STR16 gzIMPSkillTraitsTextNewMajor[];
extern STR16 gzIMPSkillTraitsTextNewMinor[];
extern STR16* gzIMPSkillTraitsTextNewMajor;
extern STR16* gzIMPSkillTraitsTextNewMinor;
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[];
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[];
extern STR16 gzIMPMajorTraitsHelpTextsSniper[];
extern STR16 gzIMPMajorTraitsHelpTextsRanger[];
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[];
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[];
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[];
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[];
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[];
extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsNone[];
extern STR16* gzIMPMajorTraitsHelpTextsAutoWeapons;
extern STR16* gzIMPMajorTraitsHelpTextsHeavyWeapons;
extern STR16* gzIMPMajorTraitsHelpTextsSniper;
extern STR16* gzIMPMajorTraitsHelpTextsRanger;
extern STR16* gzIMPMajorTraitsHelpTextsGunslinger;
extern STR16* gzIMPMajorTraitsHelpTextsMartialArts;
extern STR16* gzIMPMajorTraitsHelpTextsSquadleader;
extern STR16* gzIMPMajorTraitsHelpTextsTechnician;
extern STR16* gzIMPMajorTraitsHelpTextsDoctor;
extern STR16* gzIMPMajorTraitsHelpTextsCovertOps; // added by Flugente
extern STR16* gzIMPMajorTraitsHelpTextsRadioOperator; // added by Flugente
extern STR16* gzIMPMajorTraitsHelpTextsNone;
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[];
extern STR16 gzIMPMinorTraitsHelpTextsMelee[];
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[];
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[];
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[];
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[];
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[];
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[];
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
extern STR16* gzIMPMinorTraitsHelpTextsAmbidextrous;
extern STR16* gzIMPMinorTraitsHelpTextsMelee;
extern STR16* gzIMPMinorTraitsHelpTextsThrowing;
extern STR16* gzIMPMinorTraitsHelpTextsStealthy;
extern STR16* gzIMPMinorTraitsHelpTextsNightOps;
extern STR16* gzIMPMinorTraitsHelpTextsAthletics;
extern STR16* gzIMPMinorTraitsHelpTextsBodybuilding;
extern STR16* gzIMPMinorTraitsHelpTextsDemolitions;
extern STR16* gzIMPMinorTraitsHelpTextsTeaching;
extern STR16* gzIMPMinorTraitsHelpTextsScouting;
extern STR16* gzIMPMinorTraitsHelpTextsSnitch;
extern STR16* gzIMPMajorTraitsHelpTextsSurvival; // added by Flugente
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
@@ -52,7 +52,7 @@ enum
IMM__SOFT_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 terrain type info (used in cover information)
@@ -80,7 +80,7 @@ enum
DC_TTI__DETAILED_STEALTH,
DC_TTI__DETAILED_TRAP_LEVEL,
};
extern STR16 gzDisplayCoverText[];
extern STR16* gzDisplayCoverText;
#endif
+36 -36
View File
@@ -1,49 +1,49 @@
#ifndef _JA25ENGLISHTEXT__H_
#ifndef _JA25ENGLISHTEXT__H_
#define _JA25ENGLISHTEXT__H_
extern STR16 gzIMPSkillTraitsText[];
extern STR16* gzIMPSkillTraitsText;
////////////////////////////////////////////////////////
// added by SANDRO
extern STR16 gzIMPSkillTraitsTextNewMajor[];
extern STR16 gzIMPSkillTraitsTextNewMinor[];
extern STR16* gzIMPSkillTraitsTextNewMajor;
extern STR16* gzIMPSkillTraitsTextNewMinor;
extern STR16 gzIMPMajorTraitsHelpTextsAutoWeapons[];
extern STR16 gzIMPMajorTraitsHelpTextsHeavyWeapons[];
extern STR16 gzIMPMajorTraitsHelpTextsSniper[];
extern STR16 gzIMPMajorTraitsHelpTextsRanger[];
extern STR16 gzIMPMajorTraitsHelpTextsGunslinger[];
extern STR16 gzIMPMajorTraitsHelpTextsMartialArts[];
extern STR16 gzIMPMajorTraitsHelpTextsSquadleader[];
extern STR16 gzIMPMajorTraitsHelpTextsTechnician[];
extern STR16 gzIMPMajorTraitsHelpTextsDoctor[];
extern STR16 gzIMPMajorTraitsHelpTextsCovertOps[]; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]; // added by Flugente
extern STR16 gzIMPMajorTraitsHelpTextsNone[];
extern STR16* gzIMPMajorTraitsHelpTextsAutoWeapons;
extern STR16* gzIMPMajorTraitsHelpTextsHeavyWeapons;
extern STR16* gzIMPMajorTraitsHelpTextsSniper;
extern STR16* gzIMPMajorTraitsHelpTextsRanger;
extern STR16* gzIMPMajorTraitsHelpTextsGunslinger;
extern STR16* gzIMPMajorTraitsHelpTextsMartialArts;
extern STR16* gzIMPMajorTraitsHelpTextsSquadleader;
extern STR16* gzIMPMajorTraitsHelpTextsTechnician;
extern STR16* gzIMPMajorTraitsHelpTextsDoctor;
extern STR16* gzIMPMajorTraitsHelpTextsCovertOps; // added by Flugente
extern STR16* gzIMPMajorTraitsHelpTextsRadioOperator; // added by Flugente
extern STR16* gzIMPMajorTraitsHelpTextsNone;
extern STR16 gzIMPMinorTraitsHelpTextsAmbidextrous[];
extern STR16 gzIMPMinorTraitsHelpTextsMelee[];
extern STR16 gzIMPMinorTraitsHelpTextsThrowing[];
extern STR16 gzIMPMinorTraitsHelpTextsStealthy[];
extern STR16 gzIMPMinorTraitsHelpTextsNightOps[];
extern STR16 gzIMPMinorTraitsHelpTextsAthletics[];
extern STR16 gzIMPMinorTraitsHelpTextsBodybuilding[];
extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[];
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
extern STR16* gzIMPMinorTraitsHelpTextsAmbidextrous;
extern STR16* gzIMPMinorTraitsHelpTextsMelee;
extern STR16* gzIMPMinorTraitsHelpTextsThrowing;
extern STR16* gzIMPMinorTraitsHelpTextsStealthy;
extern STR16* gzIMPMinorTraitsHelpTextsNightOps;
extern STR16* gzIMPMinorTraitsHelpTextsAthletics;
extern STR16* gzIMPMinorTraitsHelpTextsBodybuilding;
extern STR16* gzIMPMinorTraitsHelpTextsDemolitions;
extern STR16* gzIMPMinorTraitsHelpTextsTeaching;
extern STR16* gzIMPMinorTraitsHelpTextsScouting;
extern STR16* gzIMPMinorTraitsHelpTextsSnitch;
extern STR16* gzIMPMajorTraitsHelpTextsSurvival; // added by Flugente
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
@@ -52,7 +52,7 @@ enum
IMM__SOFT_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 terrain type info (used in cover information)
@@ -80,7 +80,7 @@ enum
DC_TTI__DETAILED_STEALTH,
DC_TTI__DETAILED_TRAP_LEVEL,
};
extern STR16 gzDisplayCoverText[];
extern STR16* gzDisplayCoverText;
#endif
+15 -2
View File
@@ -2,6 +2,8 @@
#include <types.h>
#include <string>
namespace i18n {
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;
/* 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 "DEBUG.H"
/* FIXME: The ugliest of ugly hacks. Getting rid of this and letting language
* (ideally text and voice separately) be set in the options menu would be
* ideal. */
const i18n::Lang g_lang{
#if defined(ENGLISH)
i18n::Lang::en
#elif defined(CHINESE)
i18n::Lang::zh
#elif defined(DUTCH)
i18n::Lang::nl
#elif defined(FRENCH)
i18n::Lang::fr
#elif defined(GERMAN)
i18n::Lang::de
#elif defined(ITALIAN)
i18n::Lang::it
#elif defined(POLISH)
i18n::Lang::pl
#elif defined(RUSSIAN)
i18n::Lang::ru
#endif
};
namespace {
// Cn+4 retired the per-exe ENGLISH/GERMAN/... compile definitions along with the CMake
// language axis, so the build default is now a fixed constant; the ini key (below)
// overrides it at runtime via g_lang/BindLanguageStrings.
constexpr i18n::Lang kBuildDefaultLang = i18n::Lang::en;
const int MAX_MESSAGES_ON_MAP_BOTTOM{
#if defined(CHINESE) // zwwoooooo: Chinese fonts relatively high , so to reduce the number of rows
6
#else
9
#endif
};
auto RowsForLang(i18n::Lang lang) -> int {
return lang == i18n::Lang::zh ? 6 : 9;
}
}
/* 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 {
return
#if defined(ENGLISH)
""
#elif defined(CHINESE)
"Chinese."
#elif defined(DUTCH)
"Dutch."
#elif defined(FRENCH)
"French."
#elif defined(GERMAN)
"German."
#elif defined(ITALIAN)
"Italian."
#elif defined(POLISH)
"Polish."
#elif defined(RUSSIAN)
"Russian."
#endif
;
switch (g_lang) {
case i18n::Lang::en: return "";
case i18n::Lang::de: return "German.";
case i18n::Lang::ru: return "Russian.";
case i18n::Lang::nl: return "Dutch.";
case i18n::Lang::pl: return "Polish.";
case i18n::Lang::fr: return "French.";
case i18n::Lang::it: return "Italian.";
case i18n::Lang::zh: return "Chinese.";
}
return "";
}
+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)