(* Copyright (C) DooM 2D:Forever Developers * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . *) {$INCLUDE ../shared/a_modes.inc} unit g_language; interface uses MAPDEF; type TStrings_Locale = ( I_CONSOLE_EXEC, I_CONSOLE_DUMPED, I_CONSOLE_ERROR_CALL, I_CONSOLE_ERROR_READ, I_CONSOLE_ERROR_WRITE, I_CONSOLE_SCREENSHOT, I_CONSOLE_UNKNOWN, I_CONSOLE_WELCOME, I_GAME_ERROR_GET_SPAWN, I_GAME_ERROR_CTF, I_GAME_ERROR_MAP_WAD, I_GAME_ERROR_MAP_RES, I_GAME_ERROR_MAP_LOAD, I_GAME_ERROR_MAP_SELECT, I_GAME_ERROR_PLAYER_CREATE, I_GAME_ERROR_TEXTURE_ANIM, I_GAME_ERROR_TEXTURE_SIMPLE, I_GAME_ERROR_MODEL_FALLBACK, I_GAME_ERROR_MODEL, I_GAME_ERROR_SKY, I_GAME_ERROR_MUSIC, I_GAME_ERROR_SAVE, I_GAME_ERROR_LOAD, I_GAME_ERROR_SOUND, I_GAME_ERROR_FRAMES, I_GAME_ERROR_TR_SOUND, I_GAME_ERROR_SWITCH_TEXTURE, I_GAME_PLAYER_NAME, I_GAME_GAME_TIME, I_GAME_PING, I_GAME_PING_MS, I_GAME_PING_HUD, I_GAME_FRAGS, I_GAME_DEATHS, I_GAME_DM, I_GAME_CTF, I_GAME_TDM, I_GAME_COOP, I_GAME_LMS, I_GAME_TLMS, I_GAME_SURV, I_GAME_FRAG_LIMIT, I_GAME_SCORE_LIMIT, I_GAME_TIME_LIMIT, I_GAME_TEAM_SCORE_RED, I_GAME_TEAM_SCORE_BLUE, I_GAME_TEAM_RED, I_GAME_TEAM_BLUE, I_GAME_WIN_RED, I_GAME_WIN_BLUE, I_GAME_WIN_DRAW, I_GAME_MONSTERS, I_GAME_SECRETS, I_GAME_MONSTERS_TOTAL, I_GAME_SECRETS_TOTAL, I_GAME_CHEAT_GODMODE, I_GAME_CHEAT_WEAPONS, I_GAME_CHEAT_HEALTH, I_GAME_CHEAT_DEATH, I_GAME_CHEAT_DOORS, I_GAME_CHEAT_NEXTMAP, I_GAME_CHEAT_CHANGEMAP, I_GAME_CHEAT_FLY, I_GAME_CHEAT_JUMPS, I_GAME_CHEAT_SPEED, I_GAME_CHEAT_SUIT, I_GAME_CHEAT_AIR, I_GAME_CHEAT_BERSERK, I_GAME_CHEAT_JETPACK, I_GAME_CHEAT_NOCLIP, I_GAME_CHEAT_NOTARGET, I_GAME_CHEAT_NORELOAD, I_GAME_CHEAT_AIMLINE, I_GAME_CHEAT_AUTOMAP, I_GAME_WEAPON0, I_GAME_WEAPON1, I_GAME_WEAPON2, I_GAME_WEAPON3, I_GAME_WEAPON4, I_GAME_WEAPON5, I_GAME_WEAPON6, I_GAME_WEAPON7, I_GAME_WEAPON8, I_GAME_WEAPON9, I_GAME_WEAPON10, I_MENU_START_GAME, I_MENU_MAIN_MENU, I_MENU_NEW_GAME, I_MENU_MULTIPLAYER, I_MENU_OPTIONS, I_MENU_AUTHORS, I_MENU_EXIT, I_MENU_1_PLAYER, I_MENU_2_PLAYERS, I_MENU_CUSTOM_GAME, I_MENU_CAMPAIGN, I_MENU_START_SERVER, I_MENU_START_CLIENT, I_MENU_CLIENT_CONNECT, I_MENU_SELECT_MAP, I_MENU_VIDEO_OPTIONS, I_MENU_SOUND_OPTIONS, I_MENU_SAVED_OPTIONS, I_MENU_DEFAULT_OPTIONS, I_MENU_GAME_OPTIONS, I_MENU_CONTROLS_OPTIONS, I_MENU_PLAYER_OPTIONS, I_MENU_LANGUAGE_OPTIONS, I_MENU_CHANGE_PLAYERS, I_MENU_LOAD_GAME, I_MENU_SAVE_GAME, I_MENU_END_GAME, I_MENU_RESTART, I_MENU_SET_GAME, I_MENU_JOIN_RED, I_MENU_JOIN_BLUE, I_MENU_JOIN_GAME, I_MENU_ADD_PLAYER_2, I_MENU_REM_PLAYER_2, I_MENU_SPECTATE, I_MENU_STATISTICS, I_MENU_MAP, I_MENU_GAME_TYPE, I_MENU_GAME_TYPE_DM, I_MENU_GAME_TYPE_CTF, I_MENU_GAME_TYPE_TDM, I_MENU_GAME_TYPE_COOP, I_MENU_GAME_TYPE_SINGLE, I_MENU_TIME_LIMIT, I_MENU_GOAL_LIMIT, I_MENU_MAX_LIVES, I_MENU_TEAM_DAMAGE, I_MENU_ENABLE_EXITS, I_MENU_WEAPONS_STAY, I_MENU_ENABLE_MONSTERS, I_MENU_BOTS_VS, I_MENU_BOTS_VS_PLAYERS, I_MENU_BOTS_VS_MONSTERS, I_MENU_BOTS_VS_ALL, I_MENU_MAP_WAD, I_MENU_MAP_RESOURCE, I_MENU_MAP_NAME, I_MENU_MAP_AUTHOR, I_MENU_MAP_DESCRIPTION, I_MENU_MAP_SIZE, I_MENU_PLAYERS, I_MENU_PLAYERS_ONE, I_MENU_PLAYERS_TWO, I_MENU_SERVER_PLAYERS, I_MENU_INTER_MISSION_FAIL, I_MENU_INTER_ROUND_OVER, I_MENU_INTER_LEVEL_COMPLETE, I_MENU_INTER_TIME, I_MENU_INTER_KILLS, I_MENU_INTER_KPM, I_MENU_INTER_SECRETS, I_MENU_INTER_NOTICE_TAB, I_MENU_INTER_NOTICE_MAP, I_MENU_INTER_NOTICE_SPACE, I_MENU_INTER_NOTICE_TIME, I_MENU_LOADING, I_MENU_PLAYER_1, I_MENU_PLAYER_2, I_MENU_PLAYER_1_KBD, I_MENU_PLAYER_2_KBD, I_MENU_PLAYER_1_ALT, I_MENU_PLAYER_2_ALT, I_MENU_PLAYER_1_WEAPONS, I_MENU_PLAYER_2_WEAPONS, I_MENU_CONTROL_JOYSTICKS, I_MENU_CONTROL_DEADZONE, I_MENU_CONTROL_GLOBAL, I_MENU_CONTROL_SCREENSHOT, I_MENU_CONTROL_STAT, I_MENU_CONTROL_CHAT, I_MENU_CONTROL_TEAMCHAT, I_MENU_CONTROL_LEFT, I_MENU_CONTROL_RIGHT, I_MENU_CONTROL_UP, I_MENU_CONTROL_DOWN, I_MENU_CONTROL_JUMP, I_MENU_CONTROL_FIRE, I_MENU_CONTROL_USE, I_MENU_CONTROL_NEXT_WEAPON, I_MENU_CONTROL_PREV_WEAPON, I_MENU_CONTROL_STRAFE, I_MENU_COUNT_NONE, I_MENU_COUNT_SMALL, I_MENU_COUNT_NORMAL, I_MENU_COUNT_BIG, I_MENU_COUNT_VERYBIG, I_MENU_GAME_BLOOD_COUNT, I_MENU_GAME_MAX_GIBS, I_MENU_GAME_MAX_CORPSES, I_MENU_GAME_GIBS_COUNT, I_MENU_GAME_MAX_SHELLS, I_MENU_GAME_BLOOD_TYPE, I_MENU_GAME_BLOOD_TYPE_SIMPLE, I_MENU_GAME_BLOOD_TYPE_ADV, I_MENU_GAME_CORPSE_TYPE, I_MENU_GAME_CORPSE_TYPE_SIMPLE, I_MENU_GAME_CORPSE_TYPE_ADV, I_MENU_GAME_GIBS_TYPE, I_MENU_GAME_GIBS_TYPE_SIMPLE, I_MENU_GAME_GIBS_TYPE_ADV, I_MENU_GAME_PARTICLES_COUNT, I_MENU_GAME_SCREEN_FLASH, I_MENU_GAME_BACKGROUND, I_MENU_GAME_MESSAGES, I_MENU_GAME_REVERT_PLAYERS, I_MENU_GAME_CHAT_BUBBLE, I_MENU_GAME_CHAT_TYPE_NONE, I_MENU_GAME_CHAT_TYPE_SIMPLE, I_MENU_GAME_CHAT_TYPE_ADV, I_MENU_GAME_CHAT_TYPE_COLOR, I_MENU_GAME_CHAT_TYPE_TEXTURE, I_MENU_VIDEO_RESOLUTION, I_MENU_VIDEO_BPP, I_MENU_VIDEO_VSYNC, I_MENU_VIDEO_FILTER_SKY, I_MENU_VIDEO_LEGACY_COMPATIBLE, I_MENU_VIDEO_NEED_RESTART, I_MENU_RESOLUTION_SELECT, I_MENU_RESOLUTION_CURRENT, I_MENU_RESOLUTION_LIST, I_MENU_RESOLUTION_FULLSCREEN, I_MENU_RESOLUTION_APPLY, I_MENU_SOUND_MUSIC_LEVEL, I_MENU_SOUND_SOUND_LEVEL, I_MENU_SOUND_MAX_SIM_SOUNDS, I_MENU_SOUND_INACTIVE_SOUNDS, I_MENU_SOUND_INACTIVE_SOUNDS_ON, I_MENU_SOUND_INACTIVE_SOUNDS_OFF, I_MENU_SOUND_ANNOUNCE, I_MENU_SOUND_COMPAT, I_MENU_ANNOUNCE_NONE, I_MENU_ANNOUNCE_ME, I_MENU_ANNOUNCE_MEPLUS, I_MENU_ANNOUNCE_ALL, I_MENU_COMPAT_DF, I_MENU_COMPAT_DOOM2, I_MENU_PLAYER_NAME, I_MENU_PLAYER_TEAM, I_MENU_PLAYER_TEAM_RED, I_MENU_PLAYER_TEAM_BLUE, I_MENU_PLAYER_MODEL, I_MENU_PLAYER_RED, I_MENU_PLAYER_GREEN, I_MENU_PLAYER_BLUE, I_MENU_MODEL_INFO, I_MENU_MODEL_ANIMATION, I_MENU_MODEL_CHANGE_WEAPON, I_MENU_MODEL_ROTATE, I_MENU_MODEL_NAME, I_MENU_MODEL_AUTHOR, I_MENU_MODEL_COMMENT, I_MENU_MODEL_OPTIONS, I_MENU_MODEL_WEAPON, I_MENU_LANGUAGE_RUSSIAN, I_MENU_LANGUAGE_ENGLISH, I_MENU_PAUSE, I_MENU_YES, I_MENU_NO, I_MENU_OK, I_MENU_FINISH, I_MENU_END_GAME_PROMT, I_MENU_RESTART_GAME_PROMT, I_MENU_EXIT_PROMT, I_MENU_SET_DEFAULT_PROMT, I_MENU_LOAD_SAVED_PROMT, I_MENU_ENTERPASSWORD, I_NET_SERVER, I_NET_CLIENT, I_NET_ADDRESS, I_NET_PORT, I_NET_SERVER_NAME, I_NET_SERVER_PASSWORD, I_NET_MAX_CLIENTS, I_NET_USE_MASTER, I_NET_MSG, I_NET_MSG_ERROR, I_NET_MSG_FERROR, I_NET_MSG_HOST, I_NET_MSG_HOST_DISCALL, I_NET_MSG_HOST_DIE, I_NET_MSG_HOST_CONN, I_NET_MSG_HOST_REJECT, I_NET_MSG_HOST_ADD, I_NET_MSG_HOST_DISC, I_NET_MSG_CLIENT_CONN, I_NET_MSG_CLIENT_DONE, I_NET_MSG_CLIENT_DISC, I_NET_MSG_KICK, I_NET_MAP_DL, I_NET_WAD_DL, I_NET_ERR_ENET, I_NET_ERR_HOST, I_NET_ERR_INGAME, I_NET_ERR_CLIENT, I_NET_ERR_CONN, I_NET_ERR_TIMEOUT, I_NET_ERR_HASH, I_NET_ERR_NAME404, I_NET_DISC_NONE, I_NET_DISC_PROTOCOL, I_NET_DISC_VERSION, I_NET_DISC_FULL, I_NET_DISC_KICK, I_NET_DISC_DOWN, I_NET_DISC_PASSWORD, I_NET_DISC_TEMPBAN, I_NET_DISC_BAN, I_NET_SLIST, I_NET_SLIST_NOSERVERS, I_NET_SLIST_SERVERS, I_NET_SLIST_HELP, I_NET_SLIST_WAIT, I_NET_SLIST_PING_MS, I_NET_SLIST_NO_ACCESS, I_NET_SLIST_FETCH, I_NET_SLIST_RETRIEVED, I_NET_SLIST_CONN, I_NET_SLIST_DISC, I_NET_SLIST_LOST, I_NET_SLIST_ERROR, I_NET_RCON_PWD_VALID, I_NET_RCON_PWD_INVALID, I_NET_RCON_NOAUTH, I_PLAYER_DIED, I_PLAYER_KILL, I_PLAYER_KILL_EXTRAHARD_1, I_PLAYER_KILL_EXTRAHARD_2, I_PLAYER_KILL_ACID, I_PLAYER_KILL_TRAP, I_PLAYER_KILL_FALL, I_PLAYER_KILL_SELF, I_PLAYER_KILL_WATER, I_PLAYER_KILL_2X, I_PLAYER_KILL_3X, I_PLAYER_KILL_4X, I_PLAYER_KILL_MX, I_PLAYER_JOIN, I_PLAYER_LEAVE, I_PLAYER_KICK, I_PLAYER_BAN, I_PLAYER_NAME, I_PLAYER_CHTEAM_RED, I_PLAYER_CHTEAM_BLUE, I_PLAYER_SPECT, I_PLAYER_SPECT1, I_PLAYER_SPECT1S, I_PLAYER_SPECT2, I_PLAYER_SPECT3, I_PLAYER_SPECT4, I_PLAYER_FLAG_GET, I_PLAYER_FLAG_RETURN, I_PLAYER_FLAG_CAPTURE, I_PLAYER_FLAG_DROP, I_PLAYER_FLAG_RED, I_PLAYER_FLAG_BLUE, I_PLAYER_SCORE_RED, I_PLAYER_SCORE_BLUE, I_PLAYER_SCORE_TO_RED, I_PLAYER_SCORE_TO_BLUE, I_PLAYER_SCORE_ADD_OWN, I_PLAYER_SCORE_SUB_OWN, I_PLAYER_SCORE_ADD_ENEMY, I_PLAYER_SCORE_SUB_ENEMY, I_PLAYER_SCORE_WIN_OWN, I_PLAYER_SCORE_WIN_ENEMY, I_PLAYER_SCORE_ADD_TEAM, I_PLAYER_SCORE_SUB_TEAM, I_MESSAGE_FLAG_GET, I_MESSAGE_FLAG_RETURN, I_MESSAGE_FLAG_CAPTURE, I_MESSAGE_FLAG_DROP, I_MESSAGE_LMS_LOSE, I_MESSAGE_LMS_WIN, I_MESSAGE_LMS_START, I_MESSAGE_TLMS_WIN, I_MESSAGE_LMS_SURVIVOR, I_MESSAGE_SCORE_ADD, I_MESSAGE_SCORE_SUB, I_MESSAGE_VOTE_INPROGRESS, I_MESSAGE_VOTE_STARTED, I_MESSAGE_VOTE_PASSED, I_MESSAGE_VOTE_FAILED, I_MESSAGE_VOTE_VOTE, I_MESSAGE_VOTE_REVOKED, I_KEY_UP, I_KEY_DOWN, I_KEY_LEFT, I_KEY_RIGHT, I_MONSTER_DEMON, I_MONSTER_IMP, I_MONSTER_ZOMBIE, I_MONSTER_SERGEANT, I_MONSTER_CYBER, I_MONSTER_CGUN, I_MONSTER_BARON, I_MONSTER_KNIGHT, I_MONSTER_CACODEMON, I_MONSTER_SOUL, I_MONSTER_PAIN, I_MONSTER_MASTERMIND, I_MONSTER_SPIDER, I_MONSTER_MANCUBUS, I_MONSTER_REVENANT, I_MONSTER_ARCHVILE, I_MONSTER_FISH, I_MONSTER_BARREL, I_MONSTER_ROBOT, I_MONSTER_PRIKOLIST, I_LOAD_MUSIC, I_LOAD_MODELS, I_LOAD_MENUS, I_LOAD_CONSOLE, I_LOAD_ITEMS_DATA, I_LOAD_WEAPONS_DATA, I_LOAD_GAME_DATA, I_LOAD_COLLIDE_MAP, I_LOAD_DOOR_MAP, I_LOAD_LIFT_MAP, I_LOAD_WATER_MAP, I_LOAD_WAD_FILE, I_LOAD_MAP, I_LOAD_TEXTURES, I_LOAD_TRIGGERS, I_LOAD_PANELS, I_LOAD_TRIGGERS_TABLE, I_LOAD_LINK_TRIGGERS, I_LOAD_CREATE_TRIGGERS, I_LOAD_ITEMS, I_LOAD_CREATE_ITEMS, I_LOAD_AREAS, I_LOAD_CREATE_AREAS, I_LOAD_MONSTERS, I_LOAD_CREATE_MONSTERS, I_LOAD_MAP_HEADER, I_LOAD_SKY, I_LOAD_MONSTER_TEXTURES, I_LOAD_MONSTER_SOUNDS, I_LOAD_SAVE_FILE, I_LOAD_MAP_STATE, I_LOAD_ITEMS_STATE, I_LOAD_TRIGGERS_STATE, I_LOAD_WEAPONS_STATE, I_LOAD_MONSTERS_STATE, I_LOAD_CONNECT, I_LOAD_SEND_INFO, I_LOAD_WAIT_INFO, I_LOAD_DL_RES, I_CREDITS_CAP_1, I_CREDITS_CAP_2, I_CREDITS_A_1, I_CREDITS_A_1_1, I_CREDITS_A_2, I_CREDITS_A_2_1, I_CREDITS_A_2_2, I_CREDITS_A_3, I_CREDITS_A_3_1, I_CREDITS_A_4, I_CREDITS_A_4_1, I_CREDITS_CAP_3, I_CREDITS_CLO_1, I_CREDITS_CLO_2, I_CREDITS_CLO_3, I_CREDITS_CLO_4, I_MSG_SHOW_FPS_ON, I_MSG_SHOW_FPS_OFF, I_MSG_GAMEMODE_CURRENT, I_MSG_GAMEMODE_CHANGE, I_MSG_FRIENDLY_FIRE_ON, I_MSG_FRIENDLY_FIRE_OFF, I_MSG_WEAPONSTAY_ON, I_MSG_WEAPONSTAY_OFF, I_MSG_ALLOWEXIT_ON, I_MSG_ALLOWEXIT_OFF, I_MSG_ALLOWMON_ON, I_MSG_ALLOWMON_OFF, I_MSG_BOTSVSPLAYERS_ON, I_MSG_BOTSVSPLAYERS_OFF, I_MSG_BOTSVSMONSTERS_ON, I_MSG_BOTSVSMONSTERS_OFF, I_MSG_TIME_ON, I_MSG_TIME_OFF, I_MSG_SCORE_ON, I_MSG_SCORE_OFF, I_MSG_STATS_ON, I_MSG_STATS_OFF, I_MSG_KILL_MSGS_ON, I_MSG_KILL_MSGS_OFF, I_MSG_LIVES_ON, I_MSG_LIVES_OFF, I_MSG_SPECT_HUD_ON, I_MSG_SPECT_HUD_OFF, I_MSG_PING_ON, I_MSG_PING_OFF, I_MSG_NO_WAD, I_MSG_NO_MAPS, I_MSG_NO_MAP, I_MSG_NO_MONSTER, I_MSG_SCORE_LIMIT, I_MSG_TIME_LIMIT, I_MSG_LIVES, I_MSG_WARMUP, I_MSG_WARMUP_START, I_MSG_NEXTMAP_SET, I_MSG_NEXTMAP_UNSET, I_MSG_ONMAPCHANGE, I_MSG_NOT_GAME, I_MSG_NOT_DEBUG, I_MSG_GM_UNAVAIL, I_MSG_SERVERONLY, I_MSG_NOCLIENTS, I_MSG_UNBAN_OK, I_MSG_UNBAN_FAIL, I_TEXTURE_ENDPIC, I_VERSION, I_FATAL_ERROR, I_SIMPLE_ERROR, I_SYSTEM_ERROR_UNKNOWN, I_SYSTEM_ERROR_MSG, I_LAST ); const LANGUAGE_RUSSIAN = 'Russian'; LANGUAGE_ENGLISH = 'English'; LANGUAGE_RUSSIAN_N = 3; LANGUAGE_ENGLISH_N = 2; var _lc: Array [TStrings_Locale] of String; KilledByMonster: Array [MONSTER_DEMON..MONSTER_MAN] of String; CheatEng: Array [I_GAME_CHEAT_GODMODE..I_GAME_CHEAT_AUTOMAP] of String; CheatRus: Array [I_GAME_CHEAT_GODMODE..I_GAME_CHEAT_AUTOMAP] of String; procedure g_Language_Load(fileName: String); procedure g_Language_Set(lang: String); procedure g_Language_Dump(fileName: String); implementation uses SysUtils, g_gui, g_basic, e_log, e_input; const g_lang_default: Array [TStrings_Locale] of Array [1..3] of String = ( ('CONSOLE EXEC', 'Executing script: "%s"', 'Выполняется скрипт: "%s"'), ('CONSOLE DUMPED', 'Saved to "%s"', 'Сохранено в "%s"'), ('CONSOLE ERROR CALL', 'Console loop detected. Execution terminated.', 'Обнаружен бесконечный цикл. Скрипт остановлен.'), ('CONSOLE ERROR READ', 'Error reading file "%s"', 'Ошибка при чтении файла "%s"'), ('CONSOLE ERROR WRITE', 'Error writing file "%s"', 'Ошибка при записи в файл "%s"'), ('CONSOLE SCREENSHOT', 'Screenshot saved to "%s"', 'Скриншот сохранён в "%s"'), ('CONSOLE UNKNOWN', 'Unknown command "%s"', 'Неизвестная команда "%s"'), ('CONSOLE WELCOME', 'Welcome to Doom 2D: Forever %s', 'Добро пожаловать в Doom 2D: Forever %s'), ('GAME ERROR GET SPAWN', 'Can''t find a spawn point!', 'Не удалось получить точку возрождения!'), ('GAME ERROR CTF', 'There are no flags on this map!', 'На карте нет флагов!'), ('GAME ERROR MAP WAD', 'Can''t read map WAD "%s"', 'Не удалось загрузить WAD карты: "%s"'), ('GAME ERROR MAP RES', 'Can''t load map resource "%s"', 'Не удалось загрузить ресурс карты из WAD: "%s"'), ('GAME ERROR MAP LOAD', 'Can''t load map "%s"', 'Не удалось загрузить карту "%s"'), ('GAME ERROR MAP SELECT', 'Map reading error!', 'Карта не читается!'), ('GAME ERROR PLAYER CREATE', 'Can''t create player #%d', 'Не удалось создать Игрока #%d'), ('GAME ERROR TEXTURE ANIM', 'Can''t create animated texture "%s"', 'Не получилось создать анимированную текстуру "%s"'), ('GAME ERROR TEXTURE SIMPLE', 'Can''t create ordinary Texture "%s"', 'Не получилось создать обычную текстуру "%s"'), ('GAME ERROR MODEL FALLBACK', 'Model "%s" not found, using default model instead', 'Модель "%s" не найдена, используется модель по умолчанию'), ('GAME ERROR MODEL', 'Model "%s" not found', 'Модель "%s" не найдена'), ('GAME ERROR SKY', 'Can''t load sky "%s"', 'Не удалось загрузить небо "%s"'), ('GAME ERROR MUSIC', 'Can''t load music "%s"', 'Не удалось загрузить музыку "%s"'), ('GAME ERROR SAVE', 'Saving state error!', 'Ошибка во время сохранения!'), ('GAME ERROR LOAD', 'Loading state error!', 'Ошибка во время загрузки!'), ('GAME ERROR SOUND', 'Can''t load sound "%s"', 'Не удалось загрузить звук "%s"'), ('GAME ERROR FRAMES', 'Can''t load animation''s frame list "%s"', 'Не удалось загрузить список кадров анимации: "%s"'), ('GAME ERROR TR SOUND', 'Can''t load sound "%s:%s" for trigger', 'Не удалось загрузить звук "%s:%s" для триггера'), ('GAME ERROR SWITCH TEXTURE', 'Texture switching error: no animation', 'Ошибка при переключении текстуры: нет анимации'), ('GAME PLAYER NAME', 'Player name', 'Игрок'), ('GAME GAME TIME', 'Game time:', 'Время игры:'), ('GAME PING', 'Ping (Loss)', 'Пинг (Потери)'), ('GAME PING MS', '%d ms (%d%%)', '%d мс (%d%%)'), ('GAME PING HUD', 'Ping: ', 'Пинг: '), ('GAME FRAGS', 'Frags', 'Фрагов'), ('GAME DEATHS', 'Deaths', 'Смертей'), ('GAME DM', 'Deathmatch', 'Deathmatch'), ('GAME CTF', 'Capture the Flag', 'Capture the Flag'), ('GAME TDM', 'Team Deathmatch', 'Team Deathmatch'), ('GAME COOP', 'Cooperative', 'Cooperative'), ('GAME LMS', 'Last Man Standing', 'Last Man Standing'), ('GAME TLMS', 'Team LMS', 'Team LMS'), ('GAME SURV', 'Survival', 'Survival'), ('GAME FRAG LIMIT', 'Frag Limit: %d', 'ЛИМИТ ФРАГОВ: %d'), ('GAME SCORE LIMIT', 'Score Limit: %d', 'ЛИМИТ ОЧКОВ: %d'), ('GAME TIME LIMIT', 'Time Limit: %d:%.2d:%.2d', 'ЛИМИТ ВРЕМЕНИ: %d:%.2d:%.2d'), ('GAME TEAM SCORE RED', 'Red Team (%d)', 'КРАСНАЯ КОМАНДА (%d)'), ('GAME TEAM SCORE BLUE', 'Blue Team (%d)', 'СИНЯЯ КОМАНДА (%d)'), ('GAME TEAM RED', 'Red', 'КРАСНАЯ'), ('GAME TEAM BLUE', 'Blue', 'СИНЯЯ'), ('GAME WIN RED', 'Red Team Wins!', 'ПОБЕДИЛА КРАСНАЯ КОМАНДА!'), ('GAME WIN BLUE', 'Blue Team Wins!', 'ПОБЕДИЛА СИНЯЯ КОМАНДА!'), ('GAME WIN DRAW', 'Draw!', 'НИЧЬЯ!'), ('GAME MONSTERS', 'Monsters killed:', 'Монстров убито:'), ('GAME SECRETS', 'Secrets found:', 'Секретов найдено:'), ('GAME MONSTERS TOTAL', 'Total monsters killed:', 'Всего монстров убито:'), ('GAME SECRETS TOTAL', 'Total secrets found:', 'Всего секретов найдено:'), ('GAME CHEAT GODMODE', 'MACLEOD', 'ГОРЕЦ'), ('GAME CHEAT WEAPONS', 'RAMBO', 'RAMBO'), ('GAME CHEAT HEALTH', 'TANK', 'TANK'), ('GAME CHEAT DEATH', 'IDDQD', 'IDDQD'), ('GAME CHEAT DOORS', 'SESAME', 'СИМСИМ'), ('GAME CHEAT NEXTMAP', 'GOODBYE', 'GOODBYE'), ('GAME CHEAT CHANGEMAP', 'GOTO', 'ПОШЕЛНА'), ('GAME CHEAT FLY', 'WHITEEAGLE', 'БЕЛЫЙОРЕЛ'), ('GAME CHEAT JUMPS', 'BULLFROG', 'BULLFROG'), ('GAME CHEAT SPEED', 'FORMULA1', 'FORMULA1'), ('GAME CHEAT SUIT', 'CONDOM', 'CONDOM'), ('GAME CHEAT AIR', 'AQUAMAN', 'ЧЕРНОМОР'), ('GAME CHEAT BERSERK', 'PURELOVE', 'PURELOVE'), ('GAME CHEAT JETPACK', 'LUCYINTHESKY', 'ЯСВОБОДЕН'), ('GAME CHEAT NOCLIP', 'CASPER', 'CASPER'), ('GAME CHEAT NOTARGET', 'JAMESBOND', 'ШТИРЛИЦ'), ('GAME CHEAT NORELOAD', 'INFERNO', 'INFERNO'), ('GAME CHEAT AIMLINE', 'SNIPER', 'СНАЙПЕР'), ('GAME CHEAT AUTOMAP', 'ID2DT', 'ID2DT'), ('GAME WEAPON0', 'Fist', 'Кастет'), ('GAME WEAPON1', 'Chainsaw', 'Бензопила'), ('GAME WEAPON2', 'Pistol', 'Пистолет'), ('GAME WEAPON3', 'Shotgun', 'Дробовик'), ('GAME WEAPON4', 'Super Shotgun', 'Двустволка'), ('GAME WEAPON5', 'Chaingun', 'Пулемёт'), ('GAME WEAPON6', 'Rocket Launcher', 'Ракетница'), ('GAME WEAPON7', 'Plasma Gun', 'Плазмаган'), ('GAME WEAPON8', 'BFG9000', 'BFG9000'), ('GAME WEAPON9', 'Super Chaingun', 'Суперпулемёт'), ('GAME WEAPON10', 'Flamethrower', 'Огнемёт'), ('MENU START GAME', 'Start Game', 'НАЧАТЬ ИГРУ'), ('MENU MAIN MENU', 'Menu', 'МЕНЮ'), ('MENU NEW GAME', 'New Game', 'НОВАЯ ИГРА'), ('MENU MULTIPLAYER', 'Multiplayer', 'МУЛЬТИПЛЕЕР'), ('MENU OPTIONS', 'Options', 'НАСТРОЙКИ'), ('MENU AUTHORS', 'Credits', 'АВТОРЫ'), ('MENU EXIT', 'Exit', 'ВЫХОД'), ('MENU 1 PLAYER', 'Single player', 'ОДИН ИГРОК'), ('MENU 2 PLAYERS', 'Two players', 'ДВА ИГРОКА'), ('MENU CUSTOM GAME', 'Custom game', 'СВОЯ ИГРА'), ('MENU CAMPAIGN', 'Campaign select', 'ВЫБОР КАМПАНИИ'), ('MENU START SERVER', 'Start server', 'СОЗДАТЬ СЕРВЕР'), ('MENU START CLIENT', 'Join game', 'ВСТУПИТЬ В ИГРУ'), ('MENU CLIENT CONNECT', 'Connect', 'Присоединиться'), ('MENU SELECT MAP', 'Map', 'КАРТА'), ('MENU VIDEO OPTIONS', 'Video', 'ВИДЕО'), ('MENU SOUND OPTIONS', 'Sound', 'ЗВУК'), ('MENU SAVED OPTIONS', 'Saved options', 'СОХРАНЁННЫЕ'), ('MENU DEFAULT OPTIONS', 'Default options', 'СТАНДАРТНЫЕ'), ('MENU GAME OPTIONS', 'Gameplay', 'ИГРА'), ('MENU CONTROLS OPTIONS', 'Controls', 'УПРАВЛЕНИЕ'), ('MENU PLAYER OPTIONS', 'Players', 'ИГРОКИ'), ('MENU LANGUAGE OPTIONS', 'Language', 'ЯЗЫК'), ('MENU CHANGE PLAYERS', 'Change players', 'СМЕНА СОСТАВА'), ('MENU LOAD GAME', 'Load game', 'СТАРАЯ ИГРА'), ('MENU SAVE GAME', 'Save game', 'СОХРАНИТЬ ИГРУ'), ('MENU END GAME', 'End game', 'ЗАКОНЧИТЬ ИГРУ'), ('MENU RESTART', 'Restart game', 'НАЧАТЬ ЗАНОВО'), ('MENU SET GAME', 'Setup game', 'РАЗНОЕ'), ('MENU JOIN RED', 'Join Red', 'ВОЙТИ ЗА КРАСНЫХ'), ('MENU JOIN BLUE', 'Join Blue', 'ВОЙТИ ЗА СИНИХ'), ('MENU JOIN GAME', 'Join Game', 'ВОЙТИ В ИГРУ'), ('MENU ADD PLAYER 2', 'Add Player 2', 'ДОБАВИТЬ ВТОРОГО ИГРОКА'), ('MENU REM PLAYER 2', 'Remove Player 2', 'УБРАТЬ ВТОРОГО ИГРОКА'), ('MENU SPECTATE', 'Spectate', 'НАБЛЮДАТЬ'), ('MENU STATISTICS', 'Statistics', 'СТАТИСТИКА ИГРЫ'), ('MENU MAP', 'Map:', 'Карта:'), ('MENU GAME TYPE', 'Game type:', 'Режим игры:'), ('MENU GAME TYPE DM', 'DM', 'DM'), ('MENU GAME TYPE CTF', 'CTF', 'CTF'), ('MENU GAME TYPE TDM', 'TDM', 'TDM'), ('MENU GAME TYPE COOP', 'COOP', 'COOP'), ('MENU GAME TYPE SINGLE', 'SINGLE', 'SINGLE'), ('MENU TIME LIMIT', 'Time Limit:', 'Лимит времени:'), ('MENU GOAL LIMIT', 'Score Limit:', 'Лимит очков:'), ('MENU MAX LIVES', 'Lives:', 'Жизни:'), ('MENU TEAM DAMAGE', 'Friendly Fire:', 'Урон своих:'), ('MENU ENABLE EXITS', 'Enable Exit:', 'Включить выход:'), ('MENU WEAPONS STAY', 'Weapons stay:', 'Оружие остаётся:'), ('MENU ENABLE MONSTERS', 'Enable monsters:', 'Монстры:'), ('MENU BOTS VS', 'Bots fight with:', 'Боты против:'), ('MENU BOTS VS PLAYERS', 'Players', 'Игроков'), ('MENU BOTS VS MONSTERS', 'Monsters', 'Монстров'), ('MENU BOTS VS ALL', 'Everybody', 'Всех'), ('MENU MAP WAD', 'Select WAD:', 'Выбор WAD''а:'), ('MENU MAP RESOURCE', 'Select Map:', 'Выбор карты:'), ('MENU MAP NAME', 'Name:', 'Название:'), ('MENU MAP AUTHOR', 'Author:', 'Автор:'), ('MENU MAP DESCRIPTION', 'Description:', 'Описание:'), ('MENU MAP SIZE', 'Size:', 'Размер:'), ('MENU PLAYERS', 'Players:', 'Число игроков:'), ('MENU PLAYERS ONE', 'One', 'Один'), ('MENU PLAYERS TWO', 'Two', 'Два'), ('MENU SERVER PLAYERS', 'Local Players:', 'Локальные игроки:'), ('MENU INTER MISSION FAIL', 'Mission Failed', 'МИССИЯ ПРОВАЛЕНА'), ('MENU INTER ROUND OVER', 'Round Over', 'РАУНД ОКОНЧЕН'), ('MENU INTER LEVEL COMPLETE', 'Level Complete', 'УРОВЕНЬ ПРОЙДЕН'), ('MENU INTER TIME', 'Time:', 'ВРЕМЯ:'), ('MENU INTER KILLS', 'Kills:', 'УБИЛ:'), ('MENU INTER KPM', 'Kills-per-minute:', 'УБИЙСТВ В МИНУТУ:'), ('MENU INTER SECRETS', 'Secrets found:', 'НАШЕЛ СЕКРЕТОВ:'), ('MENU INTER NOTICE TAB', 'Press [TAB] to view stats', 'Нажмите [TAB] для просмотра статистики'), ('MENU INTER NOTICE MAP', 'Please wait until map change', 'Подождите, пока сменится карта на сервере'), ('MENU INTER NOTICE SPACE', 'Press [SPACE] to continue', 'Нажмите [ПРОБЕЛ], чтобы продолжить'), ('MENU INTER NOTICE TIME', '%d seconds till the next round', 'Осталось %d секунд до следующего раунда'), ('MENU LOADING', 'Loading...', 'Загрузка...'), ('MENU PLAYER 1', 'Player 1', 'Первый игрок'), ('MENU PLAYER 2', 'Player 2', 'Второй игрок'), ('MENU PLAYER 1 KBD', 'Player 1 Keys', 'Первый игрок, клавиатура'), ('MENU PLAYER 2 KBD', 'Player 2 Keys', 'Второй игрок, клавиатура'), ('MENU PLAYER 1 ALT', 'Player 1 GAMEPAD', 'Первый игрок, GAMEPAD'), ('MENU PLAYER 2 ALT', 'Player 2 GAMEPAD', 'Второй игрок, GAMEPAD'), ('MENU PLAYER 1 WEAPONS', 'Player 1 Weapons', 'Первый игрок, оружие'), ('MENU PLAYER 2 WEAPONS', 'Player 2 Weapons', 'Второй игрок, оружие'), ('MENU CONTROL JOYSTICKS', 'Joystick Settings', 'Настройки джойстиков'), ('MENU CONTROL DEADZONE', 'Joystick %d Deadzone', 'Мертвая зона джойстика %d'), ('MENU CONTROL GLOBAL', 'Global Controls', 'ОБЩЕЕ УПРАВЛЕНИЕ'), ('MENU CONTROL SCREENSHOT', 'Screenshot:', 'Скриншот:'), ('MENU CONTROL STAT', 'Statistics:', 'Статистика:'), ('MENU CONTROL CHAT', 'Chat:', 'Чат:'), ('MENU CONTROL TEAMCHAT', 'Team chat:', 'Командный чат:'), ('MENU CONTROL LEFT', 'Left:', 'Влево:'), ('MENU CONTROL RIGHT', 'Right:', 'Вправо:'), ('MENU CONTROL UP', 'Up:', 'Вверх:'), ('MENU CONTROL DOWN', 'Down:', 'Вниз:'), ('MENU CONTROL JUMP', 'Jump:', 'Прыжок:'), ('MENU CONTROL FIRE', 'Fire:', 'Огонь:'), ('MENU CONTROL USE', 'Use:', 'Использовать:'), ('MENU CONTROL NEXT WEAPON', 'Next weapon:', 'След. оружие:'), ('MENU CONTROL PREV WEAPON', 'Prev weapon:', 'Пред. оружие:'), ('MENU CONTROL STRAFE', 'Strafe:', 'Стрэйф:'), ('MENU COUNT NONE', 'None', 'Нет'), ('MENU COUNT SMALL', 'Little bit', 'Мало'), ('MENU COUNT NORMAL', 'Normal', 'Средне'), ('MENU COUNT BIG', 'Lots', 'Много'), ('MENU COUNT VERYBIG', 'Lots and lots', 'Очень много'), ('MENU GAME BLOOD COUNT', 'Blood amount:', 'Количество крови:'), ('MENU GAME MAX GIBS', 'Gib limit:', 'Лимит кусков:'), ('MENU GAME MAX CORPSES', 'Corpse limit:', 'Лимит трупов:'), ('MENU GAME GIBS COUNT', 'Gibs count:', 'Кусков за раз:'), ('MENU GAME MAX SHELLS', 'Shells limit:', 'Лимит гильз:'), ('MENU GAME BLOOD TYPE', 'Blood type:', 'Тип крови:'), ('MENU GAME BLOOD TYPE SIMPLE', 'Simple', 'Простая'), ('MENU GAME BLOOD TYPE ADV', 'Dripping', 'Капающая'), ('MENU GAME CORPSE TYPE', 'Corpse type:', 'Тип трупов:'), ('MENU GAME CORPSE TYPE SIMPLE', 'Simple', 'Неподвижные'), ('MENU GAME CORPSE TYPE ADV', 'Interactive', 'С физикой'), ('MENU GAME GIBS TYPE', 'Gibs type:', 'Тип кусков:'), ('MENU GAME GIBS TYPE SIMPLE', 'Simple', 'Неподвижные'), ('MENU GAME GIBS TYPE ADV', 'Interactive', 'С физикой'), ('MENU GAME PARTICLES COUNT', 'Particle limit:', 'Лимит частиц:'), ('MENU GAME SCREEN FLASH', 'Screen flash:', 'Вспышки экрана:'), ('MENU GAME BACKGROUND', 'Draw background:', 'Рисовать фон:'), ('MENU GAME MESSAGES', 'Show messages:', 'Выводить сообщения:'), ('MENU GAME REVERT PLAYERS', 'Revert players:', 'Второй игрок сверху:'), ('MENU GAME CHAT BUBBLE', 'Chat bubbles:', 'Иконка чата:'), ('MENU GAME CHAT TYPE NONE', 'None', 'Нет'), ('MENU GAME CHAT TYPE SIMPLE', 'Simple', 'Простая'), ('MENU GAME CHAT TYPE ADV', 'Advanced', 'Продвинутая'), ('MENU GAME CHAT TYPE COLOR', 'Colored', 'Цветная'), ('MENU GAME CHAT TYPE TEXTURE', 'Textured', 'Текстура'), ('MENU VIDEO RESOLUTION', 'Set video mode', 'Установка видеорежима'), ('MENU VIDEO BPP', 'Color depth:', 'Глубина цвета:'), ('MENU VIDEO VSYNC', 'Vertical sync', 'Верт. синхронизация:'), ('MENU VIDEO FILTER SKY', 'Anisotropic sky', 'Фильтрация неба:'), ('MENU VIDEO LEGACY COMPATIBLE', 'Compatibility with NPOT textures:', 'Совместимость с NPOT-текстурами:'), ('MENU VIDEO NEED RESTART', 'Video settings will be changed after game restart.', 'Данные настройки видео вступят в силу после перезапуска игры.'), ('MENU RESOLUTION SELECT', 'SET VIDEO MODE', 'УСТАНОВКА ВИДЕОРЕЖИМА'), ('MENU RESOLUTION CURRENT', 'Current:', 'Текущий:'), ('MENU RESOLUTION LIST', 'New:', 'Новый:'), ('MENU RESOLUTION FULLSCREEN', 'Fullscreen:', 'Полный экран:'), ('MENU RESOLUTION APPLY', 'Apply', 'Применить'), ('MENU SOUND MUSIC LEVEL', 'Music volume:', 'Громкость музыки:'), ('MENU SOUND SOUND LEVEL', 'Sound volume:', 'Громкость звука:'), ('MENU SOUND MAX SIM SOUNDS', 'Similar Sound FX amount:', 'Кол-во одного звука:'), ('MENU SOUND INACTIVE SOUNDS', 'Window inactive:', 'Окно неактивно:'), ('MENU SOUND INACTIVE SOUNDS ON', 'Play sounds', 'Звуки есть'), ('MENU SOUND INACTIVE SOUNDS OFF', 'Mute sounds', 'Звуков нет'), ('MENU SOUND ANNOUNCE', 'Announcements:', 'Объявления:'), ('MENU SOUND COMPAT', 'Sound FX set:', 'Набор звуков:'), ('MENU ANNOUNCE NONE', 'None', 'Нет'), ('MENU ANNOUNCE ME', 'Only own announcers', 'Только мои'), ('MENU ANNOUNCE MEPLUS', 'Own + multikills', 'Мои + мультикиллы'), ('MENU ANNOUNCE ALL', 'All announcers', 'Все'), ('MENU COMPAT DF', 'Doom 2D', 'Doom 2D'), ('MENU COMPAT DOOM2', 'Doom II', 'Doom II'), ('MENU PLAYER NAME', 'Name:', 'Имя:'), ('MENU PLAYER TEAM', 'Team:', 'Команда:'), ('MENU PLAYER TEAM RED', 'Red', 'Красная'), ('MENU PLAYER TEAM BLUE', 'Blue', 'Синяя'), ('MENU PLAYER MODEL', 'Model:', 'Модель:'), ('MENU PLAYER RED', 'Red:', 'Красный:'), ('MENU PLAYER GREEN', 'Green:', 'Зеленый:'), ('MENU PLAYER BLUE', 'Blue:', 'Синий:'), ('MENU MODEL INFO', 'Model info', 'Информация о модели'), ('MENU MODEL ANIMATION', 'Change animation', 'Сменить анимацию'), ('MENU MODEL CHANGE WEAPON', 'Change weapon', 'Сменить оружие'), ('MENU MODEL ROTATE', 'Reflect model', 'Развернуть модель'), ('MENU MODEL NAME', 'Name:', 'Имя:'), ('MENU MODEL AUTHOR', 'Author:', 'Автор:'), ('MENU MODEL COMMENT', 'Description:', 'Комментарий:'), ('MENU MODEL OPTIONS', 'Model Options:', 'Опции модели:'), ('MENU MODEL WEAPON', 'Weapon:', 'Оружие:'), ('MENU LANGUAGE RUSSIAN', 'Русский', 'Русский'), ('MENU LANGUAGE ENGLISH', 'English', 'English'), ('MENU PAUSE', 'Pause', 'ПАУЗА'), ('MENU YES', 'Yes', 'Да'), ('MENU NO', 'No', 'Нет'), ('MENU OK', 'OK', 'OK'), ('MENU FINISH', 'Done', 'Готово'), ('MENU END GAME PROMT', 'Do you want to end the game?', 'Вы действительно хотите закончить игру?'), ('MENU RESTART GAME PROMT', 'Do you want to restart level?', 'Вы действительно хотите начать уровень заново?'), ('MENU EXIT PROMT', 'Chickening out already?', 'Вы действительно хотите выйти из Doom 2D: Forever?'), ('MENU SET DEFAULT PROMT', 'Load default settings?', 'Изменить все настройки на стандартные?'), ('MENU LOAD SAVED PROMT', 'Load saved settings?', 'Вернуть все настройки на сохранённые?'), ('MENU ENTER PASSWORD', 'This server requires a password to join.', 'Этот сервер требует пароль.'), ('NET SERVER', 'Server', 'Сервер'), ('NET CLIENT', 'Client', 'Клиент'), ('NET ADDRESS', 'Address:', 'Адрес:'), ('NET PORT', 'Port:', 'Порт:'), ('NET SERVER NAME', 'Server name:', 'Название:'), ('NET SERVER PASSWORD', 'Password:', 'Пароль:'), ('NET MAX CLIENTS', 'Player limit:', 'Лимит игроков:'), ('NET USE MASTER', 'Public server:', 'Публичный сервер:'), ('NET MSG', 'NET: ', 'NET: '), ('NET MSG ERROR', 'NET: ERROR: ', 'NET: ОШИБКА: '), ('NET MSG FERROR', 'NET: FATAL ERROR: ', 'NET: КРИТИЧЕСКАЯ ОШИБКА: '), ('NET MSG HOST', 'Starting server on the port %d...', 'Включаем сервер на порту %d...'), ('NET MSG HOST DISCALL', 'Disconnecting clients...', 'Отключаем игроков...'), ('NET MSG HOST DIE', 'Shutting down server...', 'Выключаем сервер...'), ('NET MSG HOST CONN', 'Somebody is trying to connect from %s:%d.', 'Попытка соединения с адреса %s:%d.'), ('NET MSG HOST REJECT', 'Connection rejected. Reason: ', 'В соединении отказано. Причина: '), ('NET MSG HOST ADD', 'Client #%d added. Awaiting info...', 'Добавлен клиент №%d. Ждем ответа...'), ('NET MSG HOST DISC', 'Client #%d disconnected.', 'Клиент №%d отключен.'), ('NET MSG CLIENT CONN', 'Trying to connect to %s:%d...', 'Пытаемся соединиться с %s:%d...'), ('NET MSG CLIENT DONE', 'Connected!', 'Соединение выполнено.'), ('NET MSG CLIENT DISC', 'Disconnected.', 'Отключение выполнено.'), ('NET MSG KICK', 'You were dropped from the game! Reason: ', 'Вас выбросило с сервера! Причина: '), ('NET MAP DL', 'Map %s not found. Downloading from the server...', 'Карта %s не найдена. Скачиваем с сервера...'), ('NET WAD DL', 'WAD %s not found. Downloading from the server...', 'WAD %s не найден. Скачиваем с сервера...'), ('NET ERR ENET', 'Failed to init ENet!', 'Не получилось подключить ENet!'), ('NET ERR HOST', 'Could not start server on port %d!', 'Не получилось включить сервер на порту %d!'), ('NET ERR INGAME', 'You are already in the net game!', 'Вы уже в сетевой игре!'), ('NET ERR CLIENT', 'Could not create client!', 'Не получилось создать клиент!'), ('NET ERR CONN', 'Connection failed!', 'Не вышло соединиться!'), ('NET ERR TIMEOUT', 'Connection timed out!', 'Сервер не отвечает!'), ('NET ERR HASH', 'Your WAD is different from server''s!', 'Ваш WAD отличается от серверного!'), ('NET ERR NAME404', 'Player or client %s not found!', 'Игрок или клиент %s не найден!'), ('NET DISC NONE', 'Server is down.', 'Сервер не отвечает.'), ('NET DISC PROTOCOL', 'Net protocol version mismatch.', 'Версии сетевых протоколов не совпадают.'), ('NET DISC VERSION', 'Game version mismatch.', 'Версия игры не совпадает с версией сервера.'), ('NET DISC FULL', 'Server is full.', 'Сервер полон.'), ('NET DISC KICK', 'Kicked by server admin.', 'Вы были отключены администратором.'), ('NET DISC DOWN', 'Server is shutting down.', 'Сервер выключается.'), ('NET DISC PASSWORD', 'Invalid password.', 'Неверный пароль.'), ('NET DISC TEMPBAN', 'You are banned until the round end.', 'Вы забанены до конца раунда.'), ('NET DISC BAN', 'You are banned. Contact the server administrator.', 'Вы забанены. Свяжитесь с администратором сервера.'), ('NET SLIST', 'Server list', 'Список серверов'), ('NET SLIST NOSERVERS', 'No active servers.', 'Нет активных серверов.'), ('NET SLIST SERVERS', ' server(s)', ' сервер(а, ов)'), ('NET SLIST HELP', '[ENTER] - join [SPACE] - refresh [ESC] - quit', '[ENTER] - присоединиться [SPACE] - обновить [ESC] - меню'), ('NET SLIST WAIT', 'Please wait...', 'Подождите...'), ('NET SLIST PING MS', ' ms', ' мс'), ('NET SLIST NO ACCESS', 'N/A', 'Н/Д'), ('NET SLIST FETCH', 'Fetching server list...', 'Получаем список серверов...'), ('NET SLIST RETRIEVED', '%d servers retrieved.', 'Получено серверов: %d'), ('NET SLIST CONN', 'Connected to masterserver.', 'Подключились к мастерсерверу.'), ('NET SLIST DISC', 'Disconnected from masterserver.', 'Отключились от мастерсервера.'), ('NET SLIST LOST', 'Lost connection with masterserver.', 'Соединение с мастерсервером потеряно.'), ('NET SLIST ERROR', 'Could not connect to masterserver.', 'Не удалось соединиться с мастерсервером.'), ('NET RCON VALID PWD', 'RCON password accepted. You can use RCON now.', 'Пароль принят. Теперь вы можете использовать RCON.'), ('NET RCON INVALID PWD', 'RCON password is invalid.', 'Неверный RCON пароль.'), ('NET RCON NOAUTH', 'You are not authorized to use RCON.', 'Вы не имеете права использовать RCON.'), ('PLAYER DIED', '*** %s died', '*** %s погиб'), ('PLAYER KILL', '*** %s was killed by %s', '*** %s был убит %s'), ('PLAYER KILL EXTRAHARD 1', '*** %s was fragged by %s', '*** %s был разорван на куски %s'), ('PLAYER KILL EXTRAHARD 2', '*** %s was murdered by %s', '*** %s был зверски убит %s'), ('PLAYER KILL ACID', '*** %s dissolved in acid', '*** %s утонул в кислоте'), ('PLAYER KILL TRAP', '*** %s got caught in a trap', '*** %s напоролся на ловушку'), ('PLAYER KILL FALL', '*** %s fell too far', '*** %s улетел'), ('PLAYER KILL SELF', '*** %s killed himself', '*** %s убил себя'), ('PLAYER KILL WATER', '*** %s drowned', '*** %s утонул'), ('PLAYER KILL 2X', '%s has a double kill!', '%s убил двоих одновременно!'), ('PLAYER KILL 3X', '%s has a triple kill!', '%s убил троих одновременно!'), ('PLAYER KILL 4X', '%s has a multi kill!', '%s убил кучу народу разом!'), ('PLAYER KILL MX', '%s has a m-m-m-monster kill!!!', '%s просто м-м-м-монстр-убийца!!!'), ('PLAYER JOIN', '%s joined the game.', '%s присоединился к игре.'), ('PLAYER LEAVE', '%s left the game.', '%s покинул игру.'), ('PLAYER KICK', '%s was kicked by admin.', '%s был отключен администратором.'), ('PLAYER BAN', '%s was banned by admin.', '%s был забанен администратором.'), ('PLAYER NAME', '%s is now known as %s.', '%s теперь известен как %s.'), ('PLAYER CHTEAM RED', '%s is now on Red.', '%s перешел в Красную команду.'), ('PLAYER CHTEAM BLUE', '%s is now on Blue.', '%s перешел в Синюю команду.'), ('PLAYER SPECT', 'Spectating', 'Наблюдение'), ('PLAYER SPECT1', '[USE] - spawn', '[ОТКРЫТЬ] - ожить'), ('PLAYER SPECT1S', '(next round)', '(в следующем раунде)'), ('PLAYER SPECT2', '[FIRE] - chase', '[ОГОНЬ] - следить'), ('PLAYER SPECT3', '[JUMP] - reset', '[ПРЫЖОК] - сброс'), ('PLAYER SPECT4', 'You can''t spawn until current round ends.', 'Вы не сможете возродиться до конца раунда.'), ('PLAYER FLAG GET', '*** %s stole the %s flag!', '*** %s стащил %s флаг!'), ('PLAYER FLAG RETURN', '*** %s returned the %s flag!', '*** %s вернул %s флаг!'), ('PLAYER FLAG CAPTURE', '*** %s captured the %s flag! (%s ms)', '*** %s принес %s флаг! (%s мс)'), ('PLAYER FLAG DROP', '*** %s dropped the %s flag!', '*** %s потерял %s флаг!'), ('PLAYER FLAG RED', 'red', 'красный'), ('PLAYER FLAG BLUE', 'blue', 'синий'), ('PLAYER SCORE RED', 'Red', 'Красная'), ('PLAYER SCORE BLUE', 'Blue', 'Синяя'), ('PLAYER SCORE TO RED', 'red', 'красной'), ('PLAYER SCORE TO BLUE', 'blue', 'синей'), ('PLAYER SCORE ADD OWN', '*** %s got %d points for %s team!', '*** %s заработал %d очков %s команде!'), ('PLAYER SCORE SUB OWN', '*** %s lost %d points of %s team...', '*** %s потерял %d очков %s команды...'), ('PLAYER SCORE ADD ENEMY', '*** %s gave %d points to %s team...', '*** %s отдал %d очков %s команде...'), ('PLAYER SCORE SUB ENEMY', '*** %s took %d points from %s team!', '*** %s отнял %d очков у %s команды!'), ('PLAYER SCORE WIN OWN', '*** %s helped to win %s team!', '*** %s помог победить %s команде!'), ('PLAYER SCORE WIN ENEMY', '*** %s gave victory to %s team...', '*** %s отдал победу %s команде...'), ('PLAYER SCORE ADD TEAM', '*** %s team got %d points!', '*** %s команда получает %d очков!'), ('PLAYER SCORE SUB TEAM', '*** %s team loses %d points...', '*** %s команда теряет %d очков...'), ('MESSAGE FLAG GET', '%s flag stolen', '%s ФЛАГ УКРАДЕН'), ('MESSAGE FLAG RETURN', '%s flag returned', '%s ФЛАГ ВОЗВРАЩЁН'), ('MESSAGE FLAG CAPTURE', '%s flag captured', '%s ФЛАГ ЗАХВАЧЕН'), ('MESSAGE FLAG DROP', '%s flag dropped', '%s ФЛАГ ПОТЕРЯН'), ('MESSAGE LMS LOSE', 'YOU''RE ALL LOSERS', 'ВСЕ ПРОИГРАЛИ'), ('MESSAGE LMS WIN', '%s WINS', 'ПОБЕДИТЕЛЬ - %s!'), ('MESSAGE LMS START', 'FIGHT!', 'ПОЕХАЛИ!'), ('MESSAGE TLMS WIN', '%s TEAM WINS', '%s КОМАНДА ПОБЕДИЛА!'), ('MESSAGE LMS SURVIVOR', 'YOU ARE THE LAST ONE ALIVE!', 'ВСЯ НАДЕЖДА ТОЛЬКО НА ТЕБЯ!'), ('MESSAGE SCORE ADD', '%s TEAM SCORES', '%s КОМАНДА ПОЛУЧИЛА ОЧКИ'), ('MESSAGE SCORE SUB', '%s TEAM LOST SCORES', '%s КОМАНДА ПОТЕРЯЛА ОЧКИ'), ('MESSAGE VOTE INPROGRESS', 'A vote is already in progress for "%s".', 'Уже идет голосование за команду "%s".'), ('MESSAGE VOTE STARTED', '%s called a vote for "%s".'#10'%d votes are required.', '%s начал голосование за команду "%s".'#10'Для выполнения команды требуется голосов: %d.'), ('MESSAGE VOTE PASSED', 'Vote passed. Executing "%s" in 5 seconds.', 'Голосование прошло успешно. Команда "%s" будет выполнена через 5 секунд.'), ('MESSAGE VOTE FAILED', 'Vote failed: not enough people voted.', 'Голосование провалилось: недостаточно голосов "за".'), ('MESSAGE VOTE VOTE', '%s votes "yes" (%d/%d votes total).', '%s голосует "за" (%d/%d голосов всего).'), ('MESSAGE VOTE REVOKED', '%s revokes his vote (%d/%d votes total).', '%s отозвал свой голос (%d/%d голосов всего).'), ('KEY UP', 'Up', 'Вверх'), ('KEY DOWN', 'Down', 'Вниз'), ('KEY LEFT', 'Left', 'Влево'), ('KEY RIGHT', 'Right', 'Вправо'), ('MONSTER DEMON', 'Pinky', 'Демоном'), ('MONSTER IMP', 'Imp', 'Бесом'), ('MONSTER ZOMBIE', 'Zombie', 'Зомби'), ('MONSTER SERGEANT', 'Shotgun Guy', 'Сержантом'), ('MONSTER CYBER', 'Cyberdemon', 'Кибердемоном'), ('MONSTER CGUN', 'Commando', 'Пулеметчиком'), ('MONSTER BARON', 'Hell Baron', 'Бароном ада'), ('MONSTER KNIGHT', 'Hell Knight', 'Рыцарем ада'), ('MONSTER CACODEMON', 'Cacodemon', 'Какодемоном'), ('MONSTER SOUL', 'Lost Soul', 'Огненным черепом'), ('MONSTER PAIN', 'Pain Elemental', 'Авиабазой'), ('MONSTER MASTERMIND', 'Spider Mastermind', 'Большим пауком'), ('MONSTER SPIDER', 'Arachnotron', 'Арахнотроном'), ('MONSTER MANCUBUS', 'Mancubus', 'Манкубусом'), ('MONSTER REVENANT', 'Revenant', 'Скелетом'), ('MONSTER ARCHVILE', 'Arch-Vile', 'Колдуном'), ('MONSTER FISH', 'Piranha', 'Рыбой'), ('MONSTER BARREL', 'Barrel explosion', 'взрывом Бочки'), ('MONSTER ROBOT', 'Robot', 'Роботом'), ('MONSTER PRIKOLIST', 'Prikolist', 'Приколистом'), ('LOAD MUSIC', 'Music', 'Музыка'), ('LOAD MODELS', 'Models', 'Модели'), ('LOAD MENUS', 'Menu sets', 'Меню'), ('LOAD CONSOLE', 'Console', 'Консоль'), ('LOAD ITEMS DATA', 'Items Data', 'Ресурсы предметов'), ('LOAD WEAPONS DATA', 'Weapons Data', 'Ресурсы оружия'), ('LOAD GAME DATA', 'Game Data', 'Ресурсы монстров и тд'), ('LOAD COLLIDE MAP', 'Collision Map', 'Карта столкновений'), ('LOAD DOOR MAP', 'Door Map', 'Карта дверей'), ('LOAD LIFT MAP', 'Streams Map', 'Карта потоков'), ('LOAD WATER MAP', 'Water Map', 'Карта воды'), ('LOAD WAD FILE', 'WAD File', 'WAD-файл'), ('LOAD MAP', 'Map', 'Карта'), ('LOAD TEXTURES', 'Textures', 'Текстуры'), ('LOAD TRIGGERS', 'Triggers', 'Триггеры'), ('LOAD PANELS', 'Panels', 'Панели'), ('LOAD TRIGGERS TABLE', 'Trigger table', 'Таблица триггеров'), ('LOAD LINK TRIGGERS', 'Trigger links', 'Привязка триггеров'), ('LOAD CREATE TRIGGERS', 'Trigger setup', 'Расстановка триггеров'), ('LOAD ITEMS', 'Items', 'Предметы'), ('LOAD CREATE ITEMS', 'Item setup', 'Создание предметов'), ('LOAD AREAS', 'Areas', 'Области'), ('LOAD CREATE AREAS', 'Area setup', 'Создание областей'), ('LOAD MONSTERS', 'Monsters', 'Монстры'), ('LOAD CREATE MONSTERS', 'Monster setup', 'Создание монстров'), ('LOAD MAP HEADER', 'Map Description', 'Описание карты'), ('LOAD SKY', 'Background', 'Фон'), ('LOAD MONSTER TEXTURES', 'Monsters'' Textures', 'Текстуры монстров'), ('LOAD MONSTER SOUNDS', 'Monsters'' Sounds', 'Звуки монстров'), ('LOAD SAVE FILE', 'Save File', 'Файл сохранения'), ('LOAD MAP STATE', 'Map State', 'Настройка карты'), ('LOAD ITEMS STATE', 'Items State', 'Расстановка предметов'), ('LOAD TRIGGERS STATE', 'Triggers State', 'Установка триггеров'), ('LOAD WEAPONS STATE', 'Weapons State', 'Расстановка оружия'), ('LOAD MONSTERS STATE', 'Monsters State', 'Расстановка монстров'), ('LOAD CONNECT', 'Connecting ([ESC] to abort)', 'Соединение ([ESC] - отменить)'), ('LOAD SEND INFO', 'Sending client info', 'Отсылка информации'), ('LOAD WAIT INFO', 'Awaiting response ([ESC] to abort)', 'Ожидание ответа ([ESC] - отменить)'), ('LOAD DL RES', 'Downloading resources...', 'Скачивание ресурсов...'), ('CREDITS CAP 1', 'Doom 2D: Forever', 'Doom 2D: Forever'), ('CREDITS CAP 2', 'version %s, proto %d', 'Версия %s, протокол %d'), ('CREDITS A 1', 'Project Author:', 'Автор проекта:'), ('CREDITS A 1 1', 'rs.falcon', 'rs.falcon'), ('CREDITS A 2', 'Programmers:', 'Программисты:'), ('CREDITS A 2 1', 'rs.falcon, PSS, PrimuS, Stas''M,', 'rs.falcon, PSS, PrimuS, Stas''M,'), ('CREDITS A 2 2', 'ZURG, OutCast, ketmar', 'ZURG, OutCast, ketmar'), ('CREDITS A 3', 'Artists:', 'Художники:'), ('CREDITS A 3 1', 'Jabberwock, Firehawk', 'Jabberwock, Firehawk'), ('CREDITS A 4', 'Misc:', 'Ассистенты:'), ('CREDITS A 4 1', 'Jabberwock, Black Doomer, DEAD, Grom PE', 'Jabberwock, Черный Думер, DEAD, Grom PE'), ('CREDITS CAP 3', 'Special thanks to:', 'Благодарим:'), ('CREDITS CLO 1', '- Prikol Software for Doom 2D', '- Prikol Software за Doom 2D'), ('CREDITS CLO 2', '- id Software for starting it all', '- id Software, без кого ничего бы не было'), ('CREDITS CLO 3', '- Everyone who helped our project', '- Всех, кто помогал нашему проекту'), ('CREDITS CLO 4', 'www.doom2d.org, 2003-2016', 'www.doom2d.org, 2003-2016'), ('MSG SHOW FPS ON', 'FPS counter enabled', 'FPS показываются'), ('MSG SHOW FPS OFF', 'FPS counter disabled', 'FPS не показываются'), ('MSG GAMEMODE CURRENT', 'Game Mode: %s', 'Режим игры: %s'), ('MSG GAMEMODE CHANGE', 'Game Mode: %s (switch to %s next round)', 'Режим игры: %s (будет %s в следующем раунде)'), ('MSG FRIENDLY FIRE ON', 'Friendly Fire enabled', 'Урон своих включен'), ('MSG FRIENDLY FIRE OFF', 'Friendly Fire disabled', 'Урона своих нет'), ('MSG WEAPONSTAY ON', 'Weapon Stay enabled', 'Оружие остается после подбора'), ('MSG WEAPONSTAY OFF', 'Weapon Stay disabled', 'Оружие исчезает после подбора'), ('MSG ALLOWEXIT ON', 'Exit enabled*', 'Выход с карты разрешен*'), ('MSG ALLOWEXIT OFF', 'Exit disabled*', 'Выход с карты запрещен*'), ('MSG ALLOWMON ON', 'Monsters in DM enabled*', 'Монстры в DM включены*'), ('MSG ALLOWMON OFF', 'Monsters in DM disabled*', 'Монстры в DM выключены*'), ('MSG BOTSVSPLAYERS ON', 'Bots attack players', 'Боты против игроков'), ('MSG BOTSVSPLAYERS OFF', 'Bots ignore players', 'Боты за игроков'), ('MSG BOTSVSMONSTERS ON', 'Bots attack monsters', 'Боты против монстров'), ('MSG BOTSVSMONSTERS OFF', 'Bots ignore monsters', 'Боты игнорируют монстров'), ('MSG TIME ON', 'Time on', 'Время показывается'), ('MSG TIME OFF', 'Time display off', 'Время не показывается'), ('MSG SCORE ON', 'Score display on', 'Очки показываются'), ('MSG SCORE OFF', 'Score display off', 'Очки не показываются'), ('MSG STATS ON', 'Stats display on', 'Статистика показывается'), ('MSG STATS OFF', 'Stats display off', 'Статистика не показывается'), ('MSG KILL MSGS ON', 'Death Messages on', 'Сообщения о смерти есть'), ('MSG KILL MSGS OFF', 'Death Messages off', 'Сообщений о смерти нет'), ('MSG LIVES ON', 'Lives display on', 'Жизни показываются'), ('MSG LIVES OFF', 'Lives display off', 'Жизни не показываются'), ('MSG SPECT HUD ON', 'Spectator HUD on', 'Состояние наблюдателя показывается'), ('MSG SPECT HUD OFF', 'Spectator HUD off', 'Состояние наблюдателя не показывается'), ('MSG PING ON', 'Client ping display on', 'Пинг клиента показывается'), ('MSG PING OFF', 'Client ping display off', 'Пинг клиента не показывается'), ('MSG NO WAD', 'WAD "%s" doesn''t exist!', 'WAD файл "%s" не найден!'), ('MSG NO MAPS', 'WAD "%s" doesn''t contain any maps!', 'WAD файл "%s" не содержит карт!'), ('MSG NO MAP', 'Map "%s" doesn''t exist!', 'Карта "%s" не найдена!'), ('MSG NO MONSTER', 'Wrong monster type: "%s"!', '"%s" - нет такого монстра!'), ('MSG SCORE LIMIT', 'Score Limit is %d', 'Лимит очков - %d'), ('MSG TIME LIMIT', 'Time Limit is %d:%.2d:%.2d', 'Лимит времени - %d:%.2d:%.2d'), ('MSG LIVES', 'Max lives: %d', 'Макс. жизней у игроков: %d'), ('MSG WARMUP', 'Warmup time: %d seconds*', 'Время на подготовку к игре: %d секунд*'), ('MSG WARMUP START', '%d seconds until round start.', '%d секунд до начала раунда.'), ('MSG NEXTMAP SET', 'Next map: %s', 'Следующая карта: %s'), ('MSG NEXTMAP UNSET', 'Next map is not set.', 'Следующая карта не задана.'), ('MSG ONMAPCHANGE', '* Changes to this variable will be applied upon next map change', '* Изменения вступят в силу после следующей смены карты'), ('MSG NOT GAME', 'Command can be accepted in a game only.', 'Команда применима только в игре.'), ('MSG NOT DEBUG', 'Command can be accepted in debug mode only.', 'Команда применима только в режиме отладки.'), ('MSG GM UNAVAIL', 'This command is unavailable in the current game mode.', 'Эта команда недоступна в текущем режиме игры.'), ('MSG SERVERONLY', 'This command is for server only.', 'Эта команда доступна только в режиме сервера.'), ('MSG NOCLIENTS', 'No clients connected.', 'Нет подключённых клиентов.'), ('MSG UNBAN OK', 'Client %s was unbanned.', 'Был снят бан с клиента %s.'), ('MSG UNBAN FAIL', 'Client %s not found in the ban list.', 'Клиент %s не числится в списке забаненых.'), ('TEXTURE ENDPIC', 'ENDGAME_EN', 'ENDGAME_RU'), ('VERSION', 'Doom 2D: Forever %s', 'Doom 2D: Forever %s'), ('FATAL ERROR', 'Fatal error: %s', 'Критическая ошибка: %s'), ('SIMPLE ERROR', 'Error: %s', 'Ошибка: %s'), ('SYSTEM ERROR UNKNOWN', 'Something went seriously wrong. Guru meditation: $%.8x', 'Хьюстон, у нас неизвестная науке проблема: $%.8x'), ('SYSTEM ERROR MSG', 'Something went wrong. Post Mortem: %s', 'Произошло что-то неладное: %s'), ('', '', '') ); procedure SetupArrays(); var i: LongWord; begin // Названия клавиш перемещения курсора: e_KeyNames[IK_UP] := _lc[I_KEY_UP] + ' ' + Chr(30); e_KeyNames[IK_LEFT] := _lc[I_KEY_LEFT] + ' ' + Chr(17); e_KeyNames[IK_RIGHT] := _lc[I_KEY_RIGHT] + ' ' + Chr(16); e_KeyNames[IK_DOWN] := _lc[I_KEY_DOWN] + ' ' + Chr(31); // Имена монстров в творительном падеже: KilledByMonster[MONSTER_DEMON] := _lc[I_MONSTER_DEMON]; KilledByMonster[MONSTER_IMP] := _lc[I_MONSTER_IMP]; KilledByMonster[MONSTER_ZOMBY] := _lc[I_MONSTER_ZOMBIE]; KilledByMonster[MONSTER_SERG] := _lc[I_MONSTER_SERGEANT]; KilledByMonster[MONSTER_CYBER] := _lc[I_MONSTER_CYBER]; KilledByMonster[MONSTER_CGUN] := _lc[I_MONSTER_CGUN]; KilledByMonster[MONSTER_BARON] := _lc[I_MONSTER_BARON]; KilledByMonster[MONSTER_KNIGHT] := _lc[I_MONSTER_KNIGHT]; KilledByMonster[MONSTER_CACO] := _lc[I_MONSTER_CACODEMON]; KilledByMonster[MONSTER_SOUL] := _lc[I_MONSTER_SOUL]; KilledByMonster[MONSTER_PAIN] := _lc[I_MONSTER_PAIN]; KilledByMonster[MONSTER_SPIDER] := _lc[I_MONSTER_MASTERMIND]; KilledByMonster[MONSTER_BSP] := _lc[I_MONSTER_SPIDER]; KilledByMonster[MONSTER_MANCUB] := _lc[I_MONSTER_MANCUBUS]; KilledByMonster[MONSTER_SKEL] := _lc[I_MONSTER_REVENANT]; KilledByMonster[MONSTER_VILE] := _lc[I_MONSTER_ARCHVILE]; KilledByMonster[MONSTER_FISH] := _lc[I_MONSTER_FISH]; KilledByMonster[MONSTER_BARREL] := _lc[I_MONSTER_BARREL]; KilledByMonster[MONSTER_ROBO] := _lc[I_MONSTER_ROBOT]; KilledByMonster[MONSTER_MAN] := _lc[I_MONSTER_PRIKOLIST]; // Чит-коды: for i := LongWord(Low(CheatEng)) to LongWord(High(CheatEng)) do begin CheatEng[TStrings_Locale(i)] := g_lang_default[TStrings_Locale(i)][LANGUAGE_ENGLISH_N]; CheatRus[TStrings_Locale(i)] := g_lang_default[TStrings_Locale(i)][LANGUAGE_RUSSIAN_N]; end; end; procedure g_Language_Load(fileName: String); var F: TextFile; key, value: String; i: TStrings_Locale; k: Integer; ok: Boolean; begin // Значения по-умолчанию: for i := Low(TStrings_Locale) to High(TStrings_Locale) do _lc[i] := g_lang_default[i][LANGUAGE_ENGLISH_N]; if FileExists(fileName) then begin AssignFile(F, fileName); ReSet(F); k := 0; // Читаем файл: while not EoF(F) do 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; end; CloseFile(F); end else e_WriteLog('Language file "'+fileName+'" not found!', MSG_WARNING); SetupArrays(); end; procedure g_Language_Set(lang: String); var i: TStrings_Locale; n: Byte; begin if lang = LANGUAGE_RUSSIAN then n := LANGUAGE_RUSSIAN_N else n := LANGUAGE_ENGLISH_N; for i := Low(TStrings_Locale) to High(TStrings_Locale) do _lc[i] := g_lang_default[i][n]; SetupArrays(); 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.