X-Git-Url: http://deadsoftware.ru/gitweb?p=d2df-editor.git;a=blobdiff_plain;f=src%2Feditor%2Fg_language.pas;h=7d4f2d83c869aca819ce76a250843520163f549d;hp=cf9998fc8c0444dcf8d35ace2990668195f52ad1;hb=HEAD;hpb=1f9dfb4b1c61b040c35706dba61a12e8ed627449 diff --git a/src/editor/g_language.pas b/src/editor/g_language.pas index cf9998f..7d4f2d8 100644 --- a/src/editor/g_language.pas +++ b/src/editor/g_language.pas @@ -4,624 +4,640 @@ Interface -Uses - g_Basic, MAPDEF; - -Type - TStrings_Locale = ( - I_NOT_ACCESSIBLE, - - I_ARRAY_BOOL_FALSE, - I_ARRAY_BOOL_TRUE, - - I_ARRAY_DIR_LEFT, - I_ARRAY_DIR_RIGHT, - I_ARRAY_DIR_SAME, - I_ARRAY_DIR_REVERSED, - - I_ARRAY_DIRBTN_LEFT, - I_ARRAY_DIRBTN_RIGHT, - I_ARRAY_DIRBTN_UP, - I_ARRAY_DIRBTN_DOWN, - - I_ARRAY_PANEL_WALL, - I_ARRAY_PANEL_BACK, - I_ARRAY_PANEL_FRONT, - I_ARRAY_PANEL_DOOR_OPEN, - I_ARRAY_PANEL_DOOR_CLOSE, - I_ARRAY_PANEL_STAIR, - I_ARRAY_PANEL_WATER, - I_ARRAY_PANEL_ACID_1, - I_ARRAY_PANEL_ACID_2, - I_ARRAY_PANEL_LIFT_UP, - I_ARRAY_PANEL_LIFT_DOWN, - I_ARRAY_PANEL_LIFT_LEFT, - I_ARRAY_PANEL_LIFT_RIGHT, - I_ARRAY_PANEL_BLOCKMON, - - I_ARRAY_FX_NONE, - I_ARRAY_FX_TELEPORT, - I_ARRAY_FX_RESPAWN, - I_ARRAY_FX_FIRE, - - I_ARRAY_ITEM_MEDKIT, - I_ARRAY_ITEM_LARGE_MEDKIT, - I_ARRAY_ITEM_BLACK_MEDKIT, - I_ARRAY_ITEM_GREEN_ARMOR, - I_ARRAY_ITEM_BLUE_ARMOR, - I_ARRAY_ITEM_BLUE_SPHERE, - I_ARRAY_ITEM_MEGASPHERE, - I_ARRAY_ITEM_HAZ_SUIT, - I_ARRAY_ITEM_OXYGEN, - I_ARRAY_ITEM_INVULNERABILITY, - I_ARRAY_ITEM_CHAINSAW, - I_ARRAY_ITEM_SHOTGUN, - I_ARRAY_ITEM_DB_SHOTGUN, - I_ARRAY_ITEM_CHAINGUN, - I_ARRAY_ITEM_ROCKET_LAUNCHER, - I_ARRAY_ITEM_PLASMA_RIFLE, - I_ARRAY_ITEM_BFG, - I_ARRAY_ITEM_SUPER_MINIGUN, - I_ARRAY_ITEM_FLAMETHROWER, - I_ARRAY_ITEM_CLIP, - I_ARRAY_ITEM_AMMO_BOX, - I_ARRAY_ITEM_4_SHELLS, - I_ARRAY_ITEM_25_SHELLS, - I_ARRAY_ITEM_1_ROCKET, - I_ARRAY_ITEM_ROCKET_BOX, - I_ARRAY_ITEM_CELL, - I_ARRAY_ITEM_LARGE_CELL, - I_ARRAY_ITEM_FUELCAN, - I_ARRAY_ITEM_BACKPACK, - I_ARRAY_ITEM_KEY_RED, - I_ARRAY_ITEM_KEY_GREEN, - I_ARRAY_ITEM_KEY_BLUE, - I_ARRAY_ITEM_BOTTLE, - I_ARRAY_ITEM_HELMET, - I_ARRAY_ITEM_JETPACK, - I_ARRAY_ITEM_INVIS, - - I_ARRAY_SHOT_PISTOL, - I_ARRAY_SHOT_BULLET, - I_ARRAY_SHOT_SHOTGUN, - I_ARRAY_SHOT_SSG, - I_ARRAY_SHOT_IMP, - I_ARRAY_SHOT_PLASMA, - I_ARRAY_SHOT_SPIDER, - I_ARRAY_SHOT_CACO, - I_ARRAY_SHOT_BARON, - I_ARRAY_SHOT_MANCUB, - I_ARRAY_SHOT_REV, - I_ARRAY_SHOT_ROCKET, - I_ARRAY_SHOT_BFG, - I_ARRAY_SHOT_EXPL, - I_ARRAY_SHOT_BFGEXPL, - - I_ARRAY_MON_DEMON, - I_ARRAY_MON_IMP, - I_ARRAY_MON_ZOMBIE, - I_ARRAY_MON_SERGEANT, - I_ARRAY_MON_CYBER, - I_ARRAY_MON_CGUN, - I_ARRAY_MON_HELL_BARON, - I_ARRAY_MON_HELL_KNIGHT, - I_ARRAY_MON_CACODEMON, - I_ARRAY_MON_LOST_SOUL, - I_ARRAY_MON_PAIN_ELEMENTAL, - I_ARRAY_MON_MASTERMIND, - I_ARRAY_MON_ARACHNATRON, - I_ARRAY_MON_MANCUBUS, - I_ARRAY_MON_REVENANT, - I_ARRAY_MON_ARCHVILE, - I_ARRAY_MON_FISH, - I_ARRAY_MON_BARREL, - I_ARRAY_MON_ROBOT, - I_ARRAY_MON_PRIKOLIST, - - I_ARRAY_AREA_PLAYER_ONE, - I_ARRAY_AREA_PLAYER_TWO, - I_ARRAY_AREA_DM, - I_ARRAY_AREA_FLAG_RED, - I_ARRAY_AREA_FLAG_BLUE, - I_ARRAY_AREA_FLAG_DOM, - I_ARRAY_AREA_TEAM_RED, - I_ARRAY_AREA_TEAM_BLUE, - - I_ARRAY_TR_EXIT, - I_ARRAY_TR_TELEPORT, - I_ARRAY_TR_DOOR_OPEN, - I_ARRAY_TR_DOOR_CLOSE, - I_ARRAY_TR_DOOR_SWITCH, - I_ARRAY_TR_DOOR_5_SEC, - I_ARRAY_TR_TRAP_CLOSE, - I_ARRAY_TR_TRAP, - I_ARRAY_TR_EXTEND, - I_ARRAY_TR_SECRET, - I_ARRAY_TR_LIFT_UP, - I_ARRAY_TR_LIFT_DOWN, - I_ARRAY_TR_LIFT_SWITCH, - I_ARRAY_TR_TEXTURE, - I_ARRAY_TR_ON, - I_ARRAY_TR_OFF, - I_ARRAY_TR_SWITCH, - I_ARRAY_TR_SOUND, - I_ARRAY_TR_SPAWN_MONSTER, - I_ARRAY_TR_SPAWN_ITEM, - I_ARRAY_TR_MUSIC, - I_ARRAY_TR_PUSH, - I_ARRAY_TR_SCORE, - I_ARRAY_TR_MESSAGE, - I_ARRAY_TR_DAMAGE, - I_ARRAY_TR_HEALTH, - I_ARRAY_TR_SHOT, - I_ARRAY_TR_EFFECT, - - I_PROP_ID, - I_PROP_X, - I_PROP_Y, - I_PROP_WIDTH, - I_PROP_HEIGHT, - I_PROP_PANEL_TYPE, - I_PROP_PANEL_TEX, - I_PROP_PANEL_ALPHA, - I_PROP_PANEL_BLEND, - I_PROP_DM_ONLY, - I_PROP_ITEM_FALLS, - I_PROP_DIRECTION, - - I_PROP_TR_TYPE, - I_PROP_TR_ENABLED, - I_PROP_TR_TEXTURE_PANEL, - I_PROP_TR_ACTIVATION, - I_PROP_TR_KEYS, - I_PROP_TR_D2D, - I_PROP_TR_SILENT, - I_PROP_TR_COUNT, - I_PROP_TR_INTERVAL, - I_PROP_TR_HEALTH, - I_PROP_TR_NEXT_MAP, - I_PROP_TR_TELEPORT_TO, - I_PROP_TR_TELEPORT_SILENT, - I_PROP_TR_TELEPORT_DIR, - I_PROP_TR_DOOR_PANEL, - I_PROP_TR_TRAP_PANEL, - I_PROP_TR_EX_AREA, - I_PROP_TR_EX_DELAY, - I_PROP_TR_EX_COUNT, - I_PROP_TR_EX_MONSTER, - I_PROP_TR_EX_RANDOM, - I_PROP_TR_LIFT_PANEL, - I_PROP_TR_TEXTURE_ONCE, - I_PROP_TR_TEXTURE_ANIM_ONCE, - I_PROP_TR_SOUND_NAME, - I_PROP_TR_SOUND_VOLUME, - I_PROP_TR_SOUND_PAN, - I_PROP_TR_SOUND_COUNT, - I_PROP_TR_SOUND_LOCAL, - I_PROP_TR_SOUND_SWITCH, - I_PROP_TR_FX_TYPE, - I_PROP_TR_SPAWN_TO, - I_PROP_TR_SPAWN_MAX, - I_PROP_TR_SPAWN_DELAY, - I_PROP_TR_MONSTER_TYPE, - I_PROP_TR_MONSTER_ACTIVE, - I_PROP_TR_MONSTER_BEHAVIOUR, - I_PROP_TR_MONSTER_BEHAVIOUR_0, - I_PROP_TR_MONSTER_BEHAVIOUR_1, - I_PROP_TR_MONSTER_BEHAVIOUR_2, - I_PROP_TR_MONSTER_BEHAVIOUR_3, - I_PROP_TR_MONSTER_BEHAVIOUR_4, - I_PROP_TR_MONSTER_BEHAVIOUR_5, - I_PROP_TR_ITEM_TYPE, - I_PROP_TR_MUSIC_NAME, - I_PROP_TR_MUSIC_ACT, - I_PROP_TR_MUSIC_ON, - I_PROP_TR_MUSIC_OFF, - I_PROP_TR_PUSH_ANGLE, - I_PROP_TR_PUSH_FORCE, - I_PROP_TR_PUSH_RESET, - I_PROP_TR_SCORE_ACT, - I_PROP_TR_SCORE_ACT_0, - I_PROP_TR_SCORE_ACT_1, - I_PROP_TR_SCORE_ACT_2, - I_PROP_TR_SCORE_ACT_3, - I_PROP_TR_SCORE_TEAM, - I_PROP_TR_SCORE_TEAM_0, - I_PROP_TR_SCORE_TEAM_1, - I_PROP_TR_SCORE_TEAM_2, - I_PROP_TR_SCORE_TEAM_3, - I_PROP_TR_SCORE_CON, - I_PROP_TR_SCORE_MSG, - I_PROP_TR_DAMAGE_VALUE, - I_PROP_TR_HEALTH_MAX, - I_PROP_TR_SHOT_TYPE, - I_PROP_TR_SHOT_SOUND, - I_PROP_TR_SHOT_ANGLE, - I_PROP_TR_SHOT_ACC, - I_PROP_TR_SHOT_TO, - I_PROP_TR_SHOT_TO_0, - I_PROP_TR_SHOT_TO_1, - I_PROP_TR_SHOT_TO_2, - I_PROP_TR_SHOT_TO_3, - I_PROP_TR_SHOT_TO_4, - I_PROP_TR_SHOT_TO_5, - I_PROP_TR_SHOT_TO_6, - I_PROP_TR_SHOT_AIM, - I_PROP_TR_SHOT_AIM_0, - I_PROP_TR_SHOT_AIM_1, - I_PROP_TR_SHOT_AIM_2, - I_PROP_TR_SHOT_AIM_3, - I_PROP_TR_SHOT_AMMO, - I_PROP_TR_SHOT_RELOAD, - I_PROP_TR_SHOT_SIGHT, - I_PROP_TR_SHOT_PANEL, - I_PROP_TR_MESSAGE_KIND, - I_PROP_TR_MESSAGE_KIND_0, - I_PROP_TR_MESSAGE_KIND_1, - I_PROP_TR_MESSAGE_TO, - I_PROP_TR_MESSAGE_TO_0, - I_PROP_TR_MESSAGE_TO_1, - I_PROP_TR_MESSAGE_TO_2, - I_PROP_TR_MESSAGE_TO_3, - I_PROP_TR_MESSAGE_TO_4, - I_PROP_TR_MESSAGE_TO_5, - I_PROP_TR_MESSAGE_TEXT, - I_PROP_TR_MESSAGE_TIME, - I_PROP_TR_EFFECT_TYPE, - I_PROP_TR_EFFECT_SUBTYPE, - I_PROP_TR_EFFECT_COLOR, - I_PROP_TR_EFFECT_CENTER, - I_PROP_TR_EFFECT_VELX, - I_PROP_TR_EFFECT_VELY, - I_PROP_TR_EFFECT_SPL, - I_PROP_TR_EFFECT_SPR, - I_PROP_TR_EFFECT_SPU, - I_PROP_TR_EFFECT_SPD, - I_PROP_TR_EFFECT_PARTICLE, - I_PROP_TR_EFFECT_ANIMATION, - I_PROP_TR_EFFECT_SLIQUID, - I_PROP_TR_EFFECT_LLIQUID, - I_PROP_TR_EFFECT_DLIQUID, - I_PROP_TR_EFFECT_BLOOD, - I_PROP_TR_EFFECT_SPARK, - I_PROP_TR_EFFECT_BUBBLE, - - I_MSG_ERROR, - I_MSG_WRONG_TEXWIDTH, - I_MSG_WRONG_TEXHEIGHT, - I_MSG_WRONG_ALPHA, - I_MSG_WRONG_SIZE, - I_MSG_WRONG_XY, - I_MSG_TEXTURE_ALREADY, - I_MSG_RES_NAME_64, - I_MSG_CHOOSE_ITEM, - I_MSG_CHOOSE_MONSTER, - I_MSG_CHOOSE_AREA, - I_MSG_CHOOSE_TEXTURE, - I_MSG_CHOOSE_RES, - I_MSG_EXIT, - I_MSG_EXIT_PROMT, - I_MSG_DEL_TEXTURE, - I_MSG_DEL_TEXTURE_PROMT, - I_MSG_DEL_TEXTURE_CANT, - I_MSG_DEL_RECENT, - I_MSG_DEL_RECENT_PROMT, - I_MSG_CLEAR_MAP, - I_MSG_CLEAR_MAP_PROMT, - I_MSG_DELETE_MAP, - I_MSG_DELETE_MAP_PROMT, - I_MSG_MAP_DELETED, - I_MSG_MAP_DELETED_PROMT, - I_MSG_REOPEN_MAP_PROMT, - I_MSG_EXEC_ERROR, - I_MSG_SOUND_ERROR, - I_MSG_WAD_ERROR, - I_MSG_RES_ERROR, - I_MSG_PACKED, - I_MSG_MAP_EXISTS, - I_MSG_SAVE_MAP, - - I_HINT_TELEPORT, - I_HINT_SPAWN, - I_HINT_PANEL_DOOR, - I_HINT_PANEL_TEXTURE, - I_HINT_PANEL_SHOT, - I_HINT_PANEL_LIFT, - I_HINT_MONSTER, - I_HINT_EXT_AREA, - I_HINT_WIDTH, - I_HINT_HEIGHT, - - I_MENU_FILE, - I_MENU_FILE_NEW, - I_MENU_FILE_OPEN, - I_MENU_FILE_SAVE, - I_MENU_FILE_SAVE_AS, - I_MENU_FILE_OPEN_WAD, - I_MENU_FILE_REOPEN, - I_MENU_FILE_SAVE_MINI, - I_MENU_FILE_DELETE, - I_MENU_FILE_PACK_MAP, - I_MENU_FILE_EXIT, - - I_MENU_EDIT, - I_MENU_EDIT_UNDO, - I_MENU_EDIT_COPY, - I_MENU_EDIT_CUT, - I_MENU_EDIT_PASTE, - I_MENU_EDIT_SELECT_ALL, - I_MENU_EDIT_TO_FORE, - I_MENU_EDIT_TO_BACK, - - I_MENU_TOOLS, - I_MENU_TOOLS_SNAP_GRID, - I_MENU_TOOLS_MINIMAP, - I_MENU_TOOLS_STEP_GRID, - I_MENU_TOOLS_SHOW_EDGES, - I_MENU_TOOLS_LAYERS, - - I_MENU_SERV, - I_MENU_SERV_TEST, - I_MENU_SERV_OPT, - I_MENU_SERV_PREVIEW, - I_MENU_SERV_LAUNCH, - - I_MENU_SETS, - I_MENU_SETS_MAP, - I_MENU_SETS_EDITOR, - I_MENU_SETS_LAUNCH, - - I_MENU_HELP, - I_MENU_HELP_ABOUT, - - I_MENU_LAYER_BACK, - I_MENU_LAYER_WALL, - I_MENU_LAYER_FORE, - I_MENU_LAYER_STAIR, - I_MENU_LAYER_WATER, - I_MENU_LAYER_ITEM, - I_MENU_LAYER_MONSTER, - I_MENU_LAYER_AREA, - I_MENU_LAYER_TRIGGER, - - I_MENU_TB_NEW, - I_MENU_TB_OPEN, - I_MENU_TB_SAVE, - I_MENU_TB_OPEN_WAD, - I_MENU_TB_MINIMAP, - I_MENU_TB_LAYERS, - I_MENU_TB_GRID, - I_MENU_TB_GRID_STEP, - I_MENU_TB_LAUNCH, - - I_MENU_LAUNCH_SETS, - - I_CAP_FX_TYPE, - I_CAP_MONSTER_TYPE, - I_CAP_ITEM_TYPE, - I_CAP_ABOUT, - I_CAP_ACT, - I_CAP_ADD_SKY, - I_CAP_ADD_SOUND, - I_CAP_ADD_TEXTURE, - I_CAP_KEYS, - I_CAP_TEST, - I_CAP_OPT, - I_CAP_SETS, - I_CAP_LAUNCH, - I_CAP_ES, - I_CAP_PACK, - I_CAP_SAVE, - I_CAP_MINI, - I_CAP_SELECT, - I_CAP_OPEN, - I_CAP_REMOVE, - I_CAP_TEXTURE, - I_CAP_ANIMATION, - I_CAP_STAT_SELECTED, - - I_CTRL_PROP_KEY, - I_CTRL_PROP_VALUE, - I_CTRL_PANELS, - I_CTRL_ITEMS, - I_CTRL_MONSTERS, - I_CTRL_AREAS, - I_CTRL_TRIGGERS, - - I_CTRL_LIST_TEXTURE, - I_CTRL_LIST_ITEM, - I_CTRL_LIST_MONSTER, - I_CTRL_LIST_AREA, - I_CTRL_LIST_TRIGGER, - I_CTRL_LIST_ACTIVE, - I_CTRL_LIST_KEYS, - - I_CTRL_PREVIEW, - I_CTRL_ITEM_DM, - I_CTRL_ITEM_FALLS, - I_CTRL_LEFT, - I_CTRL_RIGHT, - - I_CTRL_ACT_PLAYER_CLOSE, - I_CTRL_ACT_MONSTER_CLOSE, - I_CTRL_ACT_PLAYER_PRESS, - I_CTRL_ACT_MONSTER_PRESS, - I_CTRL_ACT_SHOT, - I_CTRL_ACT_NO_MONSTER, - - I_CTRL_KEYS_RED, - I_CTRL_KEYS_GREEN, - I_CTRL_KEYS_BLUE, - I_CTRL_KEYS_TEAM_RED, - I_CTRL_KEYS_TEAM_BLUE, - - I_CTRL_OPT_GB, - I_CTRL_OPT_TEXTURE, - I_CTRL_OPT_PANEL, - I_CTRL_OPT_WALL, - I_CTRL_OPT_FORE, - I_CTRL_OPT_BACK, - I_CTRL_OPT_STAIR, - I_CTRL_OPT_WATER, - I_CTRL_OPT_ACID1, - I_CTRL_OPT_ACID2, - I_CTRL_OPT_LIFT, - I_CTRL_OPT_BLOCKMON, - I_CTRL_OPT_DESC_TEXTURE, - I_CTRL_OPT_DESC_PANEL, - - I_CTRL_SETS_STATS, - I_CTRL_SETS_SIZES, - - I_CTRL_LAUNCH_DM, - I_CTRL_LAUNCH_TDM, - I_CTRL_LAUNCH_CTF, - I_CTRL_LAUNCH_COOP, - I_CTRL_LAUNCH_2P, - I_CTRL_LAUNCH_FF, - I_CTRL_LAUNCH_EXIT, - I_CTRL_LAUNCH_WEAPONS, - I_CTRL_LAUNCH_MONSTERS, - I_CTRL_LAUNCH_CLOSE, - I_CTRL_LAUNCH_OPEN, - - I_CTRL_ES_GRID, - I_CTRL_ES_TEXTURE, - I_CTRL_ES_PANEL_SIZE, - I_CTRL_ES_CHECKERBOARD, - - I_CTRL_PACK_TEXTURES, - I_CTRL_PACK_SKY, - I_CTRL_PACK_MUSIC, - I_CTRL_PACK_ADD, - I_CTRL_PACK_NON_STD, - - I_LAB_TEX_WIDTH, - I_LAB_TEX_HEIGHT, - - I_LAB_SPECTRUM, - - I_LAB_ABOUT_VER, - I_LAB_ABOUT_AUTHOR, - I_LAB_ABOUT_AUTHOR_2, - I_LAB_ABOUT_MAIL, - I_LAB_ABOUT_MAIL_2, - I_LAB_ABOUT_SITE, - I_LAB_ABOUT_HTTP, - - I_LAB_ADD_WADS, - I_LAB_ADD_SECTIONS, - - I_LAB_SETS_NAME, - I_LAB_SETS_DESC, - I_LAB_SETS_AUTHOR, - I_LAB_SETS_BACK, - I_LAB_SETS_MUSIC, - I_LAB_SETS_TEXTURES, - I_LAB_SETS_PANELS, - I_LAB_SETS_ITEMS, - I_LAB_SETS_MONSTERS, - I_LAB_SETS_AREAS, - I_LAB_SETS_TRIGGERS, - I_LAB_SETS_SIZES, - I_LAB_SETS_WIDTH, - I_LAB_SETS_HEIGHT, - I_LAB_SETS_MAPMOVE, - I_LAB_SETS_SNAPPING, - - I_LAB_LAUNCH_TIME, - I_LAB_LAUNCH_SECS, - I_LAB_LAUNCH_SCORE, - I_LAB_LAUNCH_PATH, - - I_LAB_ES_GRID, - I_LAB_ES_GRID_COLOR, - I_LAB_ES_GRID_SIZE, - I_LAB_ES_BACK, - I_LAB_ES_PREVIEW, - I_LAB_ES_MINIMAP, - I_LAB_ES_RECENT, - I_LAB_ES_LANGUAGE, - - I_LAB_PACK_SAVE_TO, - I_LAB_PACK_MAP_NAME, - I_LAB_PACK_TEXTURES, - I_LAB_PACK_SKY, - I_LAB_PACK_MUSIC, - - I_LAB_MINI_SCALE, - - I_BTN_APPLY_PROPS, - I_BTN_OK, - I_BTN_CANCEL, - I_BTN_ADD, - I_BTN_CLOSE, - I_BTN_ADD_CLOSE, - I_BTN_TEST_AGAIN, - I_BTN_START, - I_BTN_PACK, - I_BTN_SAVE, - I_BTN_NO_SOUND, - I_BTN_TEXTURE_ADD, - I_BTN_TEXTURE_DELETE, - I_BTN_TEXTURE_EMPTY, - - I_LOAD_WAD, - I_LOAD_MAP, - I_LOAD_TEXTURES, - I_LOAD_PANELS, - I_LOAD_ITEMS, - I_LOAD_MONSTERS, - I_LOAD_AREAS, - I_LOAD_TRIGGERS, - - I_TEST_AREA_WALL, - I_TEST_AREA_WALL_STR, - I_TEST_SPAWNS_1, - I_TEST_SPAWNS_2, - I_TEST_SPAWNS, - I_TEST_NO_DM, - I_TEST_NO_DM_EX, - I_TEST_MONSTER_WALL, - I_TEST_MONSTER_WALL_STR, - - I_OPT_NO_TEXTURES, - I_OPT_DELETED_TEXTURES, - I_OPT_TOTAL_TEXTURES, - I_OPT_TEX_DELETED, - I_OPT_PANELS_OPT, - I_OPT_WALLS, - I_OPT_FORES, - I_OPT_BACKS, - I_OPT_STAIRS, - I_OPT_WATER, - I_OPT_ACID1, - I_OPT_ACID2, - I_OPT_LIFTS, - I_OPT_BLOCKMON, - I_OPT_TOTAL_PANELS, - I_OPT_PANELS_AFTER, - - I_WAD_SPECIAL_MAP, - I_WAD_SPECIAL_TEXS, - - I_FILE_FILTER_ALL, - I_FILE_FILTER_WAD, - - I_EDITOR_TITLE, - - I_LAST ); - -Const - LANGUAGE_RUSSIAN = 'Russian'; - LANGUAGE_ENGLISH = 'English'; - LANGUAGE_RUSSIAN_N = 3; - LANGUAGE_ENGLISH_N = 2; + uses g_Basic, MAPDEF, Classes; + + resourcestring + MsgNotAccessible = 'N/A'; + + MsgArrayBoolFalse = 'No'; + MsgArrayBoolTrue = 'Yes'; + + MsgArrayDirLeft = 'Left'; + MsgArrayDirRight = 'Right'; + MsgArrayDirSame = 'Don''t change'; + MsgArrayDirReversed = 'Reversed'; + + MsgArrayDirbtnLeft = 'Left'; + MsgArrayDirbtnRight = 'Right'; + MsgArrayDirbtnUp = 'Up'; + MsgArrayDirbtnDown = 'Down'; + + MsgArrayPanelWall = 'Wall'; + MsgArrayPanelBack = 'Background'; + MsgArrayPanelFront = 'Foreground'; + MsgArrayPanelDoorOpen = 'Open Door'; + MsgArrayPanelDoorClose = 'Closed Door'; + MsgArrayPanelStair = 'Step'; + MsgArrayPanelWater = 'Water'; + MsgArrayPanelAcid1 = 'Acid 1'; + MsgArrayPanelAcid2 = 'Acid 2'; + MsgArrayPanelLiftUp = 'Stream Up'; + MsgArrayPanelLiftDown = 'Stream Down'; + MsgArrayPanelLiftLeft = 'Stream Left'; + MsgArrayPanelLiftRight = 'Stream Right'; + MsgArrayPanelBlockmon = 'Monster Boundary'; + + MsgArrayFxNone = 'None'; + MsgArrayFxTeleport = 'Teleport'; + MsgArrayFxRespawn = 'Respawn'; + MsgArrayFxFire = 'Arch-Vile Fire'; + + MsgArrayItemMedkit = 'Stimpack'; + MsgArrayItemLargeMedkit = 'Medikit'; + MsgArrayItemBlackMedkit = 'Berserk Pack'; + MsgArrayItemGreenArmor = 'Green Armor'; + MsgArrayItemBlueArmor = 'Blue Armor'; + MsgArrayItemBlueSphere = 'Soulsphere'; + MsgArrayItemMegasphere = 'Megasphere'; + MsgArrayItemHazSuit = 'Envirosuit'; + MsgArrayItemOxygen = 'Scuba'; + MsgArrayItemInvulnerability = 'Invulnerability'; + MsgArrayItemChainsaw = 'Chainsaw'; + MsgArrayItemShotgun = 'Shotgun'; + MsgArrayItemDbShotgun = 'Super Shotgun'; + MsgArrayItemChaingun = 'Chaingun'; + MsgArrayItemRocketLauncher = 'Rocket Launcher'; + MsgArrayItemPlasmaRifle = 'Plasma Rifle'; + MsgArrayItemBfg = 'BFG9000'; + MsgArrayItemSuperChaingun = 'Super Chaingun'; + MsgArrayItemFlamethrower = 'Flamethrower'; + MsgArrayItemClip = 'Clip'; + MsgArrayItemAmmoBox = 'Box of Bullets'; + MsgArrayItem4Shells = '4 Shells'; + MsgArrayItem25Shells = 'Box of Shells'; + MsgArrayItem1Rocket = 'Rocket'; + MsgArrayItemRocketBox = 'Box of Rockets'; + MsgArrayItemCell = 'Energy Cell'; + MsgArrayItemLargeCell = 'Energy Cell Pack'; + MsgArrayItemFuelcan = 'Fuel Canister'; + MsgArrayItemBackpack = 'Backpack'; + MsgArrayItemKeyRed = 'Red Key'; + MsgArrayItemKeyGreen = 'Green Key'; + MsgArrayItemKeyBlue = 'Blue Key'; + MsgArrayItemBottle = 'Health Globe'; + MsgArrayItemHelmet = 'Armor Shard'; + MsgArrayItemJetpack = 'Jetpack'; + MsgArrayItemInvis = 'Invisibility'; + + MsgArrayShotPistol = 'Pistol shot'; + MsgArrayShotBullet = 'Chaingun shot'; + MsgArrayShotShotgun = 'Shotgun shot'; + MsgArrayShotSsg = 'Super Shotgun shot'; + MsgArrayShotImp = 'Imp fireball'; + MsgArrayShotPlasma = 'Blue plasma'; + MsgArrayShotSpider = 'Arachnotron plasma'; + MsgArrayShotCaco = 'Cacodemon fireball'; + MsgArrayShotBaron = 'Hell Baron projectile'; + MsgArrayShotMancub = 'Mancubus gunshot'; + MsgArrayShotRev = 'Revenant projectile'; + MsgArrayShotRocket = 'Rocket'; + MsgArrayShotBfg = 'BFG ball'; + MsgArrayShotExpl = 'Explosion'; + MsgArrayShotBfgexpl = 'BFG explosion'; + MsgArrayShotFlame = 'Flame'; + + MsgArrayMonDemon = 'Pinky'; + MsgArrayMonImp = 'Imp'; + MsgArrayMonZombie = 'Zombie'; + MsgArrayMonSergeant = 'Sergeant'; + MsgArrayMonCyber = 'Cyberdemon'; + MsgArrayMonCgun = 'Commando'; + MsgArrayMonHellBaron = 'Hell Baron'; + MsgArrayMonHellKnight = 'Hell Knight'; + MsgArrayMonCacodemon = 'Cacodemon'; + MsgArrayMonLostSoul = 'Lost Soul'; + MsgArrayMonPainElemental = 'Pain Elemental'; + MsgArrayMonMastermind = 'Spider Mastermind'; + MsgArrayMonArachnatron = 'Arachnotron'; + MsgArrayMonMancubus = 'Mancubus'; + MsgArrayMonRevenant = 'Revenant'; + MsgArrayMonArchvile = 'Arch-Vile'; + MsgArrayMonFish = 'Piranha'; + MsgArrayMonBarrel = 'Barrel'; + MsgArrayMonRobot = 'Robot'; + MsgArrayMonPrikolist = 'Prikolist'; + + MsgArrayAreaPlayerOne = 'Player 1'; + MsgArrayAreaPlayerTwo = 'Player 2'; + MsgArrayAreaDm = 'DM Spawn Point'; + MsgArrayAreaFlagRed = 'Red Flag'; + MsgArrayAreaFlagBlue = 'Blue Flag'; + MsgArrayAreaFlagDom = 'Domination Flag'; + MsgArrayAreaTeamRed = 'Red Team'; + MsgArrayAreaTeamBlue = 'Blue Team'; + + MsgArrayTrExit = 'Exit'; + MsgArrayTrTeleport = 'Teleport'; + MsgArrayTrDoorOpen = 'Open Door'; + MsgArrayTrDoorClose = 'Close Door'; + MsgArrayTrDoorSwitch = 'Door'; + MsgArrayTrDoor5Sec = 'Door (5 sec)'; + MsgArrayTrTrapClose = 'Close Trap'; + MsgArrayTrTrap = 'Trap'; + MsgArrayTrExtend = 'Extender'; + MsgArrayTrSecret = 'Secret'; + MsgArrayTrLiftUp = 'Turn stream up/left'; + MsgArrayTrLiftDown = 'Turn stream down/right'; + MsgArrayTrLiftSwitch = 'Revert stream'; + MsgArrayTrTexture = 'Change Texture'; + MsgArrayTrOn = 'Enable Trigger'; + MsgArrayTrOff = 'Disable Trigger'; + MsgArrayTrSwitch = 'Trigger Toggle'; + MsgArrayTrSound = 'Play Sound'; + MsgArrayTrSpawnMonster = 'Spawn Monster'; + MsgArrayTrSpawnItem = 'Spawn Item'; + MsgArrayTrMusic = 'Play Music'; + MsgArrayTrPush = 'Push'; + MsgArrayTrScore = 'Team Score'; + MsgArrayTrMessage = 'Message'; + MsgArrayTrDamage = 'Damage'; + MsgArrayTrHealth = 'Healer'; + MsgArrayTrShot = 'Turret'; + MsgArrayTrEffect = 'Effect'; + + MsgPropId = 'ID'; + MsgPropX = 'X'; + MsgPropY = 'Y'; + MsgPropWidth = 'Width'; + MsgPropHeight = 'Height'; + MsgPropPanelType = 'Panel Type'; + MsgPropPanelTex = 'Texture'; + MsgPropPanelAlpha = 'Transparency'; + MsgPropPanelBlend = 'Blending'; + MsgPropDmOnly = 'DM Only'; + MsgPropItemFalls = 'Falls'; + MsgPropDirection = 'Direction'; + + MsgPropTrType = 'Trigger Type'; + MsgPropTrEnabled = 'Enabled'; + MsgPropTrTexturePanel = 'Textured Panel'; + MsgPropTrActivation = 'Activation Type'; + MsgPropTrKeys = 'Keys'; + MsgPropTrD2d = 'D2D-like'; + MsgPropTrSilent = 'Silent'; + MsgPropTrCount = 'Count'; + MsgPropTrInterval = 'Interval (in ticks)'; + MsgPropTrHealth = 'Health'; + MsgPropTrNextMap = 'Next Map'; + MsgPropTrTeleportTo = 'Teleport to'; + MsgPropTrTeleportSilent = 'Silent'; + MsgPropTrTeleportDir = 'New Direction'; + MsgPropTrDoorPanel = 'Door Panel'; + MsgPropTrTrapPanel = 'Trap Panel'; + MsgPropTrExArea = 'Action Area'; + MsgPropTrExDelay = 'Delay'; + MsgPropTrExCount = 'Count'; + MsgPropTrExMonster = 'Monster ID'; + MsgPropTrExRandom = 'Random'; + MsgPropTrLiftPanel = 'Stream Panel'; + MsgPropTrTextureOnce = 'Once'; + MsgPropTrTextureAnimOnce = 'Animate Once'; + MsgPropTrSoundName = 'Sound (snd)'; + MsgPropTrSoundVolume = 'Volume'; + MsgPropTrSoundPan = 'Pan'; + MsgPropTrSoundCount = 'Loops'; + MsgPropTrSoundLocal = 'Local'; + MsgPropTrSoundSwitch = 'Switch'; + MsgPropTrFxType = 'Effect'; + MsgPropTrSpawnTo = 'Spawn at'; + MsgPropTrSpawnMax = 'Maximum'; + MsgPropTrSpawnDelay = 'Autospawn (in ticks)'; + MsgPropTrMonsterType = 'Monster'; + MsgPropTrMonsterActive = 'Active'; + MsgPropTrMonsterBehaviour = 'Behaviour'; + MsgPropTrMonsterBehaviour0 = 'Normal'; + MsgPropTrMonsterBehaviour1 = 'Killer'; + MsgPropTrMonsterBehaviour2 = 'Maniac'; + MsgPropTrMonsterBehaviour3 = 'Insane'; + MsgPropTrMonsterBehaviour4 = 'Cannibal'; + MsgPropTrMonsterBehaviour5 = 'Good'; + MsgPropTrItemType = 'Item'; + MsgPropTrMusicName = 'Music'; + MsgPropTrMusicAct = 'Action (m)'; + MsgPropTrMusicOn = 'Play'; + MsgPropTrMusicOff = 'Pause'; + MsgPropTrPushAngle = 'Angle'; + MsgPropTrPushForce = 'Force'; + MsgPropTrPushReset = 'Reset velocity'; + MsgPropTrScoreAct = 'Action (s)'; + MsgPropTrScoreAct0 = 'Add points'; + MsgPropTrScoreAct1 = 'Subtract points'; + MsgPropTrScoreAct2 = 'Team Wins'; + MsgPropTrScoreAct3 = 'Team Loses'; + MsgPropTrScoreTeam = 'Team'; + MsgPropTrScoreTeam0 = 'My'; + MsgPropTrScoreTeam1 = 'Enemy'; + MsgPropTrScoreTeam2 = 'Red'; + MsgPropTrScoreTeam3 = 'Blue'; + MsgPropTrScoreCon = 'Console message'; + MsgPropTrScoreMsg = 'Game message'; + MsgPropTrDamageValue = 'Damage'; + MsgPropTrDamageKind = 'Damage type'; + MsgPropTrDamageKind0 = 'HIT_SOME'; + MsgPropTrDamageKind3 = 'HIT_TRAP'; + MsgPropTrDamageKind4 = 'HIT_FALL'; + MsgPropTrDamageKind5 = 'HIT_WATER'; + MsgPropTrDamageKind6 = 'HIT_ACID'; + MsgPropTrDamageKind7 = 'HIT_ELECTRO'; + MsgPropTrDamageKind8 = 'HIT_FLAME'; + MsgPropTrHealthMax = 'To maximum'; + MsgPropTrShotType = 'Projectile'; + MsgPropTrShotSound = 'Shot sound'; + MsgPropTrShotAngle = 'Angle'; + MsgPropTrShotAcc = 'Spread'; + MsgPropTrShotTo = 'Auto targeting'; + MsgPropTrShotTo0 = 'None'; + MsgPropTrShotTo1 = 'Monsters'; + MsgPropTrShotTo2 = 'Players'; + MsgPropTrShotTo3 = 'Red team'; + MsgPropTrShotTo4 = 'Blue team'; + MsgPropTrShotTo5 = 'Monsters, players'; + MsgPropTrShotTo6 = 'Players, monsters'; + MsgPropTrShotAim = 'Auto-aiming mode'; + MsgPropTrShotAim0 = 'Trigger area'; + MsgPropTrShotAim1 = 'Entire map'; + MsgPropTrShotAim2 = 'Trace trigger area'; + MsgPropTrShotAim3 = 'Trace entire map'; + MsgPropTrShotAmmo = 'Ammo limit'; + MsgPropTrShotReload = 'Reload interval (in ticks)'; + MsgPropTrShotSight = 'Sight interval (in ticks)'; + MsgPropTrShotPanel = 'Indicator panel'; + MsgPropTrMessageKind = 'Message kind'; + MsgPropTrMessageKind0 = 'Console message'; + MsgPropTrMessageKind1 = 'Event message'; + MsgPropTrMessageTo = 'Send to'; + MsgPropTrMessageTo0 = 'Me'; + MsgPropTrMessageTo1 = 'My team'; + MsgPropTrMessageTo2 = 'Enemy team'; + MsgPropTrMessageTo3 = 'Red team'; + MsgPropTrMessageTo4 = 'Blue team'; + MsgPropTrMessageTo5 = 'Everyone'; + MsgPropTrMessageText = 'Message text'; + MsgPropTrMessageTime = 'Time (in ticks)'; + MsgPropTrEffectType = 'Effect type'; + MsgPropTrEffectSubtype = 'Effect subtype'; + MsgPropTrEffectColor = 'Effect color'; + MsgPropTrEffectCenter = 'Trigger center'; + MsgPropTrEffectVelx = 'Horizontal speed'; + MsgPropTrEffectVely = 'Vertical speed'; + MsgPropTrEffectSpl = 'Speed variance left'; + MsgPropTrEffectSpr = 'Speed variance right'; + MsgPropTrEffectSpu = 'Speed variance up'; + MsgPropTrEffectSpd = 'Speed variance down'; + MsgPropTrEffectParticle = 'Particle generator'; + MsgPropTrEffectAnimation = 'Animation'; + MsgPropTrEffectSliquid = 'Water splash'; + MsgPropTrEffectLliquid = 'Light colored splash'; + MsgPropTrEffectDliquid = 'Dark colored splash'; + MsgPropTrEffectBlood = 'Blood'; + MsgPropTrEffectSpark = 'Sparks'; + MsgPropTrEffectBubble = 'Bubbles'; + + MsgMsgError = 'Error'; + MsgMsgWrongTexwidth = 'Panel Width must be a multiple of Texture Width (%d)'; + MsgMsgWrongTexheight = 'Panel Height must be a multiple of Texture Height (%d)'; + MsgMsgWrongAlpha = 'Transparency must be in [0..255] interval'; + MsgMsgWrongSize = 'Width and Height must be greater than 0'; + MsgMsgWrongXy = 'X or Y coordinate hasn''t been set'; + MsgMsgTextureAlready = 'Texture "%s" already exists'; + MsgMsgResName64 = 'Resource "%s" name must not be longer than 64 chars'; + MsgMsgChooseItem = 'Select Item'; + MsgMsgChooseMonster = 'Select Monster'; + MsgMsgChooseArea = 'Select Area'; + MsgMsgChooseTexture = 'Select Texture'; + MsgMsgChooseRes = 'Resource hasn''t been selected'; + MsgMsgExit = 'Exit'; + MsgMsgExitPrompt = 'Leaving so soon?'; + MsgMsgDelTexture = 'Delete the texture'; + MsgMsgDelTexturePrompt = 'Delete the texture "%s" ?'; + MsgMsgDelTextureCant = 'Can''t delete texture in use. Replace it on all panels with this texture.'; + MsgMsgDelRecent = 'File does not longer exist'; + MsgMsgDelRecentPrompt = 'Remove entry from recent list?'; + MsgMsgClearMap = 'New map'; + MsgMsgClearMapPrompt = 'Clear the entire map?'; + MsgMsgDeleteMap = 'Delete the map'; + MsgMsgDeleteMapPrompt = 'Delete the map "%s" from "%s" ?'; + MsgMsgMapDeleted = 'Map is deleted'; + MsgMsgMapDeletedPrompt = 'Map "%s" is deleted'; + MsgMsgReopenMapPrompt = 'Reopen this map?'; + MsgMsgExecError = 'Game start error'; + MsgMsgSoundError = 'Can''t play sound'; + MsgMsgWadError = 'Can''t open WAD: %s'; + MsgMsgResError = 'Can''t read resource: %s:%s\%s'; + MsgMsgPacked = 'Map "%s" with resources saved to "%s"'; + MsgMsgMapExists = 'Map "%s" already exists. Overwrite?'; + MsgMsgSaveMap = 'Save the map'; + + MsgHintTeleport = 'Choose destination of Teleport'; + MsgHintSpawn = 'Choose Spawn point'; + MsgHintPanelDoor = 'Choose Door'; + MsgHintPanelTexture = 'Choose textured Panel'; + MsgHintPanelShot = 'Choose textured shot indicator Panel'; + MsgHintPanelLift = 'Choose Stream Panel'; + MsgHintMonster = 'Choose Monster'; + MsgHintExtArea = 'Specify action Area'; + MsgHintWidth = 'Width: %d'; + MsgHintHeight = 'Height: %d'; + + MsgMenuAppleAbout = 'About Editor'; + MsgMenuApplePref = 'Preferences...'; + + MsgMenuFile = 'File'; + MsgMenuFileNew = 'New'; + MsgMenuFileOpen = 'Open...'; + MsgMenuFileRecentMac = 'Open Recent'; + MsgMenuFileRecentClearMac = 'Clear Recent'; + MsgMenuFileSave = 'Save'; + MsgMenuFileSaveAs = 'Save As...'; + MsgMenuFileOpenWad = 'Select Map...'; + MsgMenuFileReopen = 'Revert to Saved'; + MsgMenuFileSaveMini = 'Save Minimap...'; + MsgMenuFileDelete = 'Remove from WAD...'; + MsgMenuFilePackMap = 'Pack to WAD...'; + MsgMenuFileRecentWin = 'Recent Files'; + MsgMenuFileExitWin = 'Exit'; + + MsgMenuEdit = 'Edit'; + MsgMenuEditUndo = 'Undo'; + MsgMenuEditCopy = 'Copy'; + MsgMenuEditCut = 'Cut'; + MsgMenuEditPaste = 'Paste'; + MsgMenuEditSelectAll = 'Select All'; + MsgMenuEditSnapGrid = 'Snap to Grid'; + MsgMenuEditStepGrid = 'Switch Grid Step'; + MsgMenuEditToFore = 'Bring to Front'; + MsgMenuEditToBack = 'Send to Back'; + MsgMenuEditMapProps = 'Map Properties...'; + MsgMenuEditPrefWin = 'Preferences...'; + + MsgMenuView = 'View'; + MsgMenuViewLayers = 'Layers'; + MsgMenuViewMinimap = 'Show Minimap Navigator'; + MsgMenuViewBounds = 'Show Map Bounds'; + MsgMenuViewPreview = 'Preview Mode'; + + MsgMenuServ = 'Service'; + MsgMenuServTest = 'Analyse Map...'; + MsgMenuServOpt = 'Optimize Map...'; + MsgMenuServLaunch = 'Run Test'; + + MsgMenuWindow = 'Window'; + MsgMenuWindowMinimize = 'Minimize'; + MsgMenuWindowZoom = 'Zoom'; + + MsgMenuHelp = 'Help'; + MsgMenuHelpAboutWin = 'About Editor'; + + MsgMenuLayerBack = '1. Background'; + MsgMenuLayerWall = '2. Walls'; + MsgMenuLayerFore = '3. Foreground'; + MsgMenuLayerStair = '4. Steps'; + MsgMenuLayerWater = '5. Liquids'; + MsgMenuLayerItem = '6. Items'; + MsgMenuLayerMonster = '7. Monsters'; + MsgMenuLayerArea = '8. Areas'; + MsgMenuLayerTrigger = '9. Triggers'; + + MsgMenuTbNew = 'New Map'; + MsgMenuTbOpen = 'Open Map'; + MsgMenuTbSave = 'Save Map'; + MsgMenuTbOpenWad = 'Open another Map from same WAD'; + MsgMenuTbMinimap = 'Show Mini-map'; + MsgMenuTbLayers = 'Show/Hide Objects'; + MsgMenuTbGrid = 'Grid On/Off'; + MsgMenuTbGridStep = 'Switch Grid step'; + MsgMenuTbLaunch = 'Run Test'; + + MsgMenuLaunchSets = 'Settings...'; + + MsgCapFxType = 'Select Effect type'; + MsgCapMonsterType = 'Select Monster type'; + MsgCapItemType = 'Select Item type'; + MsgCapAbout = 'About Map Editor'; + MsgCapAct = 'Activation type'; + MsgCapAddSky = 'Select Sky Texture'; + MsgCapAddSound = 'Select Sound/Music'; + MsgCapAddTexture = 'Select Texture'; + MsgCapKeys = 'Keys'; + MsgCapTest = 'Analyse Map'; + MsgCapOpt = 'Optimize Map'; + MsgCapSets = 'Map Properties'; + MsgCapLaunch = 'In-game test Settings'; + MsgCapEs = 'Preferences'; + MsgCapPack = 'Pack Map'; + MsgCapSave = 'Save Map'; + MsgCapMini = 'Save Minimap'; + MsgCapSelect = 'Select Map'; + MsgCapOpen = 'Open Map'; + MsgCapRemove = 'Remove Map'; + MsgCapTexture = 'Texture: %dx%d'; + MsgCapAnimation = 'Animation: %dx%d, %d frames'; + MsgCapStatSelected = 'Selected objects: %d'; + + MsgCtrlPropKey = 'Property'; + MsgCtrlPropValue = 'Value'; + + MsgCtrlPanels = 'Panels'; + MsgCtrlItems = 'Items'; + MsgCtrlMonsters = 'Monsters'; + MsgCtrlAreas = 'Areas'; + MsgCtrlTriggers = 'Triggers'; + + MsgCtrlListTexture = 'Texture List'; + MsgCtrlListItem = 'Item List'; + MsgCtrlListMonster = 'Monster List'; + MsgCtrlListArea = 'Area List'; + MsgCtrlListTrigger = 'Trigger List'; + MsgCtrlListActive = 'Activation Type'; + MsgCtrlListKeys = 'Keys Needed'; + + MsgCtrlPreview = 'Texture Preview'; + MsgCtrlItemDm = 'DM Only'; + MsgCtrlItemFalls = 'Falls'; + MsgCtrlLeft = 'Left'; + MsgCtrlRight = 'Right'; + + MsgCtrlActPlayerClose = 'Player Collides'; + MsgCtrlActMonsterClose = 'Monster Collides'; + MsgCtrlActPlayerPress = 'Player Pressed'; + MsgCtrlActMonsterPress = 'Monster Pressed'; + MsgCtrlActShot = 'Shot'; + MsgCtrlActNoMonster = 'No Monsters'; + + MsgCtrlKeysRed = 'Red Key'; + MsgCtrlKeysGreen = 'Green Key'; + MsgCtrlKeysBlue = 'Blue Key'; + MsgCtrlKeysTeamRed = 'Red Team'; + MsgCtrlKeysTeamBlue = 'Blue Team'; + + MsgCtrlOptGb = 'Optimization'; + MsgCtrlOptTexture = 'Texture Optimization'; + MsgCtrlOptPanel = 'Panel Optimization'; + MsgCtrlOptWall = 'Walls'; + MsgCtrlOptFore = 'Foreground'; + MsgCtrlOptBack = 'Background'; + MsgCtrlOptStair = 'Steps'; + MsgCtrlOptWater = 'Water'; + MsgCtrlOptAcid1 = 'Acid 1'; + MsgCtrlOptAcid2 = 'Acid 2'; + MsgCtrlOptLift = 'Streams'; + MsgCtrlOptBlockmon = 'Monster Boundary'; + MsgCtrlOptDescTexture = 'Deletes unused textures from texture list.'; + MsgCtrlOptDescPanel = 'Merges nearby panels of same type. Increases game performance.'; + MsgCtrlSetsStats = 'Statistics:'; + MsgCtrlSetsSizes = 'Map Size:'; + + MsgCtrlEsTesting = 'Testing'; + MsgCtrlLaunchDm = 'Deathmatch'; + MsgCtrlLaunchTdm = 'Team Deathmatch'; + MsgCtrlLaunchCtf = 'Capture the Flag'; + MsgCtrlLaunchCoop = 'Cooperative'; + MsgCtrlLaunch2p = 'Two Players'; + MsgCtrlLaunchFf = 'Friendly Fire'; + MsgCtrlLaunchExit = 'Enable Exit'; + MsgCtrlLaunchWeapons = 'Weapons Stay'; + MsgCtrlLaunchMonsters = 'Enable Monsters'; + MsgCtrlLaunchClose = 'Close the game after exiting the map'; + MsgCtrlLaunchOpen = 'Select Doom 2D: Forever executable'; + + MsgCtrlEsGeneral = 'General'; + MsgCtrlEsGrid = 'Show Grid'; + MsgCtrlEsTexture = 'Show Panel Texture'; + MsgCtrlEsPanelSize = 'Show Panel Size'; + MsgCtrlEsCheckerboard = 'Use Checkerboard'; + + MsgCtrlPackTextures = 'Textures'; + MsgCtrlPackSky = 'Sky'; + MsgCtrlPackMusic = 'Music'; + MsgCtrlPackAdd = 'Don''t overwrite WAD'; + MsgCtrlPackNonStd = 'Non-standard Resources only'; + + MsgLabTexWidth = 'Texture Width:'; + MsgLabTexHeight = 'Texture Height:'; + + MsgLabSpectrum = 'Show the Spectrum'; + + MsgLabAboutVer = 'Version 2.1.5'; + MsgLabAboutAuthor = 'Author: rs.falcon'; + MsgLabAboutAuthor2 = 'Additions: Pss'; + MsgLabAboutMail = 'rmw.falcon@mail.ru'; + MsgLabAboutMail2 = 'pssxx@mail.ru'; + MsgLabAboutSite = 'Doom 2D: Forever Web-site'; + MsgLabAboutHttp = 'www.doom2d.org'; + + MsgLabAddWads = 'WAD Files:'; + MsgLabAddSections = 'WAD Sections:'; + + MsgLabSetsName = 'Map Name:'; + MsgLabSetsDesc = 'Map Description'; + MsgLabSetsAuthor = 'Author:'; + MsgLabSetsBack = 'Background/Sky:'; + MsgLabSetsMusic = 'Music:'; + MsgLabSetsTextures = 'Textures:'; + MsgLabSetsPanels = 'Panels:'; + MsgLabSetsItems = 'Items:'; + MsgLabSetsMonsters = 'Monsters:'; + MsgLabSetsAreas = 'Areas:'; + MsgLabSetsTriggers = 'Triggers:'; + MsgLabSetsSizes = 'Current:'; + MsgLabSetsWidth = 'Width:'; + MsgLabSetsHeight = 'Height:'; + MsgLabSetsMapmove = 'Direction to shift map objects:'; + MsgLabSetsSnapping = 'Preserve snapping'; + + MsgLabLaunchTime = 'Time Limit:'; + MsgLabLaunchSecs = 'seconds'; + MsgLabLaunchScore = 'Score Limit:'; + MsgLabLaunchPathWin = 'Path to Doom2DF.exe:'; + MsgLabLaunchPathMac = 'Path to Doom 2D Forever.app:'; + MsgLabLaunchPathUnix = 'Path to Doom2DF:'; + MsgLabLaunchArgs = 'Launch Arguments:'; + + MsgLabEsGrid = 'Grid Step:'; + MsgLabEsGridColor = 'Grid Color:'; + MsgLabEsGridSize = 'Grid Dot Size:'; + MsgLabEsBack = 'Background Color:'; + MsgLabEsPreview = 'Texture Preview Background Color:'; + MsgLabEsMinimap = 'Mini-map Scale:'; + MsgLabEsRecent = 'Recent Maps List Contains:'; + MsgLabEsLanguage = 'Language:'; + MsgLabEsLanguageAuto = 'System Default'; + + MsgCtrlEsFiles = 'Files'; + + MsgLabPackSaveTo = 'Save to:'; + MsgLabPackMapName = 'Map Resource Name:'; + MsgLabPackTextures = 'Texture Section:'; + MsgLabPackSky = 'Sky Section:'; + MsgLabPackMusic = 'Music Section:'; + + MsgLabMiniScale = 'Scale:'; + + MsgBtnApplyProps = 'Apply Properties'; + MsgBtnOk = 'OK'; + MsgBtnCancel = 'Cancel'; + MsgBtnAdd = 'Add'; + MsgBtnClose = 'Close'; + MsgBtnAddClose = 'Add and Close'; + MsgBtnTestAgain = 'Check'; + MsgBtnStart = 'Run'; + MsgBtnPack = 'Pack'; + MsgBtnSave = 'Save'; + MsgBtnNoSound = 'No sound'; + MsgBtnTextureAdd = 'Add texture to the list'; + MsgBtnTextureDelete = 'Delete texture from the list'; + MsgBtnTextureEmpty = 'Deselect texture'; + + MsgLoadWad = 'Reading WAD'; + MsgLoadMap = 'Loading Map'; + MsgLoadTextures = 'Reading Textures'; + MsgLoadPanels = 'Reading Panels'; + MsgLoadItems = 'Reading Items'; + MsgLoadMonsters = 'Reading Monsters'; + MsgLoadAreas = 'Reading Areas'; + MsgLoadTriggers = 'Reading Triggers'; + + MsgTestAreaWall = 'Player collides with the wall and will be stuck.'; + MsgTestAreaWallStr = 'Area #%d collides with Map (%d:%d)'; + MsgTestSpawns1 = 'There are several spawn points for First Player on the map'; + MsgTestSpawns2 = 'There are several spawn points for Second Player on the map'; + MsgTestSpawns = 'There are several spawn points on the map. Random one will be used.'; + MsgTestNoDm = 'There are no DM spawn points on the map'; + MsgTestNoDmEx = 'There are no DM spawn points on the map. Only "Single Player" mode available.'; + MsgTestMonsterWall = 'Monster collides with the wall and will be stuck.'; + MsgTestMonsterWallStr = 'Monster #%d collides with a map (%d:%d)'; + + MsgOptNoTextures = 'Texture list is empty'; + MsgOptDeletedTextures = 'Deleted Textures:'; + MsgOptTotalTextures = 'Textures Total:'; + MsgOptTexDeleted = 'Textures Deleted:'; + MsgOptPanelsOpt = 'Panels Optimized:'; + MsgOptWalls = 'Walls Optimization...'; + MsgOptFores = 'Foreground Optimization...'; + MsgOptBacks = 'Background Optimization...'; + MsgOptStairs = 'Steps Optimization...'; + MsgOptWater = 'Water Optimization...'; + MsgOptAcid1 = 'Acid 1 Optimization...'; + MsgOptAcid2 = 'Acid 2 Optimization...'; + MsgOptLifts = 'Streams Optimization...'; + MsgOptBlockmon = 'Monster Boundaries Optimization...'; + MsgOptTotalPanels = 'Panels Total:'; + MsgOptPanelsAfter = 'Panels after Optimization:'; + + MsgWadSpecialMap = ''; + MsgWadSpecialTexs = ''; + + MsgFileFilterSaveDFWAD = 'Doom 2D: Forever Maps in DFWAD packages (*.wad)|*.wad'; + MsgFileFilterSaveDFZIP = 'Doom 2D: Forever Maps in DFZIP archives (*.dfz)|*.dfz'; + MsgFileFilterAll = 'Doom 2D: Forever Maps (*.dfz, *.wad)|*.wad;*.dfz|Doom 2D: Forever 0.30 Maps (*.ini)|*.ini|All Files (*.*)|*.*'; + MsgFileFilterWad = 'Doom 2D: Forever Maps (*.dfz, *.wad)|*.wad;*.dfz|All Files (*.*)|*.*'; + MsgFileFilterExeMac = 'Doom 2D Forever.app|*.app|Doom 2D Forever (Unix Executable)|Doom2DF;*'; + MsgFileFilterExeWin = 'Doom2DF.exe|Doom2DF.exe;*.exe'; + MsgFileFilterExeUnix = 'Doom2DF|Doom2DF;*'; + + MsgEditorTitle = 'Doom 2D: Forever Map Editor'; Var - _lc: Array [TStrings_Locale] of String; // for the GUI (in UTF-8) - _glc: Array [TStrings_Locale] of String; // for GL text (in CP1251) - BoolNames: Array [False..True] of String; DirNames: Array [D_LEFT..D_RIGHT] of String; DirNamesAdv: Array [0..3] of String; @@ -634,1176 +650,21 @@ Var AreaNames: Array [AREA_PLAYERPOINT1..AREA_BLUETEAMPOINT] of String; TriggerNames: Array [TRIGGER_EXIT..TRIGGER_MAX] of String; - -procedure g_Language_Load(fileName: String); +function g_Language_GetList (): TStringList; procedure g_Language_Set(lang: String); -procedure g_Language_Dump(fileName: String); Implementation Uses + g_options, IniFiles, gettext, LazFileUtils, SysUtils, e_log, f_main, f_about, f_activationtype, f_addresource_sky, f_addresource_sound, f_addresource_texture, f_choosetype, f_keys, f_mapcheck, - f_mapoptions, f_maptest, f_mapoptimization, f_options, + f_mapoptions, f_mapoptimization, f_options, f_packmap, f_savemap, f_saveminimap, f_selectmap, Forms, utils; -Const - g_lang_default: Array [TStrings_Locale] of Array [1..3] of String = ( - ('NOT ACCESSIBLE', 'N/A', - 'Н/Д'), - - ('ARRAY BOOL FALSE', 'No', - 'Нет'), - ('ARRAY BOOL TRUE', 'Yes', - 'Да'), - - ('ARRAY DIR LEFT', 'Left', - 'Влево'), - ('ARRAY DIR RIGHT', 'Right', - 'Вправо'), - ('ARRAY DIR SAME', 'Don''t change', - 'Не менять'), - ('ARRAY DIR REVERSED', 'Reversed', - 'Обратное'), - - ('ARRAY DIRBTN LEFT', 'Left', - 'Влево'), - ('ARRAY DIRBTN RIGHT', 'Right', - 'Вправо'), - ('ARRAY DIRBTN UP', 'Up', - 'Вверх'), - ('ARRAY DIRBTN DOWN', 'Down', - 'Вниз'), - - ('ARRAY PANEL WALL', 'Wall', - 'Стена'), - ('ARRAY PANEL BACK', 'Background', - 'Фон'), - ('ARRAY PANEL FRONT', 'Foreground', - 'Передний план'), - ('ARRAY PANEL DOOR OPEN', 'Open Door', - 'Открытая дверь'), - ('ARRAY PANEL DOOR CLOSE', 'Closed Door', - 'Закрытая дверь'), - ('ARRAY PANEL STAIR', 'Step', - 'Ступень'), - ('ARRAY PANEL WATER', 'Water', - 'Вода'), - ('ARRAY PANEL ACID 1', 'Acid 1', - 'Кислота 1'), - ('ARRAY PANEL ACID 2', 'Acid 2', - 'Кислота 2'), - ('ARRAY PANEL LIFT UP', 'Stream Up', - 'Лифт вверх'), - ('ARRAY PANEL LIFT DOWN', 'Stream Down', - 'Лифт вниз'), - ('ARRAY PANEL LIFT LEFT', 'Stream Left', - 'Поток влево'), - ('ARRAY PANEL LIFT RIGHT', 'Stream Right', - 'Поток вправо'), - ('ARRAY PANEL BLOCKMON', 'Monster Boundary', - 'Блокиратор монстров'), - - ('ARRAY FX NONE', 'None', - 'Нет'), - ('ARRAY FX TELEPORT', 'Teleport', - 'Телепортация'), - ('ARRAY FX RESPAWN', 'Respawn', - 'Респаун'), - ('ARRAY FX FIRE', 'Arch-Vile Fire', - 'Огонь колдуна'), - - ('ARRAY ITEM MEDKIT', 'Stimpack', - 'Аптечка'), - ('ARRAY ITEM LARGE MEDKIT', 'Medikit', - 'Большая аптечка'), - ('ARRAY ITEM BLACK MEDKIT', 'Berserk Pack', - 'Чёрная аптечка'), - ('ARRAY ITEM GREEN ARMOR', 'Green Armor', - 'Зелёная броня'), - ('ARRAY ITEM BLUE ARMOR', 'Blue Armor', - 'Синяя броня'), - ('ARRAY ITEM BLUE SPHERE', 'Soulsphere', - 'Шарик 100%'), - ('ARRAY ITEM MEGASPHERE', 'Megasphere', - 'Мегасфера'), - ('ARRAY ITEM HAZ SUIT', 'Envirosuit', - 'Защитный костюм'), - ('ARRAY ITEM OXYGEN', 'Scuba', - 'Акваланг'), - ('ARRAY ITEM INVULNERABILITY', 'Invulnerability', - 'Неуязвимость'), - ('ARRAY ITEM CHAINSAW', 'Chainsaw', - 'Бензопила'), - ('ARRAY ITEM SHOTGUN', 'Shotgun', - 'Ружьё'), - ('ARRAY ITEM DB SHOTGUN', 'Super Shotgun', - 'Двустволка'), - ('ARRAY ITEM CHAINGUN', 'Chaingun', - 'Пулемёт'), - ('ARRAY ITEM ROCKET LAUNCHER', 'Rocket Launcher', - 'Ракетница'), - ('ARRAY ITEM PLASMA RIFLE', 'Plasma Rifle', - 'Плазмаган'), - ('ARRAY ITEM BFG', 'BFG9000', - 'BFG9000'), - ('ARRAY ITEM SUPER MINIGUN', 'Super Chaingun', - 'Суперпулемёт'), - ('ARRAY ITEM FLAMETHROWER', 'Flamethrower', - 'Огнемёт'), - ('ARRAY ITEM CLIP', 'Clip', - 'Патроны'), - ('ARRAY ITEM AMMO BOX', 'Box of Bullets', - 'Ящик патронов'), - ('ARRAY ITEM 4 SHELLS', '4 Shells', - '4 гильзы'), - ('ARRAY ITEM 25 SHELLS', 'Box of Shells', - '25 гильз'), - ('ARRAY ITEM 1 ROCKET', 'Rocket', - '1 ракета'), - ('ARRAY ITEM ROCKET BOX', 'Box of Rockets', - '5 ракет'), - ('ARRAY ITEM CELL', 'Energy Cell', - 'Батарейка'), - ('ARRAY ITEM LARGE CELL', 'Energy Cell Pack', - 'Батарея'), - ('ARRAY ITEM FUELCAN', 'Fuel Canister', - 'Канистра'), - ('ARRAY ITEM BACKPACK', 'Backpack', - 'Рюкзак'), - ('ARRAY ITEM KEY RED', 'Red Key', - 'Красный ключ'), - ('ARRAY ITEM KEY GREEN', 'Green Key', - 'Зелёный ключ'), - ('ARRAY ITEM KEY BLUE', 'Blue Key', - 'Синий ключ'), - ('ARRAY ITEM BOTTLE', 'Health Globe', - 'Живая вода'), - ('ARRAY ITEM HELMET', 'Armor Shard', - 'Бронешлем'), - ('ARRAY ITEM JETPACK', 'Jetpack', - 'Реактивный ранец'), - ('ARRAY ITEM INVIS', 'Invisibility', - 'Невидимость'), - - ('ARRAY SHOT PISTOL', 'Pistol shot', - 'Выстрел пистолета'), - ('ARRAY SHOT BULLET', 'Chaingun shot', - 'Выстрел пулемёта'), - ('ARRAY SHOT SHOTGUN', 'Shotgun shot', - 'Выстрел ружья'), - ('ARRAY SHOT SSG', 'Super Shotgun shot', - 'Выстрел двустволки'), - ('ARRAY SHOT IMP', 'Imp fireball', - 'Шар беса'), - ('ARRAY SHOT PLASMA', 'Blue plasma', - 'Синяя плазма'), - ('ARRAY SHOT SPIDER', 'Arachnotron plasma', - 'Плазма арахнотрона'), - ('ARRAY SHOT CACO', 'Cacodemon fireball', - 'Шар какодемона'), - ('ARRAY SHOT BARON', 'Hell Baron projectile', - 'Выстрел барона ада'), - ('ARRAY SHOT MANCUB', 'Mancubus gunshot', - 'Снаряд манкубуса'), - ('ARRAY SHOT REV', 'Revenant projectile', - 'Снаряд скелета'), - ('ARRAY SHOT ROCKET', 'Rocket', - 'Ракета'), - ('ARRAY SHOT BFG', 'BFG ball', - 'Шар BFG'), - ('ARRAY SHOT EXPL', 'Explosion', - 'Взрыв'), - ('ARRAY SHOT BFGEXPL', 'BFG explosion', - 'Взрыв BFG'), - - ('ARRAY MON DEMON', 'Pinky', - 'Демон'), - ('ARRAY MON IMP', 'Imp', - 'Бес'), - ('ARRAY MON ZOMBIE', 'Zombie', - 'Зомби'), - ('ARRAY MON SERGEANT', 'Sergeant', - 'Сержант'), - ('ARRAY MON CYBER', 'Cyberdemon', - 'Кибердемон'), - ('ARRAY MON CGUN', 'Commando', - 'Пулемётчик'), - ('ARRAY MON HELL BARON', 'Hell Baron', - 'Барон ада'), - ('ARRAY MON HELL KNIGHT', 'Hell Knight', - 'Рыцарь ада'), - ('ARRAY MON CACODEMON', 'Cacodemon', - 'Какодемон'), - ('ARRAY MON LOST SOUL', 'Lost Soul', - 'Огненный череп'), - ('ARRAY MON PAIN ELEMENTAL', 'Pain Elemental', - 'Авиабаза'), - ('ARRAY MON MASTERMIND', 'Spider Mastermind', - 'Большой паук'), - ('ARRAY MON ARACHNATRON', 'Arachnotron', - 'Арахнотрон'), - ('ARRAY MON MANCUBUS', 'Mancubus', - 'Манкубус'), - ('ARRAY MON REVENANT', 'Revenant', - 'Скелет'), - ('ARRAY MON ARCHVILE', 'Arch-Vile', - 'Колдун'), - ('ARRAY MON FISH', 'Piranha', - 'Рыба'), - ('ARRAY MON BARREL', 'Barrel', - 'Бочка'), - ('ARRAY MON ROBOT', 'Robot', - 'Робот'), - ('ARRAY MON PRIKOLIST', 'Prikolist', - 'Приколист'), - - ('ARRAY AREA PLAYER ONE', 'Player 1', - 'Первый игрок'), - ('ARRAY AREA PLAYER TWO', 'Player 2', - 'Второй игрок'), - ('ARRAY AREA DM', 'DM Spawn Point', - 'Точка DM'), - ('ARRAY AREA FLAG RED', 'Red Flag', - 'Красный флаг'), - ('ARRAY AREA FLAG BLUE', 'Blue Flag', - 'Синий флаг'), - ('ARRAY AREA FLAG DOM', 'Domination Flag', - 'DOM флаг'), - ('ARRAY AREA TEAM RED', 'Red Team', - 'Красная команда'), - ('ARRAY AREA TEAM BLUE', 'Blue Team', - 'Синяя команда'), - - ('ARRAY TR EXIT', 'Exit', - 'Выход'), - ('ARRAY TR TELEPORT', 'Teleport', - 'Телепортация'), - ('ARRAY TR DOOR OPEN', 'Open Door', - 'Открыть дверь'), - ('ARRAY TR DOOR CLOSE', 'Close Door', - 'Закрыть дверь'), - ('ARRAY TR DOOR SWITCH', 'Door', - 'Дверь'), - ('ARRAY TR DOOR 5 SEC', 'Door (5 sec)', - 'Дверь (5 секунд)'), - ('ARRAY TR TRAP CLOSE', 'Close Trap', - 'Закрыть ловушку'), - ('ARRAY TR TRAP', 'Trap', - 'Ловушка'), - ('ARRAY TR EXTEND', 'Extender', - 'Расширитель'), - ('ARRAY TR SECRET', 'Secret', - 'Секрет'), - ('ARRAY TR LIFT UP', 'Turn stream up/left', - 'Лифт вверх/поток влево'), - ('ARRAY TR LIFT DOWN', 'Turn stream down/right', - 'Лифт вниз/поток вправо'), - ('ARRAY TR LIFT SWITCH', 'Revert stream', - 'Лифт'), - ('ARRAY TR TEXTURE', 'Change Texture', - 'Смена текстуры'), - ('ARRAY TR ON', 'Enable Trigger', - 'Включить триггер'), - ('ARRAY TR OFF', 'Disable Trigger', - 'Выключить триггер'), - ('ARRAY TR SWITCH', 'Trigger Toggle', - 'Переключить триггер'), - ('ARRAY TR SOUND', 'Play Sound', - 'Звук'), - ('ARRAY TR SPAWN MONSTER', 'Spawn Monster', - 'Создать монстра'), - ('ARRAY TR SPAWN ITEM', 'Spawn Item', - 'Создать предмет'), - ('ARRAY TR MUSIC', 'Play Music', - 'Музыка'), - ('ARRAY TR PUSH', 'Push', - 'Ускорение'), - ('ARRAY TR SCORE', 'Team Score', - 'Начисление очков'), - ('ARRAY TR MESSAGE', 'Message', - 'Сообщение'), - ('ARRAY TR DAMAGE', 'Damage', - 'Урон'), - ('ARRAY TR HEALTH', 'Healer', - 'Оздоровитель'), - ('ARRAY TR SHOT', 'Turret', - 'Турель'), - ('ARRAY TR EFFECT', 'Effect', - 'Эффект'), - - ('PROP ID', 'ID', - 'ID'), - ('PROP X', 'X', - 'X'), - ('PROP Y', 'Y', - 'Y'), - ('PROP WIDTH', 'Width', - 'Ширина'), - ('PROP HEIGHT', 'Height', - 'Высота'), - ('PROP PANEL TYPE', 'Panel Type', - 'Тип панели'), - ('PROP PANEL TEX', 'Texture', - 'Текстура'), - ('PROP PANEL ALPHA', 'Transparency', - 'Прозрачность'), - ('PROP PANEL BLEND', 'Blending', - 'Смешивание'), - ('PROP DM ONLY', 'DM Only', - 'Только в DM'), - ('PROP ITEM FALLS', 'Falls', - 'Падает'), - ('PROP DIRECTION', 'Direction', - 'Направление'), - - ('PROP TR TYPE', 'Trigger Type', - 'Тип триггера'), - ('PROP TR ENABLED', 'Enabled', - 'Включён'), - ('PROP TR TEXTURE PANEL', 'Textured Panel', - 'Панель с текстурой'), - ('PROP TR ACTIVATION', 'Activation Type', - 'Тип активации'), - ('PROP TR KEYS', 'Keys', - 'Ключи'), - ('PROP TR D2D', 'D2D-like', - 'Как в D2D'), - ('PROP TR SILENT', 'Silent', - 'Без звука'), - ('PROP TR COUNT', 'Count', - 'Количество'), - ('PROP TR INTERVAL', 'Interval (in ticks)', - 'Интервал (в тиках)'), - ('PROP TR HEALTH', 'Health', - 'Здоровье'), - ('PROP TR NEXT MAP', 'Next Map', - 'След. карта'), - ('PROP TR TELEPORT TO', 'Teleport to', - 'Точка телепорта'), - ('PROP TR TELEPORT SILENT', 'Silent', - 'Тихий телепорт'), - ('PROP TR TELEPORT DIR', 'New Direction', - 'Направление после'), - ('PROP TR DOOR PANEL', 'Door Panel', - 'Панель двери'), - ('PROP TR TRAP PANEL', 'Trap Panel', - 'Панель ловушки'), - ('PROP TR EX AREA', 'Action Area', - 'Область воздействия'), - ('PROP TR EX DELAY', 'Delay', - 'Задержка'), - ('PROP TR EX COUNT', 'Count', - 'Счётчик'), - ('PROP TR EX MONSTER', 'Monster ID', - 'ID монстра'), - ('PROP TR EX RANDOM', 'Random', - 'Случайный'), - ('PROP TR LIFT PANEL', 'Stream Panel', - 'Панель лифта'), - ('PROP TR TEXTURE ONCE', 'Once', - 'Один раз'), - ('PROP TR TEXTURE ANIM ONCE', 'Animate Once', - 'Аним. один раз'), - ('PROP TR SOUND NAME', 'Sound (snd)', - 'Звук (snd)'), - ('PROP TR SOUND VOLUME', 'Volume', - 'Громкость'), - ('PROP TR SOUND PAN', 'Pan', - 'Стерео'), - ('PROP TR SOUND COUNT', 'Loops', - 'Играть раз'), - ('PROP TR SOUND LOCAL', 'Local', - 'Локальный'), - ('PROP TR SOUND SWITCH', 'Switch', - 'Переключение'), - ('PROP TR FX TYPE', 'Effect', - 'Эффект'), - ('PROP TR SPAWN TO', 'Spawn at', - 'Точка появления'), - ('PROP TR SPAWN MAX', 'Maximum', - 'Максимум'), - ('PROP TR SPAWN DELAY', 'Autospawn (in ticks)', - 'Автоспаун (в тиках)'), - ('PROP TR MONSTER TYPE', 'Monster', - 'Тип монстра'), - ('PROP TR MONSTER ACTIVE', 'Active', - 'Активен'), - ('PROP TR MONSTER BEHAVIOUR', 'Behaviour', - 'Поведение'), - ('PROP TR MONSTER BEHAVIOUR 0', 'Normal', - 'Обычное'), - ('PROP TR MONSTER BEHAVIOUR 1', 'Killer', - 'Убийца'), - ('PROP TR MONSTER BEHAVIOUR 2', 'Maniac', - 'Маньяк'), - ('PROP TR MONSTER BEHAVIOUR 3', 'Insane', - 'Поехавший'), - ('PROP TR MONSTER BEHAVIOUR 4', 'Cannibal', - 'Каннибал'), - ('PROP TR MONSTER BEHAVIOUR 5', 'Good', - 'Добрый'), - ('PROP TR ITEM TYPE', 'Item', - 'Тип предмета'), - ('PROP TR MUSIC NAME', 'Music', - 'Музыка'), - ('PROP TR MUSIC ACT', 'Action (m)', - 'Действие (m)'), - ('PROP TR MUSIC ON', 'Play', - 'Включить'), - ('PROP TR MUSIC OFF', 'Pause', - 'Выключить'), - ('PROP TR PUSH ANGLE', 'Angle', - 'Угол'), - ('PROP TR PUSH FORCE', 'Force', - 'Сила'), - ('PROP TR PUSH RESET', 'Reset velocity', - 'Сбрасывать скорость'), - ('PROP TR SCORE ACT', 'Action (s)', - 'Действие (s)'), - ('PROP TR SCORE ACT 0', 'Add points', - 'Прибавить очки'), - ('PROP TR SCORE ACT 1', 'Subtract points', - 'Отнять очки'), - ('PROP TR SCORE ACT 2', 'Team Wins', - 'Выигрыш'), - ('PROP TR SCORE ACT 3', 'Team Loses', - 'Проигрыш'), - ('PROP TR SCORE TEAM', 'Team', - 'Команда'), - ('PROP TR SCORE TEAM 0', 'My', - 'Своя'), - ('PROP TR SCORE TEAM 1', 'Enemy', - 'Соперника'), - ('PROP TR SCORE TEAM 2', 'Red', - 'Красная'), - ('PROP TR SCORE TEAM 3', 'Blue', - 'Синяя'), - ('PROP TR SCORE CON', 'Console message', - 'Сообщение в консоль'), - ('PROP TR SCORE MSG', 'Game message', - 'Сообщение в игру'), - ('PROP TR DAMAGE VALUE', 'Damage', - 'Ущерб'), - ('PROP TR HEALTH MAX', 'To maximum', - 'До максимума'), - ('PROP TR SHOT TYPE', 'Projectile', - 'Снаряд'), - ('PROP TR SHOT SOUND', 'Shot sound', - 'Звук выстрела'), - ('PROP TR SHOT ANGLE', 'Angle', - 'Угол'), - ('PROP TR SHOT ACC', 'Spread', - 'Разброс'), - ('PROP TR SHOT TO', 'Auto targeting', - 'Автонаведение'), - ('PROP TR SHOT TO 0', 'None', - 'Нет'), - ('PROP TR SHOT TO 1', 'Monsters', - 'Монстры'), - ('PROP TR SHOT TO 2', 'Players', - 'Игроки'), - ('PROP TR SHOT TO 3', 'Red team', - 'Красная команда'), - ('PROP TR SHOT TO 4', 'Blue team', - 'Синяя команда'), - ('PROP TR SHOT TO 5', 'Monsters, players', - 'Монстры, игроки'), - ('PROP TR SHOT TO 6', 'Players, monsters', - 'Игроки, монстры'), - ('PROP TR SHOT AIM', 'Auto-aiming mode', - 'Режим автонаведения'), - ('PROP TR SHOT AIM 0', 'Trigger area', - 'Область триггера'), - ('PROP TR SHOT AIM 1', 'Entire map', - 'По всей карте'), - ('PROP TR SHOT AIM 2', 'Trace trigger area', - 'Область триггера с трассировкой'), - ('PROP TR SHOT AIM 3', 'Trace entire map', - 'Вся карта с трассировкой'), - ('PROP TR SHOT AMMO', 'Ammo limit', - 'Кол-во патронов'), - ('PROP TR SHOT RELOAD', 'Reload interval (in ticks)', - 'Перезарядка (в тиках)'), - ('PROP TR SHOT SIGHT', 'Sight interval (in ticks)', - 'Реакция (в тиках)'), - ('PROP TR SHOT PANEL', 'Indicator panel', - 'Панель индикации'), - ('PROP TR MESSAGE KIND', 'Message kind', - 'Тип сообщения'), - ('PROP TR MESSAGE KIND 0', 'Console message', - 'Текст в консоли'), - ('PROP TR MESSAGE KIND 1', 'Event message', - 'Крупный текст по центру'), - ('PROP TR MESSAGE TO', 'Send to', - 'Получатель'), - ('PROP TR MESSAGE TO 0', 'Me', - 'Я'), - ('PROP TR MESSAGE TO 1', 'My team', - 'Моя команда'), - ('PROP TR MESSAGE TO 2', 'Enemy team', - 'Вражеская команда'), - ('PROP TR MESSAGE TO 3', 'Red team', - 'Красная команда'), - ('PROP TR MESSAGE TO 4', 'Blue team', - 'Синяя команда'), - ('PROP TR MESSAGE TO 5', 'Everyone', - 'Все игроки'), - ('PROP TR MESSAGE TEXT', 'Message text', - 'Текст сообщения'), - ('PROP TR MESSAGE TIME', 'Time (in ticks)', - 'Время показа (в тиках)'), - ('PROP TR EFFECT TYPE', 'Effect type', - 'Тип эффекта'), - ('PROP TR EFFECT SUBTYPE', 'Effect subtype', - 'Подтип эффекта'), - ('PROP TR EFFECT COLOR', 'Effect color', - 'Цвет эффекта'), - ('PROP TR EFFECT CENTER', 'Trigger center', - 'По центру'), - ('PROP TR EFFECT VELX', 'Horizontal speed', - 'Скорость по горизонтали'), - ('PROP TR EFFECT VELY', 'Vertical speed', - 'Скорость по вертикали'), - ('PROP TR EFFECT SPL', 'Speed variance left', - 'Отклонение влево'), - ('PROP TR EFFECT SPR', 'Speed variance right', - 'Отклонение вправо'), - ('PROP TR EFFECT SPU', 'Speed variance up', - 'Отклонение вверх'), - ('PROP TR EFFECT SPD', 'Speed variance down', - 'Отклонение вниз'), - ('PROP TR EFFECT PARTICLE', 'Particle generator', - 'Генератор частиц'), - ('PROP TR EFFECT ANIMATION', 'Animation', - 'Анимация'), - ('PROP TR EFFECT SLIQUID', 'Water splash', - 'Брызги воды'), - ('PROP TR EFFECT LLIQUID', 'Light colored splash', - 'Цветные брызги (светлее)'), - ('PROP TR EFFECT DLIQUID', 'Dark colored splash', - 'Цветные брызги (темнее)'), - ('PROP TR EFFECT BLOOD', 'Blood', - 'Кровь'), - ('PROP TR EFFECT SPARK', 'Sparks', - 'Искры'), - ('PROP TR EFFECT BUBBLE', 'Bubbles', - 'Пузырьки'), - - ('MSG ERROR', 'Error', - 'Ошибка'), - ('MSG WRONG TEXWIDTH', 'Panel Width must be a multiple of Texture Width (%d)', - 'Ширина панели должна быть кратна ширине текстуры (%d)'), - ('MSG WRONG TEXHEIGHT', 'Panel Height must be a multiple of Texture Height (%d)', - 'Высота панели должна быть кратна высоте текстуры (%d)'), - ('MSG WRONG ALPHA', 'Transparency must be in [0..255] interval', - 'Прозрачность должна быть в интервале [0..255]'), - ('MSG WRONG SIZE', 'Width and Height must be greater than 0', - 'Ширина и высота должны быть больше 0'), - ('MSG WRONG XY', 'X or Y coordinate hasn''t been set', - 'Не задана X или Y координата'), - ('MSG TEXTURE ALREADY', 'Texture "%s" already exists', - 'Текстура "%s" уже добавлена'), - ('MSG RES NAME 64', 'Resource "%s" name must not be longer than 64 chars', - 'Имя ресурса "%s" должно быть не длиннее 64 символов'), - ('MSG CHOOSE ITEM', 'Select Item', - 'Выберите предмет'), - ('MSG CHOOSE MONSTER', 'Select Monster', - 'Выберите монстра'), - ('MSG CHOOSE AREA', 'Select Area', - 'Выберите область'), - ('MSG CHOOSE TEXTURE', 'Select Texture', - 'Выберите текстуру'), - ('MSG CHOOSE RES', 'Resource hasn''t been selected', - 'Не выбран ресурс'), - ('MSG EXIT', 'Exit', - 'Выход'), - ('MSG EXIT PROMT', 'Leaving so soon?', - 'Уже уходите?'), - ('MSG DEL TEXTURE', 'Delete the texture', - 'Удалить текстуру'), - ('MSG DEL TEXTURE PROMT', 'Delete the texture "%s" ?', - 'Удалить текстуру "%s" ?'), - ('MSG DEL TEXTURE CANT', 'Can''t delete texture in use. Replace it on all panels with this texture.', - 'Нельзя удалить используемую текстуру. Замените её на каждой панели с ней.'), - ('MSG DEL RECENT', 'File does not longer exist', - 'Этого файла больше нет'), - ('MSG DEL RECENT PROMT', 'Remove entry from recent list?', - 'Убрать запись из истории?'), - ('MSG CLEAR MAP', 'New map', - 'Новая карта'), - ('MSG CLEAR MAP PROMT', 'Clear the entire map?', - 'Очистить всю карту?'), - ('MSG DELETE MAP', 'Delete the map', - 'Удалить карту'), - ('MSG DELETE MAP PROMT', 'Delete the map "%s" from "%s" ?', - 'Удалить карту "%s" из "%s" ?'), - ('MSG MAP DELETED', 'Map is deleted', - 'Карта удалена'), - ('MSG MAP DELETED PROMT', 'Map "%s" is deleted', - 'Карта "%s" удалена'), - ('MSG REOPEN MAP PROMT', 'Reopen this map?', - 'Загрузить карту заново?'), - ('MSG EXEC ERROR', 'Game start error', - 'Ошибка запуска игры'), - ('MSG SOUND ERROR', 'Can''t play sound', - 'Не удалось проиграть звук'), - ('MSG WAD ERROR', 'Can''t open WAD: %s', - 'Ошибка при открытии WAD: %s'), - ('MSG RES ERROR', 'Can''t read resource: %s:%s\%s', - 'Ошибка при чтении ресурса: %s:%s\%s'), - ('MSG PACKED', 'Map "%s" with resources saved to "%s"', - 'Карта "%s" вместе с ресурсами сохранена в "%s"'), - ('MSG MAP EXISTS', 'Map "%s" already exists. Overwrite?', - 'Карта "%s" уже существует. Заменить?'), - ('MSG SAVE MAP', 'Save the map', - 'Сохранить карту'), - - ('HINT TELEPORT', 'Choose destination of Teleport', - 'Выберите точку телепорта'), - ('HINT SPAWN', 'Choose Spawn point', - 'Выберите точку появления'), - ('HINT PANEL DOOR', 'Choose Door', - 'Выберите панель двери'), - ('HINT PANEL TEXTURE', 'Choose textured Panel', - 'Выберите панель с текстурой'), - ('HINT PANEL SHOT', 'Choose textured shot indicator Panel', - 'Выберите панель индикации выстрела с текстурой'), - ('HINT PANEL LIFT', 'Choose Stream Panel', - 'Выберите панель лифта'), - ('HINT MONSTER', 'Choose Monster', - 'Выберите монстра'), - ('HINT EXT AREA', 'Specify action Area', - 'Укажите область воздействия'), - ('HINT WIDTH', 'Width: %d', - 'Ширина: %d'), - ('HINT HEIGHT', 'Height: %d', - 'Высота: %d'), - - ('MENU FILE', 'File', - 'Файл'), - ('MENU FILE NEW', 'New Map', - 'Новая карта'), - ('MENU FILE OPEN', 'Open Map', - 'Открыть карту'), - ('MENU FILE SAVE', 'Save Map', - 'Сохранить карту'), - ('MENU FILE SAVE AS', 'Save Map As...', - 'Сохранить карту как...'), - ('MENU FILE OPEN WAD', 'Select Map', - 'Выбрать карту'), - ('MENU FILE REOPEN', 'Reopen Map', - 'Открыть заново'), - ('MENU FILE SAVE MINI', 'Save Mini-map', - 'Сохранить мини-карту'), - ('MENU FILE DELETE', 'Delete Map from WAD...', - 'Удалить карту из WAD...'), - ('MENU FILE PACK MAP', 'Pack Map', - 'Упаковать карту'), - ('MENU FILE EXIT', 'Exit', - 'Выход'), - - ('MENU EDIT', 'Edit', - 'Правка'), - ('MENU EDIT UNDO', 'Undo', - 'Отменить'), - ('MENU EDIT COPY', 'Copy', - 'Копировать'), - ('MENU EDIT CUT', 'Cut', - 'Вырезать'), - ('MENU EDIT PASTE', 'Paste', - 'Вставить'), - ('MENU EDIT SELECT ALL', 'Select All', - 'Выделить всё'), - ('MENU EDIT TO FORE', 'Bring to Front', - 'Передвинуть вперёд'), - ('MENU EDIT TO BACK', 'Send to Back', - 'Передвинуть назад'), - - ('MENU TOOLS', 'Tools', - 'Инструменты'), - ('MENU TOOLS SNAP GRID', 'Snap to Grid', - 'Привязка к сетке'), - ('MENU TOOLS MINIMAP', 'Show Mini-map', - 'Мини-карта'), - ('MENU TOOLS STEP GRID', 'Switch Grid step', - 'Сменить шаг сетки'), - ('MENU TOOLS SHOW EDGES', 'Switch Map edges', - 'Границы карты'), - ('MENU TOOLS LAYERS', 'Layers', - 'Слои'), - - ('MENU SERV', 'Service', - 'Сервис'), - ('MENU SERV TEST', 'Check the Map', - 'Проверка карты'), - ('MENU SERV OPT', 'Optimize the Map', - 'Оптимизация карты'), - ('MENU SERV PREVIEW', 'Map Preview', - 'Предварительный просмотр'), - ('MENU SERV LAUNCH', 'In-game test', - 'Тест карты в игре'), - - ('MENU SETS', 'Settings', - 'Настройка'), - ('MENU SETS MAP', 'Map parameters', - 'Параметры карты'), - ('MENU SETS EDITOR', 'Editor settings', - 'Настройки редактора'), - ('MENU SETS LAUNCH', 'In-game test settings', - 'Настройки теста в игре'), - - ('MENU HELP', 'Help', - 'Справка'), - ('MENU HELP ABOUT', 'About', - 'О программе'), - - ('MENU LAYER BACK', '1. Background', - '1. Фон'), - ('MENU LAYER WALL', '2. Walls', - '2. Стены'), - ('MENU LAYER FORE', '3. Foreground', - '3. Передний план'), - ('MENU LAYER STAIR', '4. Steps', - '4. Ступени'), - ('MENU LAYER WATER', '5. Liquids', - '5. Жидкости'), - ('MENU LAYER ITEM', '6. Items', - '6. Предметы'), - ('MENU LAYER MONSTER', '7. Monsters', - '7. Монстры'), - ('MENU LAYER AREA', '8. Areas', - '8. Области'), - ('MENU LAYER TRIGGER', '9. Triggers', - '9. Триггеры'), - - ('MENU TB NEW', 'New Map', - 'Новая карта'), - ('MENU TB OPEN', 'Open Map', - 'Открыть карту'), - ('MENU TB SAVE', 'Save Map', - 'Сохранить карту'), - ('MENU TB OPEN WAD', 'Open another Map from same WAD', - 'Открыть другую карту из этого же WAD''а'), - ('MENU TB MINIMAP', 'Show Mini-map', - 'Показать мини-карту'), - ('MENU TB LAYERS', 'Show/Hide Objects', - 'Отрисовка панелей/объектов'), - ('MENU TB GRID', 'Grid On/Off', - 'Включить/Отключить отображение сетки'), - ('MENU TB GRID STEP', 'Switch Grid step', - 'Изменить шаг сетки'), - ('MENU TB LAUNCH', 'In-game test', - 'Тест карты в игре'), - - ('MENU LAUNCH SETS', 'Settings...', - 'Параметры...'), - - ('CAP FX TYPE', 'Select Effect type', - 'Выберите тип эффекта'), - ('CAP MONSTER TYPE', 'Select Monster type', - 'Выберите тип монстра'), - ('CAP ITEM TYPE', 'Select Item type', - 'Выберите тип предмета'), - ('CAP ABOUT', 'About Map Editor', - 'О программе'), - ('CAP ACT', 'Activation type', - 'Тип активации'), - ('CAP ADD SKY', 'Select Sky Texture', - 'Выберите текстуру неба'), - ('CAP ADD SOUND', 'Select Sound/Music', - 'Выберите звук/музыку'), - ('CAP ADD TEXTURE', 'Select Texture', - 'Выберите текстуру'), - ('CAP KEYS', 'Keys', - 'Ключи'), - ('CAP TEST', 'Map Checking', - 'Проверка карты'), - ('CAP OPT', 'Map Optimization', - 'Оптимизация карты'), - ('CAP SETS', 'Map Parameters', - 'Параметры карты'), - ('CAP LAUNCH', 'In-game test Settings', - 'Настройки теста в игре'), - ('CAP ES', 'Editor Settings', - 'Настройки редактора'), - ('CAP PACK', 'Pack Map', - 'Упаковать карту'), - ('CAP SAVE', 'Save Map', - 'Сохранить карту'), - ('CAP MINI', 'Save Mini-map', - 'Сохранить мини-карту'), - ('CAP SELECT', 'Select Map', - 'Выберите карту'), - ('CAP OPEN', 'Open Map', - 'Открыть карту'), - ('CAP REMOVE', 'Remove Map', - 'Удалить карту'), - ('CAP TEXTURE', 'Texture: %dx%d', - 'Текстура: %dx%d'), - ('CAP ANIMATION', 'Animation: %dx%d, %d frames', - 'Анимация: %dx%d, %d кадров'), - ('CAP STAT SELECTED', 'Selected objects: %d', - 'Выделено объектов: %d'), - - ('CTRL PROP KEY', 'Property', - 'Свойство'), - ('CTRL PROP VALUE', 'Value', - 'Значение'), - - ('CTRL PANELS', 'Panels', - 'Панели'), - ('CTRL ITEMS', 'Items', - 'Предметы'), - ('CTRL MONSTERS', 'Monsters', - 'Монстры'), - ('CTRL AREAS', 'Areas', - 'Области'), - ('CTRL TRIGGERS', 'Triggers', - 'Триггеры'), - - ('CTRL LIST TEXTURE', 'Texture List', - 'Список текстур'), - ('CTRL LIST ITEM', 'Item List', - 'Список предметов'), - ('CTRL LIST MONSTER', 'Monster List', - 'Список монстров'), - ('CTRL LIST AREA', 'Area List', - 'Список областей'), - ('CTRL LIST TRIGGER', 'Trigger List', - 'Список триггеров'), - ('CTRL LIST ACTIVE', 'Activation Type', - 'Тип активации триггера'), - ('CTRL LIST KEYS', 'Keys Needed', - 'Ключи для активации'), - - ('CTRL PREVIEW', 'Texture Preview', - 'Предварительный просмотр'), - ('CTRL ITEM DM', 'DM Only', - 'Только в DM'), - ('CTRL ITEM FALLS', 'Falls', - 'Падает'), - ('CTRL LEFT', 'Left', - 'Влево'), - ('CTRL RIGHT', 'Right', - 'Вправо'), - - ('CTRL ACT PLAYER CLOSE', 'Player Collides', - 'Игрок близко'), - ('CTRL ACT MONSTER CLOSE', 'Monster Collides', - 'Монстр близко'), - ('CTRL ACT PLAYER PRESS', 'Player Pressed', - 'Игрок нажал'), - ('CTRL ACT MONSTER PRESS', 'Monster Pressed', - 'Монстр нажал'), - ('CTRL ACT SHOT', 'Shot', - 'Выстрел'), - ('CTRL ACT NO MONSTER', 'No Monsters', - 'Монстров нет'), - - ('CTRL KEYS RED', 'Red Key', - 'Красный ключ'), - ('CTRL KEYS GREEN', 'Green Key', - 'Зелёный ключ'), - ('CTRL KEYS BLUE', 'Blue Key', - 'Синий ключ'), - ('CTRL KEYS TEAM RED', 'Red Team', - 'Красная команда'), - ('CTRL KEYS TEAM BLUE', 'Blue Team', - 'Синяя команда'), - - ('CTRL OPT GB', 'Optimization', - 'Оптимизация'), - ('CTRL OPT TEXTURE', 'Texture Optimization', - 'Оптимизация текстур'), - ('CTRL OPT PANEL', 'Panel Optimization', - 'Оптимизация панелей'), - ('CTRL OPT WALL', 'Walls', - 'Стены'), - ('CTRL OPT FORE', 'Foreground', - 'Передний план'), - ('CTRL OPT BACK', 'Background', - 'Фон'), - ('CTRL OPT STAIR', 'Steps', - 'Ступени'), - ('CTRL OPT WATER', 'Water', - 'Вода'), - ('CTRL OPT ACID1', 'Acid 1', - 'Кислота 1'), - ('CTRL OPT ACID2', 'Acid 2', - 'Кислота 2'), - ('CTRL OPT LIFT', 'Streams', - 'Лифты'), - ('CTRL OPT BLOCKMON', 'Monster Boundary', - 'Блокиратор монстров'), - ('CTRL OPT DESC TEXTURE', 'Deletes unused textures from texture list.', - 'Удаляет неиспользуемые текстуры из списка.'), - ('CTRL OPT DESC PANEL', 'Merges nearby panels of same type. Increases game performance.', - 'Объединяет одинаковые панели, расположенные вплотную друг к другу, увеличивая тем самым производительность игры.'), - ('CTRL SETS STATS', 'Statistics:', - 'Статистика:'), - ('CTRL SETS SIZES', 'Map Size:', - 'Размеры:'), - - ('CTRL LAUNCH DM', 'Deathmatch', - 'Deathmatch'), - ('CTRL LAUNCH TDM', 'Team Deathmatch', - 'Team Deathmatch'), - ('CTRL LAUNCH CTF', 'Capture the Flag', - 'Capture the Flag'), - ('CTRL LAUNCH COOP', 'Cooperative', - 'Cooperative'), - ('CTRL LAUNCH 2P', 'Two Players', - 'Два игрока'), - ('CTRL LAUNCH FF', 'Friendly Fire', - 'Урон своих'), - ('CTRL LAUNCH EXIT', 'Enable Exit', - 'Включить выход'), - ('CTRL LAUNCH WEAPONS', 'Weapons Stay', - 'Оружие остаётся'), - ('CTRL LAUNCH MONSTERS', 'Enable Monsters', - 'Монстры в DM'), - ('CTRL LAUNCH CLOSE', 'Close the game after exiting the map', - 'Закрыть игру после выхода из карты'), - ('CTRL LAUNCH OPEN', 'Select Doom 2D: Forever executable', - 'Выберите файл игры Doom 2D: Forever'), - - ('CTRL ES GRID', 'Show Grid', - 'Показывать сетку'), - ('CTRL ES TEXTURE', 'Show Panel Texture', - 'Показывать текстуру панели'), - ('CTRL ES PANEL SIZE', 'Show Panel Size', - 'Показывать размеры панели '), - ('CTRL ES CHECKERBOARD', 'Use Checkerboard', - 'Использовать шахматку'), - - ('CTRL PACK TEXTURES', 'Textures', - 'Текстуры'), - ('CTRL PACK SKY', 'Sky', - 'Небо'), - ('CTRL PACK MUSIC', 'Music', - 'Музыку'), - ('CTRL PACK ADD', 'Don''t overwrite WAD', - 'Не перезаписывать WAD'), - ('CTRL PACK NON STD', 'Non-standard Resources only', - 'Только нестандартные ресурсы'), - - ('LAB TEX WIDTH', 'Texture Width:', - 'Ширина текстуры:'), - ('LAB TEX HEIGHT', 'Texture Height:', - 'Высота текстуры:'), - - ('LAB SPECTRUM', 'Show the Spectrum', - 'Показать спектр'), - - ('LAB ABOUT VER', 'Version 2.1.5', - 'Версия 2.1.5'), - ('LAB ABOUT AUTHOR', 'Author: rs.falcon', - 'Автор: rs.falcon'), - ('LAB ABOUT AUTHOR 2', 'Additions: Pss', - 'Дорабатывал: Pss'), - ('LAB ABOUT MAIL', 'rmw.falcon@mail.ru', - 'rmw.falcon@mail.ru'), - ('LAB ABOUT MAIL 2', 'pssxx@mail.ru', - 'pssxx@mail.ru'), - ('LAB ABOUT SITE', 'Doom 2D: Forever Web-site', - 'Сайт Doom 2D: Forever'), - ('LAB ABOUT HTTP', 'www.doom2d.org', - 'www.doom2d.org'), - - ('LAB ADD WADS', 'WAD Files:', - 'Список WAD-файлов:'), - ('LAB ADD SECTIONS', 'WAD Sections:', - 'Список секций WAD-файла:'), - - ('LAB SETS NAME', 'Map Name:', - 'Название карты:'), - ('LAB SETS DESC', 'Map Description', - 'Описание карты:'), - ('LAB SETS AUTHOR', 'Author:', - 'Автор:'), - ('LAB SETS BACK', 'Background/Sky:', - 'Фон/Небо:'), - ('LAB SETS MUSIC', 'Music:', - 'Музыка:'), - ('LAB SETS TEXTURES', 'Textures:', - 'Текстур:'), - ('LAB SETS PANELS', 'Panels:', - 'Панелей:'), - ('LAB SETS ITEMS', 'Items:', - 'Предметов:'), - ('LAB SETS MONSTERS', 'Monsters:', - 'Монстров:'), - ('LAB SETS AREAS', 'Areas:', - 'Областей:'), - ('LAB SETS TRIGGERS', 'Triggers:', - 'Триггеров:'), - ('LAB SETS SIZES', 'Current:', - 'Текущий:'), - ('LAB SETS WIDTH', 'Width:', - 'Ширина:'), - ('LAB SETS HEIGHT', 'Height:', - 'Высота:'), - ('LAB SETS MAPMOVE', 'Direction to shift map objects:', - 'Направление смещения объектов карты:'), - ('LAB SETS SNAPPING', 'Preserve snapping', - 'Сохранять привязку'), - - ('LAB LAUNCH TIME', 'Time Limit:', - 'Лимит времени:'), - ('LAB LAUNCH SECS', 'seconds', - 'секунд'), - ('LAB LAUNCH SCORE', 'Score Limit:', - 'Лимит очков:'), - ('LAB LAUNCH PATH', 'Path to Doom2DF.exe:', - 'Путь к Doom2DF.exe:'), - - ('LAB ES GRID', 'Grid Step:', - 'Шаг сетки:'), - ('LAB ES GRID COLOR', 'Grid Color:', - 'Цвет сетки:'), - ('LAB ES GRID SIZE', 'Grid Dot Size:', - 'Размер точек сетки:'), - ('LAB ES BACK', 'Background Color:', - 'Цвет фона:'), - ('LAB ES PREVIEW', 'Texture Preview Background Color:', - 'Цвет фона поля предпросмотра текстуры:'), - ('LAB ES MINIMAP', 'Mini-map Scale:', - 'Масштаб мини-карты:'), - ('LAB ES RECENT', 'Recent Maps List Contains:', - 'Запоминать последних открытых карт:'), - ('LAB ES LANGUAGE', 'Language:', - 'Язык:'), - - ('LAB PACK SAVE TO', 'Save to:', - 'Сохранить в:'), - ('LAB PACK MAP NAME', 'Map Resource Name:', - 'Название ресурса карты:'), - ('LAB PACK TEXTURES', 'Texture Section:', - 'Секция для текстур:'), - ('LAB PACK SKY', 'Sky Section:', - 'Секция для неба:'), - ('LAB PACK MUSIC', 'Music Section:', - 'Секция для музыки:'), - - ('LAB MINI SCALE', 'Scale:', - 'Масштаб:'), - - ('BTN APPLY PROPS', 'Apply Properties', - 'Применить свойства'), - ('BTN OK', 'OK', - 'OK'), - ('BTN CANCEL', 'Cancel', - 'Отмена'), - ('BTN ADD', 'Add', - 'Добавить'), - ('BTN CLOSE', 'Close', - 'Закрыть'), - ('BTN ADD CLOSE', 'Add and Close', - 'Добавить и закрыть'), - ('BTN TEST AGAIN', 'Check', - 'Проверить'), - ('BTN START', 'Run', - 'Начать'), - ('BTN PACK', 'Pack', - 'Упаковать'), - ('BTN SAVE', 'Save', - 'Сохранить'), - ('BTN NO SOUND', 'No sound', - 'Нет звука'), - ('BTN TEXTURE ADD', 'Add texture to the list', - 'Добавить текстуру в список'), - ('BTN TEXTURE DELETE', 'Delete texture from the list', - 'Удалить текстуру из списка'), - ('BTN TEXTURE EMPTY', 'Deselect texture', - 'Снять выбор с текстуры'), - - ('LOAD WAD', 'Reading WAD', - 'Чтение WAD'), - ('LOAD MAP', 'Loading Map', - 'Чтение карты'), - ('LOAD TEXTURES', 'Reading Textures', - 'Чтение текстур'), - ('LOAD PANELS', 'Reading Panels', - 'Чтение панелей'), - ('LOAD ITEMS', 'Reading Items', - 'Чтение предметов'), - ('LOAD MONSTERS', 'Reading Monsters', - 'Чтение монстров'), - ('LOAD AREAS', 'Reading Areas', - 'Чтение областей'), - ('LOAD TRIGGERS', 'Reading Triggers', - 'Чтение триггеров'), - - ('TEST AREA WALL', 'Player collides with the wall and will be stuck.', - 'Если в этой области появится игрок, то он застрянет в стене и не сможет двигаться.'), - ('TEST AREA WALL STR', 'Area #%d collides with Map (%d:%d)', - 'Область #%d пересекается с картой (%d:%d)'), - ('TEST SPAWNS 1', 'There are several spawn points for First Player on the map', - 'Несколько точек появления первого игрока'), - ('TEST SPAWNS 2', 'There are several spawn points for Second Player on the map', - 'Несколько точек появления второго игрока'), - ('TEST SPAWNS', 'There are several spawn points on the map. Random one will be used.', - 'Несколько точек появления игрока, будет использована случайная.'), - ('TEST NO DM', 'There are no DM spawn points on the map', - 'На карте нет точек DM'), - ('TEST NO DM EX', 'There are no DM spawn points on the map. Only "Single Player" mode available.', - 'На карте нет точек DM, поиграть получится только в режиме "Single Player".'), - ('TEST MONSTER WALL', 'Monster collides with the wall and will be stuck.', - 'Монстр пересекается с картой. Он застрянет в стене и не сможет двигаться'), - ('TEST MONSTER WALL STR', 'Monster #%d collides with a map (%d:%d)', - 'Монстр #%d пересекается с картой (%d:%d)'), - - ('OPT NO TEXTURES', 'Texture list is empty', - 'Список текстур пуст'), - ('OPT DELETED TEXTURES', 'Deleted Textures:', - 'Удалённые текстуры:'), - ('OPT TOTAL TEXTURES', 'Textures Total:', - 'Всего текстур:'), - ('OPT TEX DELETED', 'Textures Deleted:', - 'Удалено текстур:'), - ('OPT PANELS OPT', 'Panels Optimized:', - 'Оптимизировано панелей:'), - ('OPT WALLS', 'Walls Optimization...', - 'Оптимизация стен...'), - ('OPT FORES', 'Foreground Optimization...', - 'Оптимизация переднего плана...'), - ('OPT BACKS', 'Background Optimization...', - 'Оптимизация фона...'), - ('OPT STAIRS', 'Steps Optimization...', - 'Оптимизация ступеней...'), - ('OPT WATER', 'Water Optimization...', - 'Оптимизация воды...'), - ('OPT ACID1', 'Acid 1 Optimization...', - 'Оптимизация кислоты 1...'), - ('OPT ACID2', 'Acid 2 Optimization...', - 'Оптимизация кислоты 2...'), - ('OPT LIFTS', 'Streams Optimization...', - 'Оптимизация лифтов...'), - ('OPT BLOCKMON', 'Monster Boundaries Optimization...', - 'Оптимизация блокираторов монстров....'), - ('OPT TOTAL PANELS', 'Panels Total:', - 'Всего панелей:'), - ('OPT PANELS AFTER', 'Panels after Optimization:', - 'Панелей после оптимизации:'), - - ('WAD SPECIAL MAP', '', - ''), - ('WAD SPECIAL TEXS', '', - '<СПЕЦТЕКСТУРЫ>'), - - ('FILE FILTER ALL', 'Doom 2D: Forever Maps (*.wad)|*.wad|Old Doom 2D: Forever 0.30 Maps (*.ini)|*.ini|All Files (*.*)|*.*', - 'Карты Doom 2D: Forever (*.wad)|*.wad|Старые карты Doom 2D: Forever 0.30 (*.ini)|*.ini|Все файлы (*.*)|*.*'), - ('FILE FILTER WAD', 'Doom 2D: Forever Maps (*.wad)|*.wad|All Files (*.*)|*.*', - 'Карты Doom 2D: Forever (*.wad)|*.wad|Все файлы (*.*)|*.*'), - - ('EDITOR TITLE', 'Doom 2D: Forever Map Editor', - 'Редактор карт Doom 2D: Forever'), - - - ('', '', '') ); - + const + InSourceLanguage = 'en_US'; procedure SetupArrays(); var @@ -1811,165 +672,166 @@ var begin // Да/Нет: - BoolNames[False] := _lc[I_ARRAY_BOOL_FALSE]; - BoolNames[True] := _lc[I_ARRAY_BOOL_TRUE]; + BoolNames[False] := MsgArrayBoolFalse; + BoolNames[True] := MsgArrayBoolTrue; // Направления: - DirNames[D_LEFT] := _lc[I_ARRAY_DIR_LEFT]; - DirNames[D_RIGHT] := _lc[I_ARRAY_DIR_RIGHT]; + DirNames[D_LEFT] := MsgArrayDirLeft; + DirNames[D_RIGHT] := MsgArrayDirRight; // Смены направления: - DirNamesAdv[0] := _lc[I_ARRAY_DIR_SAME]; - DirNamesAdv[1] := _lc[I_ARRAY_DIR_LEFT]; - DirNamesAdv[2] := _lc[I_ARRAY_DIR_RIGHT]; - DirNamesAdv[3] := _lc[I_ARRAY_DIR_REVERSED]; + DirNamesAdv[0] := MsgArrayDirSame; + DirNamesAdv[1] := MsgArrayDirLeft; + DirNamesAdv[2] := MsgArrayDirRight; + DirNamesAdv[3] := MsgArrayDirReversed; // Направление (на кнопках): - DirButtonNames[1] := _lc[I_ARRAY_DIRBTN_LEFT]; - DirButtonNames[2] := _lc[I_ARRAY_DIRBTN_RIGHT]; - DirButtonNames[3] := _lc[I_ARRAY_DIRBTN_UP]; - DirButtonNames[4] := _lc[I_ARRAY_DIRBTN_DOWN]; + DirButtonNames[1] := MsgArrayDirbtnLeft; + DirButtonNames[2] := MsgArrayDirbtnRight; + DirButtonNames[3] := MsgArrayDirbtnUp; + DirButtonNames[4] := MsgArrayDirbtnDown; // Названия панелей: - PANELNAMES[0] := _lc[I_ARRAY_PANEL_WALL]; - PANELNAMES[1] := _lc[I_ARRAY_PANEL_BACK]; - PANELNAMES[2] := _lc[I_ARRAY_PANEL_FRONT]; - PANELNAMES[3] := _lc[I_ARRAY_PANEL_DOOR_OPEN]; - PANELNAMES[4] := _lc[I_ARRAY_PANEL_DOOR_CLOSE]; - PANELNAMES[5] := _lc[I_ARRAY_PANEL_STAIR]; - PANELNAMES[6] := _lc[I_ARRAY_PANEL_WATER]; - PANELNAMES[7] := _lc[I_ARRAY_PANEL_ACID_1]; - PANELNAMES[8] := _lc[I_ARRAY_PANEL_ACID_2]; - PANELNAMES[9] := _lc[I_ARRAY_PANEL_LIFT_UP]; - PANELNAMES[10] := _lc[I_ARRAY_PANEL_LIFT_DOWN]; - PANELNAMES[11] := _lc[I_ARRAY_PANEL_LIFT_LEFT]; - PANELNAMES[12] := _lc[I_ARRAY_PANEL_LIFT_RIGHT]; - PANELNAMES[13] := _lc[I_ARRAY_PANEL_BLOCKMON]; + PANELNAMES[0] := MsgArrayPanelWall; + PANELNAMES[1] := MsgArrayPanelBack; + PANELNAMES[2] := MsgArrayPanelFront; + PANELNAMES[3] := MsgArrayPanelDoorOpen; + PANELNAMES[4] := MsgArrayPanelDoorClose; + PANELNAMES[5] := MsgArrayPanelStair; + PANELNAMES[6] := MsgArrayPanelWater; + PANELNAMES[7] := MsgArrayPanelAcid1; + PANELNAMES[8] := MsgArrayPanelAcid2; + PANELNAMES[9] := MsgArrayPanelLiftUp; + PANELNAMES[10] := MsgArrayPanelLiftDown; + PANELNAMES[11] := MsgArrayPanelLiftLeft; + PANELNAMES[12] := MsgArrayPanelLiftRight; + PANELNAMES[13] := MsgArrayPanelBlockmon; // Названия эффектов: - EffectNames[EFFECT_NONE] := _lc[I_ARRAY_FX_NONE]; - EffectNames[EFFECT_TELEPORT] := _lc[I_ARRAY_FX_TELEPORT]; - EffectNames[EFFECT_RESPAWN] := _lc[I_ARRAY_FX_RESPAWN]; - EffectNames[EFFECT_FIRE] := _lc[I_ARRAY_FX_FIRE]; + EffectNames[EFFECT_NONE] := MsgArrayFxNone; + EffectNames[EFFECT_TELEPORT] := MsgArrayFxTeleport; + EffectNames[EFFECT_RESPAWN] := MsgArrayFxRespawn; + EffectNames[EFFECT_FIRE] := MsgArrayFxFire; // Названия предметов: - ItemNames[ITEM_MEDKIT_SMALL] := _lc[I_ARRAY_ITEM_MEDKIT]; - ItemNames[ITEM_MEDKIT_LARGE] := _lc[I_ARRAY_ITEM_LARGE_MEDKIT]; - ItemNames[ITEM_MEDKIT_BLACK] := _lc[I_ARRAY_ITEM_BLACK_MEDKIT]; - ItemNames[ITEM_ARMOR_GREEN] := _lc[I_ARRAY_ITEM_GREEN_ARMOR]; - ItemNames[ITEM_ARMOR_BLUE] := _lc[I_ARRAY_ITEM_BLUE_ARMOR]; - ItemNames[ITEM_SPHERE_BLUE] := _lc[I_ARRAY_ITEM_BLUE_SPHERE]; - ItemNames[ITEM_SPHERE_WHITE] := _lc[I_ARRAY_ITEM_MEGASPHERE]; - ItemNames[ITEM_SUIT] := _lc[I_ARRAY_ITEM_HAZ_SUIT]; - ItemNames[ITEM_OXYGEN] := _lc[I_ARRAY_ITEM_OXYGEN]; - ItemNames[ITEM_INVUL] := _lc[I_ARRAY_ITEM_INVULNERABILITY]; - ItemNames[ITEM_WEAPON_SAW] := _lc[I_ARRAY_ITEM_CHAINSAW]; - ItemNames[ITEM_WEAPON_SHOTGUN1] := _lc[I_ARRAY_ITEM_SHOTGUN]; - ItemNames[ITEM_WEAPON_SHOTGUN2] := _lc[I_ARRAY_ITEM_DB_SHOTGUN]; - ItemNames[ITEM_WEAPON_CHAINGUN] := _lc[I_ARRAY_ITEM_CHAINGUN]; - ItemNames[ITEM_WEAPON_ROCKETLAUNCHER] := _lc[I_ARRAY_ITEM_ROCKET_LAUNCHER]; - ItemNames[ITEM_WEAPON_PLASMA] := _lc[I_ARRAY_ITEM_PLASMA_RIFLE]; - ItemNames[ITEM_WEAPON_BFG] := _lc[I_ARRAY_ITEM_BFG]; - ItemNames[ITEM_WEAPON_SUPERPULEMET] := _lc[I_ARRAY_ITEM_SUPER_MINIGUN]; - ItemNames[ITEM_WEAPON_FLAMETHROWER] := _lc[I_ARRAY_ITEM_FLAMETHROWER]; - ItemNames[ITEM_AMMO_BULLETS] := _lc[I_ARRAY_ITEM_CLIP]; - ItemNames[ITEM_AMMO_BULLETS_BOX] := _lc[I_ARRAY_ITEM_AMMO_BOX]; - ItemNames[ITEM_AMMO_SHELLS] := _lc[I_ARRAY_ITEM_4_SHELLS]; - ItemNames[ITEM_AMMO_SHELLS_BOX] := _lc[I_ARRAY_ITEM_25_SHELLS]; - ItemNames[ITEM_AMMO_ROCKET] := _lc[I_ARRAY_ITEM_1_ROCKET]; - ItemNames[ITEM_AMMO_ROCKET_BOX] := _lc[I_ARRAY_ITEM_ROCKET_BOX]; - ItemNames[ITEM_AMMO_CELL] := _lc[I_ARRAY_ITEM_CELL]; - ItemNames[ITEM_AMMO_CELL_BIG] := _lc[I_ARRAY_ITEM_LARGE_CELL]; - ItemNames[ITEM_AMMO_FUELCAN] := _lc[I_ARRAY_ITEM_FUELCAN]; - ItemNames[ITEM_AMMO_BACKPACK] := _lc[I_ARRAY_ITEM_BACKPACK]; - ItemNames[ITEM_KEY_RED] := _lc[I_ARRAY_ITEM_KEY_RED]; - ItemNames[ITEM_KEY_GREEN] := _lc[I_ARRAY_ITEM_KEY_GREEN]; - ItemNames[ITEM_KEY_BLUE] := _lc[I_ARRAY_ITEM_KEY_BLUE]; - ItemNames[ITEM_WEAPON_KASTET] := '?'; + ItemNames[ITEM_MEDKIT_SMALL] := MsgArrayItemMedkit; + ItemNames[ITEM_MEDKIT_LARGE] := MsgArrayItemLargeMedkit; + ItemNames[ITEM_MEDKIT_BLACK] := MsgArrayItemBlackMedkit; + ItemNames[ITEM_ARMOR_GREEN] := MsgArrayItemGreenArmor; + ItemNames[ITEM_ARMOR_BLUE] := MsgArrayItemBlueArmor; + ItemNames[ITEM_SPHERE_BLUE] := MsgArrayItemBlueSphere; + ItemNames[ITEM_SPHERE_WHITE] := MsgArrayItemMegasphere; + ItemNames[ITEM_SUIT] := MsgArrayItemHazSuit; + ItemNames[ITEM_OXYGEN] := MsgArrayItemOxygen; + ItemNames[ITEM_INVUL] := MsgArrayItemInvulnerability; + ItemNames[ITEM_WEAPON_SAW] := MsgArrayItemChainsaw; + ItemNames[ITEM_WEAPON_SHOTGUN1] := MsgArrayItemShotgun; + ItemNames[ITEM_WEAPON_SHOTGUN2] := MsgArrayItemDbShotgun; + ItemNames[ITEM_WEAPON_CHAINGUN] := MsgArrayItemChaingun; + ItemNames[ITEM_WEAPON_ROCKETLAUNCHER] := MsgArrayItemRocketLauncher; + ItemNames[ITEM_WEAPON_PLASMA] := MsgArrayItemPlasmaRifle; + ItemNames[ITEM_WEAPON_BFG] := MsgArrayItemBfg; + ItemNames[ITEM_WEAPON_SUPERCHAINGUN] := MsgArrayItemSuperChaingun; + ItemNames[ITEM_WEAPON_FLAMETHROWER] := MsgArrayItemFlamethrower; + ItemNames[ITEM_AMMO_BULLETS] := MsgArrayItemClip; + ItemNames[ITEM_AMMO_BULLETS_BOX] := MsgArrayItemAmmoBox; + ItemNames[ITEM_AMMO_SHELLS] := MsgArrayItem4Shells; + ItemNames[ITEM_AMMO_SHELLS_BOX] := MsgArrayItem25Shells; + ItemNames[ITEM_AMMO_ROCKET] := MsgArrayItem1Rocket; + ItemNames[ITEM_AMMO_ROCKET_BOX] := MsgArrayItemRocketBox; + ItemNames[ITEM_AMMO_CELL] := MsgArrayItemCell; + ItemNames[ITEM_AMMO_CELL_BIG] := MsgArrayItemLargeCell; + ItemNames[ITEM_AMMO_FUELCAN] := MsgArrayItemFuelcan; + ItemNames[ITEM_AMMO_BACKPACK] := MsgArrayItemBackpack; + ItemNames[ITEM_KEY_RED] := MsgArrayItemKeyRed; + ItemNames[ITEM_KEY_GREEN] := MsgArrayItemKeyGreen; + ItemNames[ITEM_KEY_BLUE] := MsgArrayItemKeyBlue; + ItemNames[ITEM_WEAPON_IRONFIST] := '?'; ItemNames[ITEM_WEAPON_PISTOL] := '??'; - ItemNames[ITEM_BOTTLE] := _lc[I_ARRAY_ITEM_BOTTLE]; - ItemNames[ITEM_HELMET] := _lc[I_ARRAY_ITEM_HELMET]; - ItemNames[ITEM_JETPACK] := _lc[I_ARRAY_ITEM_JETPACK]; - ItemNames[ITEM_INVIS] := _lc[I_ARRAY_ITEM_INVIS]; + ItemNames[ITEM_BOTTLE] := MsgArrayItemBottle; + ItemNames[ITEM_HELMET] := MsgArrayItemHelmet; + ItemNames[ITEM_JETPACK] := MsgArrayItemJetpack; + ItemNames[ITEM_INVIS] := MsgArrayItemInvis; // Названия снарядов: - ShotNames[TRIGGER_SHOT_PISTOL] := _lc[I_ARRAY_SHOT_PISTOL]; - ShotNames[TRIGGER_SHOT_BULLET] := _lc[I_ARRAY_SHOT_BULLET]; - ShotNames[TRIGGER_SHOT_SHOTGUN] := _lc[I_ARRAY_SHOT_SHOTGUN]; - ShotNames[TRIGGER_SHOT_SSG] := _lc[I_ARRAY_SHOT_SSG]; - ShotNames[TRIGGER_SHOT_IMP] := _lc[I_ARRAY_SHOT_IMP]; - ShotNames[TRIGGER_SHOT_PLASMA] := _lc[I_ARRAY_SHOT_PLASMA]; - ShotNames[TRIGGER_SHOT_SPIDER] := _lc[I_ARRAY_SHOT_SPIDER]; - ShotNames[TRIGGER_SHOT_CACO] := _lc[I_ARRAY_SHOT_CACO]; - ShotNames[TRIGGER_SHOT_BARON] := _lc[I_ARRAY_SHOT_BARON]; - ShotNames[TRIGGER_SHOT_MANCUB] := _lc[I_ARRAY_SHOT_MANCUB]; - ShotNames[TRIGGER_SHOT_REV] := _lc[I_ARRAY_SHOT_REV]; - ShotNames[TRIGGER_SHOT_ROCKET] := _lc[I_ARRAY_SHOT_ROCKET]; - ShotNames[TRIGGER_SHOT_BFG] := _lc[I_ARRAY_SHOT_BFG]; - ShotNames[TRIGGER_SHOT_EXPL] := _lc[I_ARRAY_SHOT_EXPL]; - ShotNames[TRIGGER_SHOT_BFGEXPL] := _lc[I_ARRAY_SHOT_BFGEXPL]; + ShotNames[TRIGGER_SHOT_PISTOL] := MsgArrayShotPistol; + ShotNames[TRIGGER_SHOT_BULLET] := MsgArrayShotBullet; + ShotNames[TRIGGER_SHOT_SHOTGUN] := MsgArrayShotShotgun; + ShotNames[TRIGGER_SHOT_SSG] := MsgArrayShotSsg; + ShotNames[TRIGGER_SHOT_IMP] := MsgArrayShotImp; + ShotNames[TRIGGER_SHOT_PLASMA] := MsgArrayShotPlasma; + ShotNames[TRIGGER_SHOT_SPIDER] := MsgArrayShotSpider; + ShotNames[TRIGGER_SHOT_CACO] := MsgArrayShotCaco; + ShotNames[TRIGGER_SHOT_BARON] := MsgArrayShotBaron; + ShotNames[TRIGGER_SHOT_MANCUB] := MsgArrayShotMancub; + ShotNames[TRIGGER_SHOT_REV] := MsgArrayShotRev; + ShotNames[TRIGGER_SHOT_ROCKET] := MsgArrayShotRocket; + ShotNames[TRIGGER_SHOT_BFG] := MsgArrayShotBfg; + ShotNames[TRIGGER_SHOT_EXPL] := MsgArrayShotExpl; + ShotNames[TRIGGER_SHOT_BFGEXPL] := MsgArrayShotBfgexpl; + ShotNames[TRIGGER_SHOT_FLAME] := MsgArrayShotFlame; // Названия монстров: - MonsterNames[MONSTER_DEMON] := _lc[I_ARRAY_MON_DEMON]; - MonsterNames[MONSTER_IMP] := _lc[I_ARRAY_MON_IMP]; - MonsterNames[MONSTER_ZOMBY] := _lc[I_ARRAY_MON_ZOMBIE]; - MonsterNames[MONSTER_SERG] := _lc[I_ARRAY_MON_SERGEANT]; - MonsterNames[MONSTER_CYBER] := _lc[I_ARRAY_MON_CYBER]; - MonsterNames[MONSTER_CGUN] := _lc[I_ARRAY_MON_CGUN]; - MonsterNames[MONSTER_BARON] := _lc[I_ARRAY_MON_HELL_BARON]; - MonsterNames[MONSTER_KNIGHT] := _lc[I_ARRAY_MON_HELL_KNIGHT]; - MonsterNames[MONSTER_CACO] := _lc[I_ARRAY_MON_CACODEMON]; - MonsterNames[MONSTER_SOUL] := _lc[I_ARRAY_MON_LOST_SOUL]; - MonsterNames[MONSTER_PAIN] := _lc[I_ARRAY_MON_PAIN_ELEMENTAL]; - MonsterNames[MONSTER_SPIDER] := _lc[I_ARRAY_MON_MASTERMIND]; - MonsterNames[MONSTER_BSP] := _lc[I_ARRAY_MON_ARACHNATRON]; - MonsterNames[MONSTER_MANCUB] := _lc[I_ARRAY_MON_MANCUBUS]; - MonsterNames[MONSTER_SKEL] := _lc[I_ARRAY_MON_REVENANT]; - MonsterNames[MONSTER_VILE] := _lc[I_ARRAY_MON_ARCHVILE]; - MonsterNames[MONSTER_FISH] := _lc[I_ARRAY_MON_FISH]; - MonsterNames[MONSTER_BARREL] := _lc[I_ARRAY_MON_BARREL]; - MonsterNames[MONSTER_ROBO] := _lc[I_ARRAY_MON_ROBOT]; - MonsterNames[MONSTER_MAN] := _lc[I_ARRAY_MON_PRIKOLIST]; + MonsterNames[MONSTER_DEMON] := MsgArrayMonDemon; + MonsterNames[MONSTER_IMP] := MsgArrayMonImp; + MonsterNames[MONSTER_ZOMBY] := MsgArrayMonZombie; + MonsterNames[MONSTER_SERG] := MsgArrayMonSergeant; + MonsterNames[MONSTER_CYBER] := MsgArrayMonCyber; + MonsterNames[MONSTER_CGUN] := MsgArrayMonCgun; + MonsterNames[MONSTER_BARON] := MsgArrayMonHellBaron; + MonsterNames[MONSTER_KNIGHT] := MsgArrayMonHellKnight; + MonsterNames[MONSTER_CACO] := MsgArrayMonCacodemon; + MonsterNames[MONSTER_SOUL] := MsgArrayMonLostSoul; + MonsterNames[MONSTER_PAIN] := MsgArrayMonPainElemental; + MonsterNames[MONSTER_SPIDER] := MsgArrayMonMastermind; + MonsterNames[MONSTER_BSP] := MsgArrayMonArachnatron; + MonsterNames[MONSTER_MANCUB] := MsgArrayMonMancubus; + MonsterNames[MONSTER_SKEL] := MsgArrayMonRevenant; + MonsterNames[MONSTER_VILE] := MsgArrayMonArchvile; + MonsterNames[MONSTER_FISH] := MsgArrayMonFish; + MonsterNames[MONSTER_BARREL] := MsgArrayMonBarrel; + MonsterNames[MONSTER_ROBO] := MsgArrayMonRobot; + MonsterNames[MONSTER_MAN] := MsgArrayMonPrikolist; // Названия областей: - AreaNames[AREA_PLAYERPOINT1] := _lc[I_ARRAY_AREA_PLAYER_ONE]; - AreaNames[AREA_PLAYERPOINT2] := _lc[I_ARRAY_AREA_PLAYER_TWO]; - AreaNames[AREA_DMPOINT] := _lc[I_ARRAY_AREA_DM]; - AreaNames[AREA_REDFLAG] := _lc[I_ARRAY_AREA_FLAG_RED]; - AreaNames[AREA_BLUEFLAG] := _lc[I_ARRAY_AREA_FLAG_BLUE]; - AreaNames[AREA_DOMFLAG] := _lc[I_ARRAY_AREA_FLAG_DOM]; - AreaNames[AREA_REDTEAMPOINT] := _lc[I_ARRAY_AREA_TEAM_RED]; - AreaNames[AREA_BLUETEAMPOINT] := _lc[I_ARRAY_AREA_TEAM_BLUE]; + AreaNames[AREA_PLAYERPOINT1] := MsgArrayAreaPlayerOne; + AreaNames[AREA_PLAYERPOINT2] := MsgArrayAreaPlayerTwo; + AreaNames[AREA_DMPOINT] := MsgArrayAreaDm; + AreaNames[AREA_REDFLAG] := MsgArrayAreaFlagRed; + AreaNames[AREA_BLUEFLAG] := MsgArrayAreaFlagBlue; + AreaNames[AREA_DOMFLAG] := MsgArrayAreaFlagDom; + AreaNames[AREA_REDTEAMPOINT] := MsgArrayAreaTeamRed; + AreaNames[AREA_BLUETEAMPOINT] := MsgArrayAreaTeamBlue; // Названия триггеров: - TriggerNames[TRIGGER_EXIT] := _lc[I_ARRAY_TR_EXIT]; - TriggerNames[TRIGGER_TELEPORT] := _lc[I_ARRAY_TR_TELEPORT]; - TriggerNames[TRIGGER_OPENDOOR] := _lc[I_ARRAY_TR_DOOR_OPEN]; - TriggerNames[TRIGGER_CLOSEDOOR] := _lc[I_ARRAY_TR_DOOR_CLOSE]; - TriggerNames[TRIGGER_DOOR] := _lc[I_ARRAY_TR_DOOR_SWITCH]; - TriggerNames[TRIGGER_DOOR5] := _lc[I_ARRAY_TR_DOOR_5_SEC]; - TriggerNames[TRIGGER_CLOSETRAP] := _lc[I_ARRAY_TR_TRAP_CLOSE]; - TriggerNames[TRIGGER_TRAP] := _lc[I_ARRAY_TR_TRAP]; - TriggerNames[TRIGGER_PRESS] := _lc[I_ARRAY_TR_EXTEND]; - TriggerNames[TRIGGER_SECRET] := _lc[I_ARRAY_TR_SECRET]; - TriggerNames[TRIGGER_LIFTUP] := _lc[I_ARRAY_TR_LIFT_UP]; - TriggerNames[TRIGGER_LIFTDOWN] := _lc[I_ARRAY_TR_LIFT_DOWN]; - TriggerNames[TRIGGER_LIFT] := _lc[I_ARRAY_TR_LIFT_SWITCH]; - TriggerNames[TRIGGER_TEXTURE] := _lc[I_ARRAY_TR_TEXTURE]; - TriggerNames[TRIGGER_ON] := _lc[I_ARRAY_TR_ON]; - TriggerNames[TRIGGER_OFF] := _lc[I_ARRAY_TR_OFF]; - TriggerNames[TRIGGER_ONOFF] := _lc[I_ARRAY_TR_SWITCH]; - TriggerNames[TRIGGER_SOUND] := _lc[I_ARRAY_TR_SOUND]; - TriggerNames[TRIGGER_SPAWNMONSTER] := _lc[I_ARRAY_TR_SPAWN_MONSTER]; - TriggerNames[TRIGGER_SPAWNITEM] := _lc[I_ARRAY_TR_SPAWN_ITEM]; - TriggerNames[TRIGGER_MUSIC] := _lc[I_ARRAY_TR_MUSIC]; - TriggerNames[TRIGGER_PUSH] := _lc[I_ARRAY_TR_PUSH]; - TriggerNames[TRIGGER_SCORE] := _lc[I_ARRAY_TR_SCORE]; - TriggerNames[TRIGGER_MESSAGE] := _lc[I_ARRAY_TR_MESSAGE]; - TriggerNames[TRIGGER_DAMAGE] := _lc[I_ARRAY_TR_DAMAGE]; - TriggerNames[TRIGGER_HEALTH] := _lc[I_ARRAY_TR_HEALTH]; - TriggerNames[TRIGGER_SHOT] := _lc[I_ARRAY_TR_SHOT]; - TriggerNames[TRIGGER_EFFECT] := _lc[I_ARRAY_TR_EFFECT]; + TriggerNames[TRIGGER_EXIT] := MsgArrayTrExit; + TriggerNames[TRIGGER_TELEPORT] := MsgArrayTrTeleport; + TriggerNames[TRIGGER_OPENDOOR] := MsgArrayTrDoorOpen; + TriggerNames[TRIGGER_CLOSEDOOR] := MsgArrayTrDoorClose; + TriggerNames[TRIGGER_DOOR] := MsgArrayTrDoorSwitch; + TriggerNames[TRIGGER_DOOR5] := MsgArrayTrDoor5Sec; + TriggerNames[TRIGGER_CLOSETRAP] := MsgArrayTrTrapClose; + TriggerNames[TRIGGER_TRAP] := MsgArrayTrTrap; + TriggerNames[TRIGGER_PRESS] := MsgArrayTrExtend; + TriggerNames[TRIGGER_SECRET] := MsgArrayTrSecret; + TriggerNames[TRIGGER_LIFTUP] := MsgArrayTrLiftUp; + TriggerNames[TRIGGER_LIFTDOWN] := MsgArrayTrLiftDown; + TriggerNames[TRIGGER_LIFT] := MsgArrayTrLiftSwitch; + TriggerNames[TRIGGER_TEXTURE] := MsgArrayTrTexture; + TriggerNames[TRIGGER_ON] := MsgArrayTrOn; + TriggerNames[TRIGGER_OFF] := MsgArrayTrOff; + TriggerNames[TRIGGER_ONOFF] := MsgArrayTrSwitch; + TriggerNames[TRIGGER_SOUND] := MsgArrayTrSound; + TriggerNames[TRIGGER_SPAWNMONSTER] := MsgArrayTrSpawnMonster; + TriggerNames[TRIGGER_SPAWNITEM] := MsgArrayTrSpawnItem; + TriggerNames[TRIGGER_MUSIC] := MsgArrayTrMusic; + TriggerNames[TRIGGER_PUSH] := MsgArrayTrPush; + TriggerNames[TRIGGER_SCORE] := MsgArrayTrScore; + TriggerNames[TRIGGER_MESSAGE] := MsgArrayTrMessage; + TriggerNames[TRIGGER_DAMAGE] := MsgArrayTrDamage; + TriggerNames[TRIGGER_HEALTH] := MsgArrayTrHealth; + TriggerNames[TRIGGER_SHOT] := MsgArrayTrShot; + TriggerNames[TRIGGER_EFFECT] := MsgArrayTrEffect; // Установка значений в панели выбора объектов: with MainForm do @@ -2002,32 +864,33 @@ begin lbTriggersList.Items.Add(TriggerNames[i]); clbActivationType.Clear(); - clbActivationType.Items.Add(_lc[I_CTRL_ACT_PLAYER_CLOSE]); - clbActivationType.Items.Add(_lc[I_CTRL_ACT_MONSTER_CLOSE]); - clbActivationType.Items.Add(_lc[I_CTRL_ACT_PLAYER_PRESS]); - clbActivationType.Items.Add(_lc[I_CTRL_ACT_MONSTER_PRESS]); - clbActivationType.Items.Add(_lc[I_CTRL_ACT_SHOT]); - clbActivationType.Items.Add(_lc[I_CTRL_ACT_NO_MONSTER]); + clbActivationType.Items.Add(MsgCtrlActPlayerClose); + clbActivationType.Items.Add(MsgCtrlActMonsterClose); + clbActivationType.Items.Add(MsgCtrlActPlayerPress); + clbActivationType.Items.Add(MsgCtrlActMonsterPress); + clbActivationType.Items.Add(MsgCtrlActShot); + clbActivationType.Items.Add(MsgCtrlActNoMonster); clbKeys.Clear(); - clbKeys.Items.Add(_lc[I_CTRL_KEYS_RED]); - clbKeys.Items.Add(_lc[I_CTRL_KEYS_GREEN]); - clbKeys.Items.Add(_lc[I_CTRL_KEYS_BLUE]); - clbKeys.Items.Add(_lc[I_CTRL_KEYS_TEAM_RED]); - clbKeys.Items.Add(_lc[I_CTRL_KEYS_TEAM_BLUE]); + clbKeys.Items.Add(MsgCtrlKeysRed); + clbKeys.Items.Add(MsgCtrlKeysGreen); + clbKeys.Items.Add(MsgCtrlKeysBlue); + clbKeys.Items.Add(MsgCtrlKeysTeamRed); + clbKeys.Items.Add(MsgCtrlKeysTeamBlue); end; end; procedure SetupCaptions(); -var - i: Integer; - + var i: Integer; s: AnsiString; begin // Главная форма: with MainForm do begin // Заголовок: - FormCaption := _lc[I_EDITOR_TITLE]; + s := g_GetBuildHash(false); + if s = 'custom build' then + s := s + ' by ' + g_GetBuilderName() + ' ' + EDITOR_BUILDDATE + ' ' + EDITOR_BUILDTIME; + FormCaption := MsgEditorTitle + ' (' + s + ')'; i := Pos('-', Caption); if i > 0 then begin @@ -2035,495 +898,490 @@ begin end else Caption := FormCaption; - // Главное меню: - // "Файл": - miMenuFile.Caption := _lc[I_MENU_FILE]; - miNewMap.Caption := _lc[I_MENU_FILE_NEW]; - miOpenMap.Caption := _lc[I_MENU_FILE_OPEN]; - miSaveMap.Caption := _lc[I_MENU_FILE_SAVE]; - miSaveMapAs.Caption := _lc[I_MENU_FILE_SAVE_AS]; - miOpenWadMap.Caption := _lc[I_MENU_FILE_OPEN_WAD]; - miReopenMap.Caption := _lc[I_MENU_FILE_REOPEN]; - miSaveMiniMap.Caption := _lc[I_MENU_FILE_SAVE_MINI]; - miDeleteMap.Caption := _lc[I_MENU_FILE_DELETE]; - miPackMap.Caption := _lc[I_MENU_FILE_PACK_MAP]; - miExit.Caption := _lc[I_MENU_FILE_EXIT]; - // "Правка": - miMenuEdit.Caption := _lc[I_MENU_EDIT]; - miUndo.Caption := _lc[I_MENU_EDIT_UNDO]; - miCopy.Caption := _lc[I_MENU_EDIT_COPY]; - miCut.Caption := _lc[I_MENU_EDIT_CUT]; - miPaste.Caption := _lc[I_MENU_EDIT_PASTE]; - miSelectAll.Caption := _lc[I_MENU_EDIT_SELECT_ALL]; - miToFore.Caption := _lc[I_MENU_EDIT_TO_FORE]; - miToBack.Caption := _lc[I_MENU_EDIT_TO_BACK]; - // "Инструменты": - miMenuTools.Caption := _lc[I_MENU_TOOLS]; - miSnapToGrid.Caption := _lc[I_MENU_TOOLS_SNAP_GRID]; - miMiniMap.Caption := _lc[I_MENU_TOOLS_MINIMAP]; - miSwitchGrid.Caption := _lc[I_MENU_TOOLS_STEP_GRID]; - miShowEdges.Caption := _lc[I_MENU_TOOLS_SHOW_EDGES]; - miLayers.Caption := _lc[I_MENU_TOOLS_LAYERS]; - miLayer1.Caption := _lc[I_MENU_LAYER_BACK]; - miLayer2.Caption := _lc[I_MENU_LAYER_WALL]; - miLayer3.Caption := _lc[I_MENU_LAYER_FORE]; - miLayer4.Caption := _lc[I_MENU_LAYER_STAIR]; - miLayer5.Caption := _lc[I_MENU_LAYER_WATER]; - miLayer6.Caption := _lc[I_MENU_LAYER_ITEM]; - miLayer7.Caption := _lc[I_MENU_LAYER_MONSTER]; - miLayer8.Caption := _lc[I_MENU_LAYER_AREA]; - miLayer9.Caption := _lc[I_MENU_LAYER_TRIGGER]; - // "Сервис": - miMenuService.Caption := _lc[I_MENU_SERV]; - miCheckMap.Caption := _lc[I_MENU_SERV_TEST]; - miOptimmization.Caption := _lc[I_MENU_SERV_OPT]; - miMapPreview.Caption := _lc[I_MENU_SERV_PREVIEW]; - miTestMap.Caption := _lc[I_MENU_SERV_LAUNCH]; - // "Настройка": - miMenuSettings.Caption := _lc[I_MENU_SETS]; - miMapOptions.Caption := _lc[I_MENU_SETS_MAP]; - miOptions.Caption := _lc[I_MENU_SETS_EDITOR]; - miMapTestSettings.Caption := _lc[I_MENU_SETS_LAUNCH]; - // "Справка": - miMenuHelp.Caption := _lc[I_MENU_HELP]; - miAbout.Caption := _lc[I_MENU_HELP_ABOUT]; - - // Панель инструментов: - tbNewMap.Hint := _lc[I_MENU_TB_NEW]; - tbOpenMap.Hint := _lc[I_MENU_TB_OPEN]; - tbSaveMap.Hint := _lc[I_MENU_TB_SAVE]; - tbOpenWadMap.Hint := _lc[I_MENU_TB_OPEN_WAD]; - tbShowMap.Hint := _lc[I_MENU_TB_MINIMAP]; - tbShow.Hint := _lc[I_MENU_TB_LAYERS]; - tbGridOn.Hint := _lc[I_MENU_TB_GRID]; - tbGrid.Hint := _lc[I_MENU_TB_GRID_STEP]; - tbTestMap.Hint := _lc[I_MENU_TB_LAUNCH]; - // Всплывающее меню для кнопки слоев: - miLayerP1.Caption := _lc[I_MENU_LAYER_BACK]; - miLayerP2.Caption := _lc[I_MENU_LAYER_WALL]; - miLayerP3.Caption := _lc[I_MENU_LAYER_FORE]; - miLayerP4.Caption := _lc[I_MENU_LAYER_STAIR]; - miLayerP5.Caption := _lc[I_MENU_LAYER_WATER]; - miLayerP6.Caption := _lc[I_MENU_LAYER_ITEM]; - miLayerP7.Caption := _lc[I_MENU_LAYER_MONSTER]; - miLayerP8.Caption := _lc[I_MENU_LAYER_AREA]; - miLayerP9.Caption := _lc[I_MENU_LAYER_TRIGGER]; - // Всплывающее меню для кнопки теста карты: - miMapTestPMSet.Caption := _lc[I_MENU_LAUNCH_SETS]; - - // Кнопка применения свойств: - bApplyProperty.Caption := _lc[I_BTN_APPLY_PROPS]; - // Редактор свойств объектов: - vleObjectProperty.TitleCaptions[0] := _lc[I_CTRL_PROP_KEY]; - vleObjectProperty.TitleCaptions[1] := _lc[I_CTRL_PROP_VALUE]; - - // Вкладка "Панели": - tsPanels.Caption := _lc[I_CTRL_PANELS]; - lbPanelType.Hint := _lc[I_PROP_PANEL_TYPE]; - lbTextureList.Hint := _lc[I_CTRL_LIST_TEXTURE]; - // Панель настройки текстур: - LabelTxW.Caption := _lc[I_LAB_TEX_WIDTH]; - LabelTxH.Caption := _lc[I_LAB_TEX_HEIGHT]; - cbPreview.Caption := _lc[I_CTRL_PREVIEW]; - bbAddTexture.Hint := _lc[I_BTN_TEXTURE_ADD]; - bbRemoveTexture.Hint := _lc[I_BTN_TEXTURE_DELETE]; - bClearTexture.Hint := _lc[I_BTN_TEXTURE_EMPTY]; - - // Вкладка "Предметы": - tsItems.Caption := _lc[I_CTRL_ITEMS]; - lbItemList.Hint := _lc[I_CTRL_LIST_ITEM]; - cbOnlyDM.Caption := _lc[I_CTRL_ITEM_DM]; - cbFall.Caption := _lc[I_CTRL_ITEM_FALLS]; - - // Вкладка "Монстры": - tsMonsters.Caption := _lc[I_CTRL_MONSTERS]; - lbMonsterList.Hint := _lc[I_CTRL_LIST_MONSTER]; - rbMonsterLeft.Caption := _lc[I_CTRL_LEFT]; - rbMonsterRight.Caption := _lc[I_CTRL_RIGHT]; - - // Вкладка "Области": - tsAreas.Caption := _lc[I_CTRL_AREAS]; - lbAreasList.Hint := _lc[I_CTRL_LIST_AREA]; - rbAreaLeft.Caption := _lc[I_CTRL_LEFT]; - rbAreaRight.Caption := _lc[I_CTRL_RIGHT]; - - // Вкладка "Триггеры": - tsTriggers.Caption := _lc[I_CTRL_TRIGGERS]; - lbTriggersList.Hint := _lc[I_CTRL_LIST_TRIGGER]; - clbActivationType.Hint := _lc[I_CTRL_LIST_ACTIVE]; - clbKeys.Hint := _lc[I_CTRL_LIST_KEYS]; + + // Apple menu: + miAppleAbout.Caption := MsgMenuAppleAbout; + miApplePref.Caption := MsgMenuApplePref; + // File menu: + miMenuFile.Caption := MsgMenuFile; + miNewMap.Caption := MsgMenuFileNew; + miOpenMap.Caption := MsgMenuFileOpen; + miMacRecentSubMenu.Caption := MsgMenuFileRecentMac; + miMacRecentClear.Caption := MsgMenuFileRecentClearMac; + miSaveMap.Caption := MsgMenuFileSave; + miSaveMapAs.Caption := MsgMenuFileSaveAs; + miOpenWadMap.Caption := MsgMenuFileOpenWad; + miReopenMap.Caption := MsgMenuFileReopen; + miSaveMiniMap.Caption := MsgMenuFileSaveMini; + miDeleteMap.Caption := MsgMenuFileDelete; + miPackMap.Caption := MsgMenuFilePackMap; + miWinRecent.Caption := MsgMenuFileRecentWin; + miExit.Caption := MsgMenuFileExitWin; + // Edit menu: + miMenuEdit.Caption := MsgMenuEdit; + miUndo.Caption := MsgMenuEditUndo; + miCopy.Caption := MsgMenuEditCopy; + miCut.Caption := MsgMenuEditCut; + miPaste.Caption := MsgMenuEditPaste; + miSelectAll.Caption := MsgMenuEditSelectAll; + miSnapToGrid.Caption := MsgMenuEditSnapGrid; + miSwitchGrid.Caption := MsgMenuEditStepGrid; + miToFore.Caption := MsgMenuEditToFore; + miToBack.Caption := MsgMenuEditToBack; + miMapOptions.Caption := MsgMenuEditMapProps; + miOptions.Caption := MsgMenuEditPrefWin; + // View menu: + miMenuView.Caption := MsgMenuView; + miLayers.Caption := MsgMenuViewLayers; + miLayer1.Caption := MsgMenuLayerBack; + miLayer2.Caption := MsgMenuLayerWall; + miLayer3.Caption := MsgMenuLayerFore; + miLayer4.Caption := MsgMenuLayerStair; + miLayer5.Caption := MsgMenuLayerWater; + miLayer6.Caption := MsgMenuLayerItem; + miLayer7.Caption := MsgMenuLayerMonster; + miLayer8.Caption := MsgMenuLayerArea; + miLayer9.Caption := MsgMenuLayerTrigger; + miMiniMap.Caption := MsgMenuViewMinimap; + miShowEdges.Caption := MsgMenuViewBounds; + miMapPreview.Caption := MsgMenuViewPreview; + // Service menu: + miMenuService.Caption := MsgMenuServ; + miCheckMap.Caption := MsgMenuServTest; + miOptimmization.Caption := MsgMenuServOpt; + miTestMap.Caption := MsgMenuServLaunch; + // Window menu: + miMenuWindow.Caption := MsgMenuWindow; + miMacMinimize.Caption := MsgMenuWindowMinimize; + miMacZoom.Caption := MsgMenuWindowZoom; + // Help menu: + miMenuHelp.Caption := MsgMenuHelp; + miAbout.Caption := MsgMenuHelpAboutWin; + + // Toolbar: + tbNewMap.Hint := MsgMenuTbNew; + tbOpenMap.Hint := MsgMenuTbOpen; + tbSaveMap.Hint := MsgMenuTbSave; + tbOpenWadMap.Hint := MsgMenuTbOpenWad; + tbShowMap.Hint := MsgMenuTbMinimap; + tbShow.Hint := MsgMenuTbLayers; + miLayerP1.Caption := MsgMenuLayerBack; + miLayerP2.Caption := MsgMenuLayerWall; + miLayerP3.Caption := MsgMenuLayerFore; + miLayerP4.Caption := MsgMenuLayerStair; + miLayerP5.Caption := MsgMenuLayerWater; + miLayerP6.Caption := MsgMenuLayerItem; + miLayerP7.Caption := MsgMenuLayerMonster; + miLayerP8.Caption := MsgMenuLayerArea; + miLayerP9.Caption := MsgMenuLayerTrigger; + tbGridOn.Hint := MsgMenuTbGrid; + tbGrid.Hint := MsgMenuTbGridStep; + tbTestMap.Hint := MsgMenuTbLaunch; + + // Object property editor: + bApplyProperty.Caption := MsgBtnApplyProps; + vleObjectProperty.TitleCaptions[0] := MsgCtrlPropKey; + vleObjectProperty.TitleCaptions[1] := MsgCtrlPropValue; + + // Panels Tab: + tsPanels.Caption := MsgCtrlPanels; + lbPanelType.Hint := MsgPropPanelType; + lbTextureList.Hint := MsgCtrlListTexture; + LabelTxW.Caption := MsgLabTexWidth; + LabelTxH.Caption := MsgLabTexHeight; + cbPreview.Caption := MsgCtrlPreview; + bbAddTexture.Hint := MsgBtnTextureAdd; + bbRemoveTexture.Hint := MsgBtnTextureDelete; + bClearTexture.Hint := MsgBtnTextureEmpty; + + // Items Tab: + tsItems.Caption := MsgCtrlItems; + lbItemList.Hint := MsgCtrlListItem; + cbOnlyDM.Caption := MsgCtrlItemDm; + cbFall.Caption := MsgCtrlItemFalls; + + // Monters Tab: + tsMonsters.Caption := MsgCtrlMonsters; + lbMonsterList.Hint := MsgCtrlListMonster; + rbMonsterLeft.Caption := MsgCtrlLeft; + rbMonsterRight.Caption := MsgCtrlRight; + + // Areas Tab: + tsAreas.Caption := MsgCtrlAreas; + lbAreasList.Hint := MsgCtrlListArea; + rbAreaLeft.Caption := MsgCtrlLeft; + rbAreaRight.Caption := MsgCtrlRight; + + // Triggers Tab: + tsTriggers.Caption := MsgCtrlTriggers; + lbTriggersList.Hint := MsgCtrlListTrigger; + clbActivationType.Hint := MsgCtrlListActive; + clbKeys.Hint := MsgCtrlListKeys; end; // Форма "О программе": with AboutForm do begin - Caption := _lc[I_CAP_ABOUT]; - LabelTitle.Caption := _lc[I_EDITOR_TITLE]; - LabelVer.Caption := _lc[I_LAB_ABOUT_VER]; - LabelAuthor.Caption := _lc[I_LAB_ABOUT_AUTHOR]; - LabelAuthor2.Caption := _lc[I_LAB_ABOUT_AUTHOR_2]; - LabelMail.Caption := _lc[I_LAB_ABOUT_MAIL]; - LabelMail2.Caption := _lc[I_LAB_ABOUT_MAIL_2]; - LabelSite.Caption := _lc[I_LAB_ABOUT_SITE]; - LabelHttp.Caption := _lc[I_LAB_ABOUT_HTTP]; + Caption := MsgCapAbout; + LabelTitle.Caption := MsgEditorTitle; + LabelVer.Caption := MsgLabAboutVer; + LabelAuthor.Caption := MsgLabAboutAuthor; + LabelAuthor2.Caption := MsgLabAboutAuthor2; + LabelMail.Caption := MsgLabAboutMail; + LabelMail2.Caption := MsgLabAboutMail2; + LabelSite.Caption := MsgLabAboutSite; + LabelHttp.Caption := MsgLabAboutHttp; end; // Форма "Тип активации": with ActivationTypeForm do begin - Caption := _lc[I_CAP_ACT]; - cbPlayerCollide.Caption := _lc[I_CTRL_ACT_PLAYER_CLOSE]; - cbMonsterCollide.Caption := _lc[I_CTRL_ACT_MONSTER_CLOSE]; - cbPlayerPress.Caption := _lc[I_CTRL_ACT_PLAYER_PRESS]; - cbMonsterPress.Caption := _lc[I_CTRL_ACT_MONSTER_PRESS]; - cbShot.Caption := _lc[I_CTRL_ACT_SHOT]; - cbNoMonster.Caption := _lc[I_CTRL_ACT_NO_MONSTER]; - bOK.Caption := _lc[I_BTN_OK]; + Caption := MsgCapAct; + cbPlayerCollide.Caption := MsgCtrlActPlayerClose; + cbMonsterCollide.Caption := MsgCtrlActMonsterClose; + cbPlayerPress.Caption := MsgCtrlActPlayerPress; + cbMonsterPress.Caption := MsgCtrlActMonsterPress; + cbShot.Caption := MsgCtrlActShot; + cbNoMonster.Caption := MsgCtrlActNoMonster; + bOK.Caption := MsgBtnOk; end; // Форма "Выбор текстуры для неба": with AddSkyForm do begin - Caption := _lc[I_CAP_ADD_SKY]; - LabelWADs.Caption := _lc[I_LAB_ADD_WADS]; - LabelSections.Caption := _lc[I_LAB_ADD_SECTIONS]; - bOK.Caption := _lc[I_BTN_OK]; - bCancel.Caption := _lc[I_BTN_CANCEL]; + Caption := MsgCapAddSky; + LabelWADs.Caption := MsgLabAddWads; + LabelSections.Caption := MsgLabAddSections; + bOK.Caption := MsgBtnOk; + bCancel.Caption := MsgBtnCancel; end; // Форма "Выбор звука или музыки": with AddSoundForm do begin - Caption := _lc[I_CAP_ADD_SOUND]; - LabelWADs.Caption := _lc[I_LAB_ADD_WADS]; - LabelSections.Caption := _lc[I_LAB_ADD_SECTIONS]; - bOK.Caption := _lc[I_BTN_OK]; - bCancel.Caption := _lc[I_BTN_CANCEL]; - bEmpty.Caption := _lc[I_BTN_NO_SOUND]; + Caption := MsgCapAddSound; + LabelWADs.Caption := MsgLabAddWads; + LabelSections.Caption := MsgLabAddSections; + bOK.Caption := MsgBtnOk; + bCancel.Caption := MsgBtnCancel; + bEmpty.Caption := MsgBtnNoSound; end; // Форма "Выбор текстуры": with AddTextureForm do begin - Caption := _lc[I_CAP_ADD_TEXTURE]; - LabelWADs.Caption := _lc[I_LAB_ADD_WADS]; - LabelSections.Caption := _lc[I_LAB_ADD_SECTIONS]; - bAddTexture.Caption := _lc[I_BTN_ADD]; - bClose.Caption := _lc[I_BTN_CLOSE]; - bAddClose.Caption := _lc[I_BTN_ADD_CLOSE]; + Caption := MsgCapAddTexture; + LabelWADs.Caption := MsgLabAddWads; + LabelSections.Caption := MsgLabAddSections; + bAddTexture.Caption := MsgBtnAdd; + bClose.Caption := MsgBtnClose; + bAddClose.Caption := MsgBtnAddClose; end; // Форма "Выбор типа монстра" / "Выбор типа предмета": - ChooseTypeForm.bOK.Caption := _lc[I_BTN_OK]; + ChooseTypeForm.bOK.Caption := MsgBtnOk; // Форма "Ключи": with KeysForm do begin - Caption := _lc[I_CAP_KEYS]; - cbRedKey.Caption := _lc[I_CTRL_KEYS_RED]; - cbGreenKey.Caption := _lc[I_CTRL_KEYS_GREEN]; - cbBlueKey.Caption := _lc[I_CTRL_KEYS_BLUE]; - cbRedTeam.Caption := _lc[I_CTRL_KEYS_TEAM_RED]; - cbBlueTeam.Caption := _lc[I_CTRL_KEYS_TEAM_BLUE]; - bOK.Caption := _lc[I_BTN_OK]; + Caption := MsgCapKeys; + cbRedKey.Caption := MsgCtrlKeysRed; + cbGreenKey.Caption := MsgCtrlKeysGreen; + cbBlueKey.Caption := MsgCtrlKeysBlue; + cbRedTeam.Caption := MsgCtrlKeysTeamRed; + cbBlueTeam.Caption := MsgCtrlKeysTeamBlue; + bOK.Caption := MsgBtnOk; end; // Форма "Проверка карты": with MapCheckForm do begin - Caption := _lc[I_CAP_TEST]; - bCheckMap.Caption := _lc[I_BTN_TEST_AGAIN]; - bClose.Caption := _lc[I_BTN_CLOSE]; + Caption := MsgCapTest; + bCheckMap.Caption := MsgBtnTestAgain; + bClose.Caption := MsgBtnClose; end; // Форма "Оптимизация карты": with MapOptimizationForm do begin - Caption := _lc[I_CAP_OPT]; + Caption := MsgCapOpt; // Выбор оптимизации: - GroupBoxOpt.Caption := _lc[I_CTRL_OPT_GB]; - rbTexturesOptimization.Caption := _lc[I_CTRL_OPT_TEXTURE]; - rbPanelsOptimization.Caption := _lc[I_CTRL_OPT_PANEL]; + GroupBoxOpt.Caption := MsgCtrlOptGb; + rbTexturesOptimization.Caption := MsgCtrlOptTexture; + rbPanelsOptimization.Caption := MsgCtrlOptPanel; // Оптимизация текстур: - bBeginTextureOptimization.Caption := _lc[I_BTN_START]; + bBeginTextureOptimization.Caption := MsgBtnStart; // Оптимизация панелей: - cbOptimizeWalls.Caption := _lc[I_CTRL_OPT_WALL]; - cbOptimizeForeGround.Caption := _lc[I_CTRL_OPT_FORE]; - cbOptimizeBackGround.Caption := _lc[I_CTRL_OPT_BACK]; - cbOptimizeSteps.Caption := _lc[I_CTRL_OPT_STAIR]; - cbOptimizeWater.Caption := _lc[I_CTRL_OPT_WATER]; - cbOptimizeAcid1.Caption := _lc[I_CTRL_OPT_ACID1]; - cbOptimizeAcid2.Caption := _lc[I_CTRL_OPT_ACID2]; - cbOptimizeLift.Caption := _lc[I_CTRL_OPT_LIFT]; - cbOptimizeBlockMon.Caption := _lc[I_CTRL_OPT_BLOCKMON]; - bBeginPanelsOptimization.Caption := _lc[I_BTN_START]; + cbOptimizeWalls.Caption := MsgCtrlOptWall; + cbOptimizeForeGround.Caption := MsgCtrlOptFore; + cbOptimizeBackGround.Caption := MsgCtrlOptBack; + cbOptimizeSteps.Caption := MsgCtrlOptStair; + cbOptimizeWater.Caption := MsgCtrlOptWater; + cbOptimizeAcid1.Caption := MsgCtrlOptAcid1; + cbOptimizeAcid2.Caption := MsgCtrlOptAcid2; + cbOptimizeLift.Caption := MsgCtrlOptLift; + cbOptimizeBlockMon.Caption := MsgCtrlOptBlockmon; + bBeginPanelsOptimization.Caption := MsgBtnStart; end; // Форма "Параметры карты": with MapOptionsForm do begin - Caption := _lc[I_CAP_SETS]; + Caption := MsgCapSets; // Основные параметры: - LabelName.Caption := _lc[I_LAB_SETS_NAME]; - LabelDesc.Caption := _lc[I_LAB_SETS_DESC]; - LabelAuthor.Caption := _lc[I_LAB_SETS_AUTHOR]; - LabelBack.Caption := _lc[I_LAB_SETS_BACK]; - LabelMusic.Caption := _lc[I_LAB_SETS_MUSIC]; + LabelName.Caption := MsgLabSetsName; + LabelDesc.Caption := MsgLabSetsDesc; + LabelAuthor.Caption := MsgLabSetsAuthor; + LabelBack.Caption := MsgLabSetsBack; + LabelMusic.Caption := MsgLabSetsMusic; // Статистика: - GBStats.Caption := _lc[I_CTRL_SETS_STATS]; - LabelTexs.Caption := _lc[I_LAB_SETS_TEXTURES]; - LabelPanels.Caption := _lc[I_LAB_SETS_PANELS]; - LabelItems.Caption := _lc[I_LAB_SETS_ITEMS]; - LabelMonsters.Caption := _lc[I_LAB_SETS_MONSTERS]; - LabelAreas.Caption := _lc[I_LAB_SETS_AREAS]; - LabelTriggers.Caption := _lc[I_LAB_SETS_TRIGGERS]; + GBStats.Caption := MsgCtrlSetsStats; + LabelTexs.Caption := MsgLabSetsTextures; + LabelPanels.Caption := MsgLabSetsPanels; + LabelItems.Caption := MsgLabSetsItems; + LabelMonsters.Caption := MsgLabSetsMonsters; + LabelAreas.Caption := MsgLabSetsAreas; + LabelTriggers.Caption := MsgLabSetsTriggers; // Размеры: - GBSizes.Caption := _lc[I_CTRL_SETS_SIZES]; - LabelWidth.Caption := _lc[I_LAB_SETS_WIDTH]; - LabelHeight.Caption := _lc[I_LAB_SETS_HEIGHT]; - LabelCurSize.Caption := _lc[I_LAB_SETS_SIZES]; - LabelMapMove.Caption := _lc[I_LAB_SETS_MAPMOVE]; - cbSnapping.Caption := _lc[I_LAB_SETS_SNAPPING]; + GBSizes.Caption := MsgCtrlSetsSizes; + LabelWidth.Caption := MsgLabSetsWidth; + LabelHeight.Caption := MsgLabSetsHeight; + LabelCurSize.Caption := MsgLabSetsSizes; + LabelMapMove.Caption := MsgLabSetsMapmove; + cbSnapping.Caption := MsgLabSetsSnapping; // Кнопки: - bOK.Caption := _lc[I_BTN_OK]; - bCancel.Caption := _lc[I_BTN_CANCEL]; - end; - -// Форма "Настройки теста карты": - with MapTestForm do - begin - Caption := _lc[I_CAP_LAUNCH]; - bOK.Caption := _lc[I_BTN_OK]; - bCancel.Caption := _lc[I_BTN_CANCEL]; - // Режим игры: - rbDM.Caption := _lc[I_CTRL_LAUNCH_DM]; - rbTDM.Caption := _lc[I_CTRL_LAUNCH_TDM]; - rbCTF.Caption := _lc[I_CTRL_LAUNCH_CTF]; - rbCOOP.Caption := _lc[I_CTRL_LAUNCH_COOP]; - // Опции: - cbTwoPlayers.Caption := _lc[I_CTRL_LAUNCH_2P]; - cbTeamDamage.Caption := _lc[I_CTRL_LAUNCH_FF]; - cbAllowExit.Caption := _lc[I_CTRL_LAUNCH_EXIT]; - cbWeaponStay.Caption := _lc[I_CTRL_LAUNCH_WEAPONS]; - cbMonstersDM.Caption := _lc[I_CTRL_LAUNCH_MONSTERS]; - cbMapOnce.Caption := _lc[I_CTRL_LAUNCH_CLOSE]; - LabelTime.Caption := _lc[I_LAB_LAUNCH_TIME]; - LabelSecs.Caption := _lc[I_LAB_LAUNCH_SECS]; - LabelScore.Caption := _lc[I_LAB_LAUNCH_SCORE]; - // Путь: - LabelPath.Caption := _lc[I_LAB_LAUNCH_PATH]; - FindD2dDialog.Title := _lc[I_CTRL_LAUNCH_OPEN]; + bOK.Caption := MsgBtnOk; + bCancel.Caption := MsgBtnCancel; end; -// Форма "Настройки редактора": +// Form preferences: with OptionsForm do begin - Caption := _lc[I_CAP_ES]; - bOK.Caption := _lc[I_BTN_OK]; - bCancel.Caption := _lc[I_BTN_CANCEL]; - // Настройки: - cbShowDots.Caption := _lc[I_CTRL_ES_GRID]; - cbShowTexture.Caption := _lc[I_CTRL_ES_TEXTURE]; - cbShowSize.Caption := _lc[I_CTRL_ES_PANEL_SIZE]; - cbCheckerboard.Caption := _lc[I_CTRL_ES_CHECKERBOARD]; - LabelGrid.Caption := _lc[I_LAB_ES_GRID]; - LabelGridCol.Caption := _lc[I_LAB_ES_GRID_COLOR]; - LabelGridSize.Caption := _lc[I_LAB_ES_GRID_SIZE]; - LabelBack.Caption := _lc[I_LAB_ES_BACK]; - LabelPreview.Caption := _lc[I_LAB_ES_PREVIEW]; - LabelMinimap.Caption := _lc[I_LAB_ES_MINIMAP]; - LabelRecent.Caption := _lc[I_LAB_ES_RECENT]; - LabelLanguage.Caption := _lc[I_LAB_ES_LANGUAGE]; + Caption := MsgCapEs; + bOK.Caption := MsgBtnOk; + bCancel.Caption := MsgBtnCancel; + // TabGeneral: + TabGeneral.Caption := MsgCtrlEsGeneral; + cbShowDots.Caption := MsgCtrlEsGrid; + cbShowTexture.Caption := MsgCtrlEsTexture; + cbShowSize.Caption := MsgCtrlEsPanelSize; + cbCheckerboard.Caption := MsgCtrlEsCheckerboard; + LabelGrid.Caption := MsgLabEsGrid; + LabelGridCol.Caption := MsgLabEsGridColor; + LabelGridSize.Caption := MsgLabEsGridSize; + LabelBack.Caption := MsgLabEsBack; + LabelPreview.Caption := MsgLabEsPreview; + LabelMinimap.Caption := MsgLabEsMinimap; + LabelLanguage.Caption := MsgLabEsLanguage; + // TabFiles: + TabFiles.Caption := MsgCtrlEsFiles; + LabelRecent.Caption := MsgLabEsRecent; + // TabTesting: + TabTesting.Caption := MsgCtrlEsTesting; + rbDM.Caption := MsgCtrlLaunchDm; + rbTDM.Caption := MsgCtrlLaunchTdm; + rbCTF.Caption := MsgCtrlLaunchCtf; + rbCOOP.Caption := MsgCtrlLaunchCoop; + cbTwoPlayers.Caption := MsgCtrlLaunch2p; + cbTeamDamage.Caption := MsgCtrlLaunchFf; + cbAllowExit.Caption := MsgCtrlLaunchExit; + cbWeaponStay.Caption := MsgCtrlLaunchWeapons; + cbMonstersDM.Caption := MsgCtrlLaunchMonsters; + cbMapOnce.Caption := MsgCtrlLaunchClose; + LabelTime.Caption := MsgLabLaunchTime; + LabelSecs.Caption := MsgLabLaunchSecs; + LabelScore.Caption := MsgLabLaunchScore; + {$IF DEFINED(DARWIN)} + LabelPath.Caption := MsgLabLaunchPathMac; + ExeEdit.DialogTitle := MsgCtrlLaunchOpen; + ExeEdit.Filter := MsgFileFilterExeMac; + {$ELSEIF DEFINED(WINDOWS)} + LabelPath.Caption := MsgLabLaunchPathWin; + ExeEdit.DialogTitle := MsgCtrlLaunchOpen; + ExeEdit.Filter := MsgFileFilterExeWin; + {$ELSE} + LabelPath.Caption := MsgLabLaunchPathUnix; + ExeEdit.DialogTitle := MsgCtrlLaunchOpen; + ExeEdit.Filter := MsgFileFilterExeUnix; + {$ENDIF} + LabelArgs.Caption := MsgLabLaunchArgs; end; // Форма "Упаковать карту": with PackMapForm do begin - Caption := _lc[I_CAP_PACK]; - bPack.Caption := _lc[I_BTN_PACK]; - LabelSaveTo.Caption := _lc[I_LAB_PACK_SAVE_TO]; - LabelMapName.Caption := _lc[I_LAB_PACK_MAP_NAME]; + Caption := MsgCapPack; + bPack.Caption := MsgBtnPack; + LabelSaveTo.Caption := MsgLabPackSaveTo; + LabelMapName.Caption := MsgLabPackMapName; // Что упаковывать: - cbTextrures.Caption := _lc[I_CTRL_PACK_TEXTURES]; - LabelTextures.Caption := _lc[I_LAB_PACK_TEXTURES]; - cbSky.Caption := _lc[I_CTRL_PACK_SKY]; - LabelSky.Caption := _lc[I_LAB_PACK_SKY]; - cbMusic.Caption := _lc[I_CTRL_PACK_MUSIC]; - LabelMusic.Caption := _lc[I_LAB_PACK_MUSIC]; - cbAdd.Caption := _lc[I_CTRL_PACK_ADD]; - cbNonStandart.Caption := _lc[I_CTRL_PACK_NON_STD]; + cbTextrures.Caption := MsgCtrlPackTextures; + LabelTextures.Caption := MsgLabPackTextures; + cbSky.Caption := MsgCtrlPackSky; + LabelSky.Caption := MsgLabPackSky; + cbMusic.Caption := MsgCtrlPackMusic; + LabelMusic.Caption := MsgLabPackMusic; + cbAdd.Caption := MsgCtrlPackAdd; + cbNonStandart.Caption := MsgCtrlPackNonStd; end; // Форма "Сохранить карту": with SaveMapForm do begin - Caption := _lc[I_CAP_SAVE]; - bOK.Caption := _lc[I_BTN_OK]; - bCancel.Caption := _lc[I_BTN_CANCEL]; + Caption := MsgCapSave; + bOK.Caption := MsgBtnOk; + bCancel.Caption := MsgBtnCancel; end; // Форма "Сохранить мини-карту": with SaveMiniMapForm do begin - Caption := _lc[I_CAP_MINI]; - LabelScale.Caption := _lc[I_LAB_MINI_SCALE]; - bSave.Caption := _lc[I_BTN_SAVE]; - bClose.Caption := _lc[I_BTN_CLOSE]; + Caption := MsgCapMini; + LabelScale.Caption := MsgLabMiniScale; + bSave.Caption := MsgBtnSave; + bClose.Caption := MsgBtnClose; end; // Форма "Выбор карты": with SelectMapForm do begin - Caption := _lc[I_CAP_SELECT]; - bOK.Caption := _lc[I_BTN_OK]; - bCancel.Caption := _lc[I_BTN_CANCEL]; + Caption := MsgCapSelect; + bOK.Caption := MsgBtnOk; + bCancel.Caption := MsgBtnCancel; end; // Заголовок приложения: - Application.Title := _lc[I_EDITOR_TITLE]; + Application.Title := MsgEditorTitle; end; -procedure g_Language_Load(fileName: String); -var - F: TextFile; - key, value: String; - i: TStrings_Locale; - k: Integer; - ok: Boolean; +type + TResArg = record + ini: TIniFile; + ignored: TStringList; + end; + PResArg = ^TResArg; +function gResourceItarator (name, value: AnsiString; hash: LongInt; arg: Pointer): AnsiString; + var res: PResArg; orig: AnsiString; begin -// Значения по-умолчанию: - for i := Low(TStrings_Locale) to High(TStrings_Locale) do - _lc[i] := g_lang_default[i][LANGUAGE_ENGLISH_N]; - - if FileExists(fileName) then + res := PResArg(arg); + orig := res.ini.ReadString('resourcestring', name + '$', ''); + if (orig = '') or (orig = value) then + begin + if res.ini.ValueExists('resourcestring', name) then + begin + result := res.ini.ReadString('resourcestring', name, ''); + end + else begin - AssignFile(F, fileName); - ReSet(F); - k := 0; + result := value; + if res.ignored.IndexOf(Copy(name, 1, Pos('.', name) - 1)) < 0 then + e_WriteLog(' Seems that key ' + name + ' not translated', MSG_NOTIFY); + end; + end + else + begin + e_WriteLog(' Original resource string for ' + name + ' do not match, translation are outdated?', MSG_WARNING); + e_WriteLog(' [' + value + '] -> [' + orig + ']', MSG_WARNING); + result := value; + end; +end; - // Читаем файл: - while not EoF(F) do +procedure gSetLanguageFormStream (const lang: AnsiString; stream: TStream; out ok: Boolean); + var res: TResArg; +begin + ok := False; + try + res.ini := TIniFile.Create(stream, [ifoStripComments, ifoStripQuotes, ifoEscapeLineFeeds]); + except + res.ini := nil; + end; + if res.ini <> nil then + begin + try + ok := res.ini.SectionExists('resourcestring'); + if ok then begin - // Читаем строку: - ReadLn(F, key); - key := Trim(key); - - // Строка - ключ перевода: - if (key <> '') and - (key[1] = '[') and - (Pos(']', key) > 2) then - begin - key := UpperCase(Copy(key, 2, Pos(']', key)-2)); - - // Пропускаем пустые строки до строки - перевода: - value := ''; - while (not EoF(F)) and (value = '') do - begin - ReadLn(F, value); - value := Trim(value); - end; - - // Есть строка - перевод: - if value <> '' then - begin - // Ищем индекс ключа перевода: - ok := False; - i := TStrings_Locale(k); - - // От текущего к первому: - while i > Low(TStrings_Locale) do - begin - if g_lang_default[i][1] = key then - begin - _lc[i] := value; - ok := True; - Break; - end; - - Dec(i); - end; - - // Первый: - if not ok then - begin - i := Low(TStrings_Locale); - - if (g_lang_default[i][1] = key) then - begin - _lc[i] := value; - ok := True; - end; - end; - - // От следующего за текущим до последнего: - if not ok then - begin - i := TStrings_Locale(k); - - while i < High(TStrings_Locale) do - begin - Inc(i); - - if g_lang_default[i][1] = key then - begin - _lc[i] := value; - Break; - end; - end; - end; - end; - - Inc(k); - end; + res.ignored := TStringList.Create; + res.ignored.CaseSensitive := False; + res.ini.ReadSection('ignore', res.ignored); + res.ignored.Sort; + SetResourceStrings(gResourceItarator, @res); + res.ignored.Free(); end; + finally + res.ini.Free(); + end; + end; + if not ok then e_WriteLog('Translation file for ' + lang + ' are invalid ', MSG_FATALERROR); +end; - CloseFile(F); - end - else - e_WriteLog('Language file "'+fileName+'" not found!', MSG_WARNING); +procedure gSetLanguageFromFile (const lang: AnsiString; out ok: Boolean); + const langfilename = 'editor'; + var stream: TFileStream; name: AnsiString; +begin + name := LangDir + DirectorySeparator + langfilename + '.' + lang + '.lng'; + try + stream := TFileStream.Create(name, fmOpenRead); + try + gSetLanguageFormStream(lang, stream, ok); + finally + stream.Free(); + end; + except on E: EFOpenError do + ok := False; + end; +end; - SetupArrays(); - SetupCaptions(); - RemoveSelectFromObjects(); +procedure gSetLanguage (const lang: AnsiString; out ok: Boolean); +begin + gSetLanguageFromFile(lang, ok); end; -procedure g_Language_Set(lang: String); -var - i: TStrings_Locale; - n: Byte; +function g_Language_GetList (): TStringList; + const langfilename = 'editor'; + var list: TStringList; info: TSearchRec; +begin + list := TStringList.Create; + list.Duplicates := dupIgnore; + list.Add(InSourceLanguage); + if FindFirst(LangDir + DirectorySeparator + langfilename + '.*.lng', faReadOnly, info) = 0 then + begin + repeat + list.Add(Copy(ExtractFileNameWithoutExt(info.Name), Length(langfilename) + 2)); + until FindNext(info) <> 0; + FindClose(info); + end; + list.Sort; + result := list; +end; +procedure g_Language_Set(lang: String); + var syslang, fallbacklang: String; ok: Boolean; begin - if lang = LANGUAGE_ENGLISH then - n := LANGUAGE_ENGLISH_N - else - n := LANGUAGE_RUSSIAN_N; + ResetResourceTables; - for i := Low(TStrings_Locale) to High(TStrings_Locale) do + if lang = '' then begin - _lc[i] := g_lang_default[i][n]; - // have to cache a CP1251 version for GL text - _glc[i] := utf8to1251(g_lang_default[i][n]); + GetLanguageIDs(syslang, fallbacklang); // TODO: remove dependency on gettext + e_WriteLog('g_Language_Set: try strings "' + syslang + '" (system)', MSG_NOTIFY); + gSetLanguage(syslang, ok); + if not ok then + begin + e_WriteLog('g_Language_Set: try strings "' + fallbacklang + '" (fallback)', MSG_NOTIFY); + gSetLanguage(syslang, ok); + end; + end + else + begin + e_WriteLog('g_Language_Set: try strings "' + lang + '" (user specified)', MSG_NOTIFY); + gSetLanguage(lang, ok); end; + if not ok then e_WriteLog('g_Language_Set: use default strings "' + InSourceLanguage + '" (in-source)', MSG_NOTIFY); SetupArrays(); SetupCaptions(); RemoveSelectFromObjects(); end; -procedure g_Language_Dump(fileName: String); -var - F: TextFile; - i: TStrings_Locale; - -begin - AssignFile(F, fileName); - ReWrite(F); - - for i := Low(TStrings_Locale) to High(TStrings_Locale) do - WriteLn(F, _lc[i]); - - CloseFile(F); -end; - End.