#include "ExportStrings.h" #include "LocalizedStrings.h" #include "Map Screen Interface.h" #include "personnel.h" #include "soldier profile type.h" #include "interface.h" #include "Keys.h" #include "Merc Contract.h" #include "Campaign Types.h" #include "Finances.h" #include "Laptop.h" #include #include #include #include namespace Loc { bool Translate(vfs::String::char_t* str, int len, Language lang); void ExportMercBio(); void ExportAIMHistory(); void ExportAIMPolicy(); void ExportAlumniName(); void ExportDialogues(); void ExportNPCDialogues(); }; ////////////////////////////////////////////////////////// //#define GERMAN #include "Text.h" namespace Loc { #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 } #include "Assignments.h" #include "History.h" template void ExportSection(vfs::PropertyContainer& props, const vfs::String::char_t* section_name, T* strings, int min, int max) { for(int i = min; i < max; ++i) { vfs::String str(strings[i]); //Loc::Translate(&str.r_wcs()[0],str.length(), gs_Lang); if(!str.empty()) { props.setStringProperty(section_name, vfs::toString(i), str); } } } template<> void ExportSection(vfs::PropertyContainer& props, const vfs::String::char_t* section_name, wchar_t* strings, int min, int max) { ExportSection(props,section_name, &strings, min, max); } bool Loc::ExportStrings() { vfs::PropertyContainer::TagMap tmap; //tmap.Container(L"LocalizedStrings"); //tmap.Section(L"Topic"); //tmap.SectionID(L"name"); //tmap.Key(L"msg"); //tmap.KeyID(L"index"); 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); 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"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"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"PersonnelTitle", Loc::pPersonnelTitle, 0, 1); ExportSection(props, L"PersonnelScreen", Loc::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"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"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"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"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"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"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"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"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"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"AtmSideButton", Loc::gsAtmSideButtonText, 0, 5); ExportSection(props, L"AtmStartButton", Loc::gsAtmStartButtonText, 0, 4); ExportSection(props, L"ATM", Loc::sATMText, 0, 6); 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"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"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"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"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"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"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"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"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"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"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"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); props.writeToXMLFile(L"Localization/GameStrings.xml",tmap); props.writeToIniFile(L"Localization/GameStrings.ini",true); Loc::ExportMercBio(); Loc::ExportAIMHistory(); Loc::ExportAIMPolicy(); Loc::ExportAlumniName(); Loc::ExportDialogues(); Loc::ExportNPCDialogues(); return true; } #include #include "Encrypted File.h" namespace Loc { wchar_t ToPolish(wchar_t siChar) { switch( siChar ) { case 165: siChar = 260; break; case 198: siChar = 262; break; case 202: siChar = 280; break; case 163: siChar = 321; break; case 209: siChar = 323; break; case 211: siChar = 211; break; case 140: siChar = 346; break; case 175: siChar = 379; break; case 143: siChar = 377; break; case 185: siChar = 261; break; case 230: siChar = 263; break; case 234: siChar = 281; break; case 179: siChar = 322; break; case 241: siChar = 324; break; case 243: siChar = 243; break; case 156: siChar = 347; break; case 191: siChar = 380; break; case 159: siChar = 378; break; } return siChar; } wchar_t ToRussian(wchar_t siChar) { switch( siChar ) { //capital letters case 168: siChar = 1025; break; //U+0401 d0 81 CYRILLIC CAPITAL LETTER IO case 192: siChar = 1040; break; //U+0410 A d0 90 CYRILLIC CAPITAL LETTER A case 193: siChar = 1041; break; case 194: siChar = 1042; break; case 195: siChar = 1043; break; case 196: siChar = 1044; break; case 197: siChar = 1045; break; case 198: siChar = 1046; break; case 199: siChar = 1047; break; case 200: siChar = 1048; break; case 201: siChar = 1049; break; case 202: siChar = 1050; break; case 203: siChar = 1051; break; case 204: siChar = 1052; break; case 205: siChar = 1053; break; case 206: siChar = 1054; break; case 207: siChar = 1055; break; case 208: siChar = 1056; break; case 209: siChar = 1057; break; case 210: siChar = 1058; break; case 211: siChar = 1059; break; case 212: siChar = 1060; break; case 213: siChar = 1061; break; case 214: siChar = 1062; break; case 215: siChar = 1063; break; case 216: siChar = 1064; break; case 217: siChar = 1065; break; case 218: siChar = 1066; break; case 219: siChar = 1067; break; case 220: siChar = 1068; break; case 221: siChar = 1069; break; case 222: siChar = 1070; break; case 223: siChar = 1071; break; //U+042F d0 af CYRILLIC CAPITAL LETTER YA //small letters case 185: siChar = 8470; break; // ¹ case 178: siChar = 1030; break; // ² case 161: siChar = 1038; break; // ¡ case 179: siChar = 1110; break; // ³ case 162: siChar = 1118; break; // ¢ case 165: siChar = 1168; break; // ¥ case 170: siChar = 1028; break; // ª case 175: siChar = 1031; break; // ¯ case 180: siChar = 1169; break; // ´ case 186: siChar = 1108; break; // º case 191: siChar = 1111; break; // ¿ case 184: siChar = 1105; break; //U+0451 d1 91 CYRILLIC SMALL LETTER IO case 224: siChar = 1072; break; //U+0430 a d0 b0 CYRILLIC SMALL LETTER A case 225: siChar = 1073; break; case 226: siChar = 1074; break; case 227: siChar = 1075; break; case 228: siChar = 1076; break; case 229: siChar = 1077; break; case 230: siChar = 1078; break; case 231: siChar = 1079; break; case 232: siChar = 1080; break; case 233: siChar = 1081; break; case 234: siChar = 1082; break; case 235: siChar = 1083; break; case 236: siChar = 1084; break; case 237: siChar = 1085; break; case 238: siChar = 1086; break; case 239: siChar = 1087; break; //U+043F d0 bf CYRILLIC SMALL LETTER PE case 240: siChar = 1088; break; //U+0440 p d1 80 CYRILLIC SMALL LETTER ER case 241: siChar = 1089; break; case 242: siChar = 1090; break; case 243: siChar = 1091; break; case 244: siChar = 1092; break; case 245: siChar = 1093; break; case 246: siChar = 1094; break; case 247: siChar = 1095; break; case 248: siChar = 1096; break; case 249: siChar = 1097; break; case 250: siChar = 1098; break; case 251: siChar = 1099; break; case 252: siChar = 1100; break; case 253: siChar = 1101; break; case 254: siChar = 1102; break; case 255: siChar = 1103; break; //U+044F d1 8f CYRILLIC SMALL LETTER YA } return siChar; } bool Translate(vfs::String::char_t* str, int len, Language lang) { if(lang == English || lang == German) { return true; } else if(lang == Russian) { for(int i=0; i(i), pInfoString); file.read((vfs::Byte*)pAddInfo, SIZE_MERC_ADDITIONAL_INFO); DecodeString(pAddInfo, SIZE_MERC_ADDITIONAL_INFO); Loc::Translate(pAddInfo, SIZE_MERC_ADDITIONAL_INFO, lang); props.setStringProperty(L"Add", vfs::toString(i), pAddInfo); } props.writeToXMLFile(L"Localization/AimBiographies.xml", vfs::PropertyContainer::TagMap()); } void Loc::ExportAIMHistory() { Loc::Language lang = gs_Lang; #define AIM_HISTORY_LINE_SIZE 400 * 2 vfs::String::char_t pHistLine[AIM_HISTORY_LINE_SIZE]; vfs::COpenReadFile rfile("BINARYDATA\\AimHist.edt"); vfs::tReadableFile& file = rfile.file(); vfs::PropertyContainer props; for(int i=0; i<23; ++i) { memset(pHistLine,0,AIM_HISTORY_LINE_SIZE*sizeof(wchar_t)); // file.read((vfs::Byte*)pHistLine, AIM_HISTORY_LINE_SIZE); DecodeString(pHistLine,AIM_HISTORY_LINE_SIZE); Loc::Translate(pHistLine, AIM_HISTORY_LINE_SIZE, lang); props.setStringProperty(L"Line", vfs::toString(i), pHistLine); } props.writeToXMLFile(L"Localization/AimHistory.xml", vfs::PropertyContainer::TagMap()); } void Loc::ExportAIMPolicy() { Loc::Language lang = gs_Lang; #define AIM_HISTORY_LINE_SIZE 400 * 2 vfs::String::char_t pPolLine[AIM_HISTORY_LINE_SIZE]; vfs::COpenReadFile rfile("BINARYDATA\\AimPol.edt"); vfs::tReadableFile& file = rfile.file(); vfs::PropertyContainer props; for(int i=0; i<46; ++i) { memset(pPolLine,0,400*sizeof(wchar_t)); // file.read((vfs::Byte*)pPolLine, AIM_HISTORY_LINE_SIZE); DecodeString(pPolLine,AIM_HISTORY_LINE_SIZE); Loc::Translate(pPolLine, AIM_HISTORY_LINE_SIZE, lang); props.setStringProperty(L"Line", vfs::toString(i), pPolLine); } props.writeToXMLFile(L"Localization/AimPolicy.xml", vfs::PropertyContainer::TagMap()); } void Loc::ExportAlumniName() { Loc::Language lang = gs_Lang; #define AIM_ALUMNI_NAME_SIZE 80 * 2 vfs::String::char_t pAlumniName[AIM_ALUMNI_NAME_SIZE]; vfs::COpenReadFile rfile("BINARYDATA\\AlumName.edt"); vfs::tReadableFile& file = rfile.file(); vfs::PropertyContainer props; for(int i=0; i<51; ++i) { memset(pAlumniName,0,AIM_ALUMNI_NAME_SIZE*sizeof(wchar_t)); // file.read((vfs::Byte*)pAlumniName, AIM_ALUMNI_NAME_SIZE); DecodeString(pAlumniName,AIM_ALUMNI_NAME_SIZE); Loc::Translate(pAlumniName, AIM_ALUMNI_NAME_SIZE, lang); props.setStringProperty(L"Line", vfs::toString(i), pAlumniName); } props.writeToXMLFile(L"Localization/AlumniName.xml", vfs::PropertyContainer::TagMap()); } #include void Loc::ExportDialogues() { Loc::Language lang = gs_Lang; #define DIALOGUESIZE 480 vfs::String::char_t pDiagLine[DIALOGUESIZE]; vfs::CVirtualFileSystem::Iterator it = getVFS()->begin(L"MercEdt/*.edt"); for(; !it.end(); it.next()) { vfs::PropertyContainer props; vfs::COpenReadFile rfile(it.value()); vfs::tReadableFile& file = rfile.file(); std::wstringstream wss; wss.str(file.getName().c_str()); int id=0; wss >> id; for(int i=0; i<200; ++i) { memset(pDiagLine,0,DIALOGUESIZE*sizeof(wchar_t)); // if(file.read((vfs::Byte*)pDiagLine, DIALOGUESIZE) > 0) { DecodeString(pDiagLine,DIALOGUESIZE); Loc::Translate(pDiagLine, DIALOGUESIZE, lang); if(wcslen(pDiagLine)) { props.setStringProperty(vfs::toString(id),vfs::toString(i), pDiagLine); } } } vfs::Path x(L"Localization/Dialogue"); x += vfs::Path(file.getName().c_wcs() + L".xml"); props.writeToXMLFile(x, vfs::PropertyContainer::TagMap()); } } void Loc::ExportNPCDialogues() { Loc::Language lang = gs_Lang; #define DIALOGUESIZE 480 #define CIVQUOTESIZE 320 vfs::String::char_t pDiagLine[DIALOGUESIZE]; vfs::CVirtualFileSystem::Iterator it = getVFS()->begin(L"npcdata/*.edt"); for(; !it.end(); it.next()) { vfs::PropertyContainer props; vfs::COpenReadFile rfile(it.value()); vfs::tReadableFile& file = rfile.file(); vfs::String::str_t const& ws = file.getName().c_wcs(); vfs::String::str_t::size_type pos = ws.find_first_of(L"."); vfs::String id = ws.substr(0,pos); int SIZE; if(vfs::matchPattern(L"civ*", id)) { SIZE = CIVQUOTESIZE; } else { SIZE = DIALOGUESIZE; } for(int i=0; i<200; ++i) { memset(pDiagLine,0,DIALOGUESIZE*sizeof(wchar_t)); // if(file.read((vfs::Byte*)pDiagLine, SIZE) > 0) { DecodeString(pDiagLine,SIZE); Loc::Translate(pDiagLine, SIZE, lang); if(wcslen(pDiagLine)) { props.setStringProperty(id,vfs::toString(i), pDiagLine); } } } vfs::Path x(L"Localization/NpcDialogue"); x += vfs::Path(file.getName().c_wcs() + L".xml"); props.writeToXMLFile(x, vfs::PropertyContainer::TagMap()); } }