3 {$INCLUDE ../shared/a_modes.inc}
7 uses g_Basic
, MAPDEF
, Classes
;
10 MsgNotAccessible
= 'N/A';
12 MsgArrayBoolFalse
= 'No';
13 MsgArrayBoolTrue
= 'Yes';
15 MsgArrayDirLeft
= 'Left';
16 MsgArrayDirRight
= 'Right';
17 MsgArrayDirSame
= 'Don''t change';
18 MsgArrayDirReversed
= 'Reversed';
20 MsgArrayDirbtnLeft
= 'Left';
21 MsgArrayDirbtnRight
= 'Right';
22 MsgArrayDirbtnUp
= 'Up';
23 MsgArrayDirbtnDown
= 'Down';
25 MsgArrayPanelWall
= 'Wall';
26 MsgArrayPanelBack
= 'Background';
27 MsgArrayPanelFront
= 'Foreground';
28 MsgArrayPanelDoorOpen
= 'Open Door';
29 MsgArrayPanelDoorClose
= 'Closed Door';
30 MsgArrayPanelStair
= 'Step';
31 MsgArrayPanelWater
= 'Water';
32 MsgArrayPanelAcid1
= 'Acid 1';
33 MsgArrayPanelAcid2
= 'Acid 2';
34 MsgArrayPanelLiftUp
= 'Stream Up';
35 MsgArrayPanelLiftDown
= 'Stream Down';
36 MsgArrayPanelLiftLeft
= 'Stream Left';
37 MsgArrayPanelLiftRight
= 'Stream Right';
38 MsgArrayPanelBlockmon
= 'Monster Boundary';
40 MsgArrayFxNone
= 'None';
41 MsgArrayFxTeleport
= 'Teleport';
42 MsgArrayFxRespawn
= 'Respawn';
43 MsgArrayFxFire
= 'Arch-Vile Fire';
45 MsgArrayItemMedkit
= 'Stimpack';
46 MsgArrayItemLargeMedkit
= 'Medikit';
47 MsgArrayItemBlackMedkit
= 'Berserk Pack';
48 MsgArrayItemGreenArmor
= 'Green Armor';
49 MsgArrayItemBlueArmor
= 'Blue Armor';
50 MsgArrayItemBlueSphere
= 'Soulsphere';
51 MsgArrayItemMegasphere
= 'Megasphere';
52 MsgArrayItemHazSuit
= 'Envirosuit';
53 MsgArrayItemOxygen
= 'Scuba';
54 MsgArrayItemInvulnerability
= 'Invulnerability';
55 MsgArrayItemChainsaw
= 'Chainsaw';
56 MsgArrayItemShotgun
= 'Shotgun';
57 MsgArrayItemDbShotgun
= 'Super Shotgun';
58 MsgArrayItemChaingun
= 'Chaingun';
59 MsgArrayItemRocketLauncher
= 'Rocket Launcher';
60 MsgArrayItemPlasmaRifle
= 'Plasma Rifle';
61 MsgArrayItemBfg
= 'BFG9000';
62 MsgArrayItemSuperMinigun
= 'Super Chaingun';
63 MsgArrayItemFlamethrower
= 'Flamethrower';
64 MsgArrayItemClip
= 'Clip';
65 MsgArrayItemAmmoBox
= 'Box of Bullets';
66 MsgArrayItem4Shells
= '4 Shells';
67 MsgArrayItem25Shells
= 'Box of Shells';
68 MsgArrayItem1Rocket
= 'Rocket';
69 MsgArrayItemRocketBox
= 'Box of Rockets';
70 MsgArrayItemCell
= 'Energy Cell';
71 MsgArrayItemLargeCell
= 'Energy Cell Pack';
72 MsgArrayItemFuelcan
= 'Fuel Canister';
73 MsgArrayItemBackpack
= 'Backpack';
74 MsgArrayItemKeyRed
= 'Red Key';
75 MsgArrayItemKeyGreen
= 'Green Key';
76 MsgArrayItemKeyBlue
= 'Blue Key';
77 MsgArrayItemBottle
= 'Health Globe';
78 MsgArrayItemHelmet
= 'Armor Shard';
79 MsgArrayItemJetpack
= 'Jetpack';
80 MsgArrayItemInvis
= 'Invisibility';
82 MsgArrayShotPistol
= 'Pistol shot';
83 MsgArrayShotBullet
= 'Chaingun shot';
84 MsgArrayShotShotgun
= 'Shotgun shot';
85 MsgArrayShotSsg
= 'Super Shotgun shot';
86 MsgArrayShotImp
= 'Imp fireball';
87 MsgArrayShotPlasma
= 'Blue plasma';
88 MsgArrayShotSpider
= 'Arachnotron plasma';
89 MsgArrayShotCaco
= 'Cacodemon fireball';
90 MsgArrayShotBaron
= 'Hell Baron projectile';
91 MsgArrayShotMancub
= 'Mancubus gunshot';
92 MsgArrayShotRev
= 'Revenant projectile';
93 MsgArrayShotRocket
= 'Rocket';
94 MsgArrayShotBfg
= 'BFG ball';
95 MsgArrayShotExpl
= 'Explosion';
96 MsgArrayShotBfgexpl
= 'BFG explosion';
97 MsgArrayShotFlame
= 'Flame';
99 MsgArrayMonDemon
= 'Pinky';
100 MsgArrayMonImp
= 'Imp';
101 MsgArrayMonZombie
= 'Zombie';
102 MsgArrayMonSergeant
= 'Sergeant';
103 MsgArrayMonCyber
= 'Cyberdemon';
104 MsgArrayMonCgun
= 'Commando';
105 MsgArrayMonHellBaron
= 'Hell Baron';
106 MsgArrayMonHellKnight
= 'Hell Knight';
107 MsgArrayMonCacodemon
= 'Cacodemon';
108 MsgArrayMonLostSoul
= 'Lost Soul';
109 MsgArrayMonPainElemental
= 'Pain Elemental';
110 MsgArrayMonMastermind
= 'Spider Mastermind';
111 MsgArrayMonArachnatron
= 'Arachnotron';
112 MsgArrayMonMancubus
= 'Mancubus';
113 MsgArrayMonRevenant
= 'Revenant';
114 MsgArrayMonArchvile
= 'Arch-Vile';
115 MsgArrayMonFish
= 'Piranha';
116 MsgArrayMonBarrel
= 'Barrel';
117 MsgArrayMonRobot
= 'Robot';
118 MsgArrayMonPrikolist
= 'Prikolist';
120 MsgArrayAreaPlayerOne
= 'Player 1';
121 MsgArrayAreaPlayerTwo
= 'Player 2';
122 MsgArrayAreaDm
= 'DM Spawn Point';
123 MsgArrayAreaFlagRed
= 'Red Flag';
124 MsgArrayAreaFlagBlue
= 'Blue Flag';
125 MsgArrayAreaFlagDom
= 'Domination Flag';
126 MsgArrayAreaTeamRed
= 'Red Team';
127 MsgArrayAreaTeamBlue
= 'Blue Team';
129 MsgArrayTrExit
= 'Exit';
130 MsgArrayTrTeleport
= 'Teleport';
131 MsgArrayTrDoorOpen
= 'Open Door';
132 MsgArrayTrDoorClose
= 'Close Door';
133 MsgArrayTrDoorSwitch
= 'Door';
134 MsgArrayTrDoor5Sec
= 'Door (5 sec)';
135 MsgArrayTrTrapClose
= 'Close Trap';
136 MsgArrayTrTrap
= 'Trap';
137 MsgArrayTrExtend
= 'Extender';
138 MsgArrayTrSecret
= 'Secret';
139 MsgArrayTrLiftUp
= 'Turn stream up/left';
140 MsgArrayTrLiftDown
= 'Turn stream down/right';
141 MsgArrayTrLiftSwitch
= 'Revert stream';
142 MsgArrayTrTexture
= 'Change Texture';
143 MsgArrayTrOn
= 'Enable Trigger';
144 MsgArrayTrOff
= 'Disable Trigger';
145 MsgArrayTrSwitch
= 'Trigger Toggle';
146 MsgArrayTrSound
= 'Play Sound';
147 MsgArrayTrSpawnMonster
= 'Spawn Monster';
148 MsgArrayTrSpawnItem
= 'Spawn Item';
149 MsgArrayTrMusic
= 'Play Music';
150 MsgArrayTrPush
= 'Push';
151 MsgArrayTrScore
= 'Team Score';
152 MsgArrayTrMessage
= 'Message';
153 MsgArrayTrDamage
= 'Damage';
154 MsgArrayTrHealth
= 'Healer';
155 MsgArrayTrShot
= 'Turret';
156 MsgArrayTrEffect
= 'Effect';
161 MsgPropWidth
= 'Width';
162 MsgPropHeight
= 'Height';
163 MsgPropPanelType
= 'Panel Type';
164 MsgPropPanelTex
= 'Texture';
165 MsgPropPanelAlpha
= 'Transparency';
166 MsgPropPanelBlend
= 'Blending';
167 MsgPropDmOnly
= 'DM Only';
168 MsgPropItemFalls
= 'Falls';
169 MsgPropDirection
= 'Direction';
171 MsgPropTrType
= 'Trigger Type';
172 MsgPropTrEnabled
= 'Enabled';
173 MsgPropTrTexturePanel
= 'Textured Panel';
174 MsgPropTrActivation
= 'Activation Type';
175 MsgPropTrKeys
= 'Keys';
176 MsgPropTrD2d
= 'D2D-like';
177 MsgPropTrSilent
= 'Silent';
178 MsgPropTrCount
= 'Count';
179 MsgPropTrInterval
= 'Interval (in ticks)';
180 MsgPropTrHealth
= 'Health';
181 MsgPropTrNextMap
= 'Next Map';
182 MsgPropTrTeleportTo
= 'Teleport to';
183 MsgPropTrTeleportSilent
= 'Silent';
184 MsgPropTrTeleportDir
= 'New Direction';
185 MsgPropTrDoorPanel
= 'Door Panel';
186 MsgPropTrTrapPanel
= 'Trap Panel';
187 MsgPropTrExArea
= 'Action Area';
188 MsgPropTrExDelay
= 'Delay';
189 MsgPropTrExCount
= 'Count';
190 MsgPropTrExMonster
= 'Monster ID';
191 MsgPropTrExRandom
= 'Random';
192 MsgPropTrLiftPanel
= 'Stream Panel';
193 MsgPropTrTextureOnce
= 'Once';
194 MsgPropTrTextureAnimOnce
= 'Animate Once';
195 MsgPropTrSoundName
= 'Sound (snd)';
196 MsgPropTrSoundVolume
= 'Volume';
197 MsgPropTrSoundPan
= 'Pan';
198 MsgPropTrSoundCount
= 'Loops';
199 MsgPropTrSoundLocal
= 'Local';
200 MsgPropTrSoundSwitch
= 'Switch';
201 MsgPropTrFxType
= 'Effect';
202 MsgPropTrSpawnTo
= 'Spawn at';
203 MsgPropTrSpawnMax
= 'Maximum';
204 MsgPropTrSpawnDelay
= 'Autospawn (in ticks)';
205 MsgPropTrMonsterType
= 'Monster';
206 MsgPropTrMonsterActive
= 'Active';
207 MsgPropTrMonsterBehaviour
= 'Behaviour';
208 MsgPropTrMonsterBehaviour0
= 'Normal';
209 MsgPropTrMonsterBehaviour1
= 'Killer';
210 MsgPropTrMonsterBehaviour2
= 'Maniac';
211 MsgPropTrMonsterBehaviour3
= 'Insane';
212 MsgPropTrMonsterBehaviour4
= 'Cannibal';
213 MsgPropTrMonsterBehaviour5
= 'Good';
214 MsgPropTrItemType
= 'Item';
215 MsgPropTrMusicName
= 'Music';
216 MsgPropTrMusicAct
= 'Action (m)';
217 MsgPropTrMusicOn
= 'Play';
218 MsgPropTrMusicOff
= 'Pause';
219 MsgPropTrPushAngle
= 'Angle';
220 MsgPropTrPushForce
= 'Force';
221 MsgPropTrPushReset
= 'Reset velocity';
222 MsgPropTrScoreAct
= 'Action (s)';
223 MsgPropTrScoreAct0
= 'Add points';
224 MsgPropTrScoreAct1
= 'Subtract points';
225 MsgPropTrScoreAct2
= 'Team Wins';
226 MsgPropTrScoreAct3
= 'Team Loses';
227 MsgPropTrScoreTeam
= 'Team';
228 MsgPropTrScoreTeam0
= 'My';
229 MsgPropTrScoreTeam1
= 'Enemy';
230 MsgPropTrScoreTeam2
= 'Red';
231 MsgPropTrScoreTeam3
= 'Blue';
232 MsgPropTrScoreCon
= 'Console message';
233 MsgPropTrScoreMsg
= 'Game message';
234 MsgPropTrDamageValue
= 'Damage';
235 MsgPropTrDamageKind
= 'Damage type';
236 MsgPropTrDamageKind0
= 'HIT_SOME';
237 MsgPropTrDamageKind3
= 'HIT_TRAP';
238 MsgPropTrDamageKind4
= 'HIT_FALL';
239 MsgPropTrDamageKind5
= 'HIT_WATER';
240 MsgPropTrDamageKind6
= 'HIT_ACID';
241 MsgPropTrDamageKind7
= 'HIT_ELECTRO';
242 MsgPropTrDamageKind8
= 'HIT_FLAME';
243 MsgPropTrHealthMax
= 'To maximum';
244 MsgPropTrShotType
= 'Projectile';
245 MsgPropTrShotSound
= 'Shot sound';
246 MsgPropTrShotAngle
= 'Angle';
247 MsgPropTrShotAcc
= 'Spread';
248 MsgPropTrShotTo
= 'Auto targeting';
249 MsgPropTrShotTo0
= 'None';
250 MsgPropTrShotTo1
= 'Monsters';
251 MsgPropTrShotTo2
= 'Players';
252 MsgPropTrShotTo3
= 'Red team';
253 MsgPropTrShotTo4
= 'Blue team';
254 MsgPropTrShotTo5
= 'Monsters, players';
255 MsgPropTrShotTo6
= 'Players, monsters';
256 MsgPropTrShotAim
= 'Auto-aiming mode';
257 MsgPropTrShotAim0
= 'Trigger area';
258 MsgPropTrShotAim1
= 'Entire map';
259 MsgPropTrShotAim2
= 'Trace trigger area';
260 MsgPropTrShotAim3
= 'Trace entire map';
261 MsgPropTrShotAmmo
= 'Ammo limit';
262 MsgPropTrShotReload
= 'Reload interval (in ticks)';
263 MsgPropTrShotSight
= 'Sight interval (in ticks)';
264 MsgPropTrShotPanel
= 'Indicator panel';
265 MsgPropTrMessageKind
= 'Message kind';
266 MsgPropTrMessageKind0
= 'Console message';
267 MsgPropTrMessageKind1
= 'Event message';
268 MsgPropTrMessageTo
= 'Send to';
269 MsgPropTrMessageTo0
= 'Me';
270 MsgPropTrMessageTo1
= 'My team';
271 MsgPropTrMessageTo2
= 'Enemy team';
272 MsgPropTrMessageTo3
= 'Red team';
273 MsgPropTrMessageTo4
= 'Blue team';
274 MsgPropTrMessageTo5
= 'Everyone';
275 MsgPropTrMessageText
= 'Message text';
276 MsgPropTrMessageTime
= 'Time (in ticks)';
277 MsgPropTrEffectType
= 'Effect type';
278 MsgPropTrEffectSubtype
= 'Effect subtype';
279 MsgPropTrEffectColor
= 'Effect color';
280 MsgPropTrEffectCenter
= 'Trigger center';
281 MsgPropTrEffectVelx
= 'Horizontal speed';
282 MsgPropTrEffectVely
= 'Vertical speed';
283 MsgPropTrEffectSpl
= 'Speed variance left';
284 MsgPropTrEffectSpr
= 'Speed variance right';
285 MsgPropTrEffectSpu
= 'Speed variance up';
286 MsgPropTrEffectSpd
= 'Speed variance down';
287 MsgPropTrEffectParticle
= 'Particle generator';
288 MsgPropTrEffectAnimation
= 'Animation';
289 MsgPropTrEffectSliquid
= 'Water splash';
290 MsgPropTrEffectLliquid
= 'Light colored splash';
291 MsgPropTrEffectDliquid
= 'Dark colored splash';
292 MsgPropTrEffectBlood
= 'Blood';
293 MsgPropTrEffectSpark
= 'Sparks';
294 MsgPropTrEffectBubble
= 'Bubbles';
296 MsgMsgError
= 'Error';
297 MsgMsgWrongTexwidth
= 'Panel Width must be a multiple of Texture Width (%d)';
298 MsgMsgWrongTexheight
= 'Panel Height must be a multiple of Texture Height (%d)';
299 MsgMsgWrongAlpha
= 'Transparency must be in [0..255] interval';
300 MsgMsgWrongSize
= 'Width and Height must be greater than 0';
301 MsgMsgWrongXy
= 'X or Y coordinate hasn''t been set';
302 MsgMsgTextureAlready
= 'Texture "%s" already exists';
303 MsgMsgResName64
= 'Resource "%s" name must not be longer than 64 chars';
304 MsgMsgChooseItem
= 'Select Item';
305 MsgMsgChooseMonster
= 'Select Monster';
306 MsgMsgChooseArea
= 'Select Area';
307 MsgMsgChooseTexture
= 'Select Texture';
308 MsgMsgChooseRes
= 'Resource hasn''t been selected';
310 MsgMsgExitPromt
= 'Leaving so soon?';
311 MsgMsgDelTexture
= 'Delete the texture';
312 MsgMsgDelTexturePromt
= 'Delete the texture "%s" ?';
313 MsgMsgDelTextureCant
= 'Can''t delete texture in use. Replace it on all panels with this texture.';
314 MsgMsgDelRecent
= 'File does not longer exist';
315 MsgMsgDelRecentPromt
= 'Remove entry from recent list?';
316 MsgMsgClearMap
= 'New map';
317 MsgMsgClearMapPromt
= 'Clear the entire map?';
318 MsgMsgDeleteMap
= 'Delete the map';
319 MsgMsgDeleteMapPromt
= 'Delete the map "%s" from "%s" ?';
320 MsgMsgMapDeleted
= 'Map is deleted';
321 MsgMsgMapDeletedPromt
= 'Map "%s" is deleted';
322 MsgMsgReopenMapPromt
= 'Reopen this map?';
323 MsgMsgExecError
= 'Game start error';
324 MsgMsgSoundError
= 'Can''t play sound';
325 MsgMsgWadError
= 'Can''t open WAD: %s';
326 MsgMsgResError
= 'Can''t read resource: %s:%s\%s';
327 MsgMsgPacked
= 'Map "%s" with resources saved to "%s"';
328 MsgMsgMapExists
= 'Map "%s" already exists. Overwrite?';
329 MsgMsgSaveMap
= 'Save the map';
331 MsgHintTeleport
= 'Choose destination of Teleport';
332 MsgHintSpawn
= 'Choose Spawn point';
333 MsgHintPanelDoor
= 'Choose Door';
334 MsgHintPanelTexture
= 'Choose textured Panel';
335 MsgHintPanelShot
= 'Choose textured shot indicator Panel';
336 MsgHintPanelLift
= 'Choose Stream Panel';
337 MsgHintMonster
= 'Choose Monster';
338 MsgHintExtArea
= 'Specify action Area';
339 MsgHintWidth
= 'Width: %d';
340 MsgHintHeight
= 'Height: %d';
342 MsgMenuAppleAbout
= 'About Editor';
343 MsgMenuApplePref
= 'Preferences...';
345 MsgMenuFile
= 'File';
346 MsgMenuFileNew
= 'New';
347 MsgMenuFileOpen
= 'Open...';
348 MsgMenuFileRecentMac
= 'Open Recent';
349 MsgMenuFileRecentClearMac
= 'Clear Recent';
350 MsgMenuFileSave
= 'Save';
351 MsgMenuFileSaveAs
= 'Save As...';
352 MsgMenuFileOpenWad
= 'Select Map...';
353 MsgMenuFileReopen
= 'Revert to Saved';
354 MsgMenuFileSaveMini
= 'Save Minimap...';
355 MsgMenuFileDelete
= 'Remove from WAD...';
356 MsgMenuFilePackMap
= 'Pack to WAD...';
357 MsgMenuFileRecentWin
= 'Recent Files';
358 MsgMenuFileExitWin
= 'Exit';
360 MsgMenuEdit
= 'Edit';
361 MsgMenuEditUndo
= 'Undo';
362 MsgMenuEditCopy
= 'Copy';
363 MsgMenuEditCut
= 'Cut';
364 MsgMenuEditPaste
= 'Paste';
365 MsgMenuEditSelectAll
= 'Select All';
366 MsgMenuEditSnapGrid
= 'Snap to Grid';
367 MsgMenuEditStepGrid
= 'Switch Grid Granularity';
368 MsgMenuEditToFore
= 'Bring to Front';
369 MsgMenuEditToBack
= 'Send to Back';
370 MsgMenuEditMapProps
= 'Map Properties...';
371 MsgMenuEditPrefWin
= 'Preferences...';
373 MsgMenuView
= 'View';
374 MsgMenuViewLayers
= 'Layers';
375 MsgMenuViewMinimap
= 'Show Minimap';
376 MsgMenuViewBounds
= 'Show Map Bounds';
377 MsgMenuViewPreview
= 'Preview Mode';
379 MsgMenuServ
= 'Service';
380 MsgMenuServTest
= 'Analyse Map...';
381 MsgMenuServOpt
= 'Optimize Map...';
382 MsgMenuServLaunch
= 'Run Test';
384 MsgMenuWindow
= 'Window';
385 MsgMenuWindowMinimize
= 'Minimize';
386 MsgMenuWindowZoom
= 'Zoom';
388 MsgMenuHelp
= 'Help';
389 MsgMenuHelpAboutWin
= 'About Editor';
391 MsgMenuLayerBack
= '1. Background';
392 MsgMenuLayerWall
= '2. Walls';
393 MsgMenuLayerFore
= '3. Foreground';
394 MsgMenuLayerStair
= '4. Steps';
395 MsgMenuLayerWater
= '5. Liquids';
396 MsgMenuLayerItem
= '6. Items';
397 MsgMenuLayerMonster
= '7. Monsters';
398 MsgMenuLayerArea
= '8. Areas';
399 MsgMenuLayerTrigger
= '9. Triggers';
401 MsgMenuTbNew
= 'New Map';
402 MsgMenuTbOpen
= 'Open Map';
403 MsgMenuTbSave
= 'Save Map';
404 MsgMenuTbOpenWad
= 'Open another Map from same WAD';
405 MsgMenuTbMinimap
= 'Show Mini-map';
406 MsgMenuTbLayers
= 'Show/Hide Objects';
407 MsgMenuTbGrid
= 'Grid On/Off';
408 MsgMenuTbGridStep
= 'Switch Grid step';
409 MsgMenuTbLaunch
= 'Run Test';
411 MsgMenuLaunchSets
= 'Settings...';
413 MsgCapFxType
= 'Select Effect type';
414 MsgCapMonsterType
= 'Select Monster type';
415 MsgCapItemType
= 'Select Item type';
416 MsgCapAbout
= 'About Map Editor';
417 MsgCapAct
= 'Activation type';
418 MsgCapAddSky
= 'Select Sky Texture';
419 MsgCapAddSound
= 'Select Sound/Music';
420 MsgCapAddTexture
= 'Select Texture';
422 MsgCapTest
= 'Analyse Map';
423 MsgCapOpt
= 'Optimize Map';
424 MsgCapSets
= 'Map Properties';
425 MsgCapLaunch
= 'In-game test Settings';
426 MsgCapEs
= 'Editor Preferences';
427 MsgCapPack
= 'Pack Map';
428 MsgCapSave
= 'Save Map';
429 MsgCapMini
= 'Save Minimap';
430 MsgCapSelect
= 'Select Map';
431 MsgCapOpen
= 'Open Map';
432 MsgCapRemove
= 'Remove Map';
433 MsgCapTexture
= 'Texture: %dx%d';
434 MsgCapAnimation
= 'Animation: %dx%d, %d frames';
435 MsgCapStatSelected
= 'Selected objects: %d';
437 MsgCtrlPropKey
= 'Property';
438 MsgCtrlPropValue
= 'Value';
440 MsgCtrlPanels
= 'Panels';
441 MsgCtrlItems
= 'Items';
442 MsgCtrlMonsters
= 'Monsters';
443 MsgCtrlAreas
= 'Areas';
444 MsgCtrlTriggers
= 'Triggers';
446 MsgCtrlListTexture
= 'Texture List';
447 MsgCtrlListItem
= 'Item List';
448 MsgCtrlListMonster
= 'Monster List';
449 MsgCtrlListArea
= 'Area List';
450 MsgCtrlListTrigger
= 'Trigger List';
451 MsgCtrlListActive
= 'Activation Type';
452 MsgCtrlListKeys
= 'Keys Needed';
454 MsgCtrlPreview
= 'Texture Preview';
455 MsgCtrlItemDm
= 'DM Only';
456 MsgCtrlItemFalls
= 'Falls';
457 MsgCtrlLeft
= 'Left';
458 MsgCtrlRight
= 'Right';
460 MsgCtrlActPlayerClose
= 'Player Collides';
461 MsgCtrlActMonsterClose
= 'Monster Collides';
462 MsgCtrlActPlayerPress
= 'Player Pressed';
463 MsgCtrlActMonsterPress
= 'Monster Pressed';
464 MsgCtrlActShot
= 'Shot';
465 MsgCtrlActNoMonster
= 'No Monsters';
467 MsgCtrlKeysRed
= 'Red Key';
468 MsgCtrlKeysGreen
= 'Green Key';
469 MsgCtrlKeysBlue
= 'Blue Key';
470 MsgCtrlKeysTeamRed
= 'Red Team';
471 MsgCtrlKeysTeamBlue
= 'Blue Team';
473 MsgCtrlOptGb
= 'Optimization';
474 MsgCtrlOptTexture
= 'Texture Optimization';
475 MsgCtrlOptPanel
= 'Panel Optimization';
476 MsgCtrlOptWall
= 'Walls';
477 MsgCtrlOptFore
= 'Foreground';
478 MsgCtrlOptBack
= 'Background';
479 MsgCtrlOptStair
= 'Steps';
480 MsgCtrlOptWater
= 'Water';
481 MsgCtrlOptAcid1
= 'Acid 1';
482 MsgCtrlOptAcid2
= 'Acid 2';
483 MsgCtrlOptLift
= 'Streams';
484 MsgCtrlOptBlockmon
= 'Monster Boundary';
485 MsgCtrlOptDescTexture
= 'Deletes unused textures from texture list.';
486 MsgCtrlOptDescPanel
= 'Merges nearby panels of same type. Increases game performance.';
487 MsgCtrlSetsStats
= 'Statistics:';
488 MsgCtrlSetsSizes
= 'Map Size:';
490 MsgCtrlLaunchDm
= 'Deathmatch';
491 MsgCtrlLaunchTdm
= 'Team Deathmatch';
492 MsgCtrlLaunchCtf
= 'Capture the Flag';
493 MsgCtrlLaunchCoop
= 'Cooperative';
494 MsgCtrlLaunch2p
= 'Two Players';
495 MsgCtrlLaunchFf
= 'Friendly Fire';
496 MsgCtrlLaunchExit
= 'Enable Exit';
497 MsgCtrlLaunchWeapons
= 'Weapons Stay';
498 MsgCtrlLaunchMonsters
= 'Enable Monsters';
499 MsgCtrlLaunchClose
= 'Close the game after exiting the map';
500 MsgCtrlLaunchOpen
= 'Select Doom 2D: Forever executable';
502 MsgCtrlEsGrid
= 'Show Grid';
503 MsgCtrlEsTexture
= 'Show Panel Texture';
504 MsgCtrlEsPanelSize
= 'Show Panel Size';
505 MsgCtrlEsCheckerboard
= 'Use Checkerboard';
507 MsgCtrlPackTextures
= 'Textures';
508 MsgCtrlPackSky
= 'Sky';
509 MsgCtrlPackMusic
= 'Music';
510 MsgCtrlPackAdd
= 'Don''t overwrite WAD';
511 MsgCtrlPackNonStd
= 'Non-standard Resources only';
513 MsgLabTexWidth
= 'Texture Width:';
514 MsgLabTexHeight
= 'Texture Height:';
516 MsgLabSpectrum
= 'Show the Spectrum';
518 MsgLabAboutVer
= 'Version 2.1.5';
519 MsgLabAboutAuthor
= 'Author: rs.falcon';
520 MsgLabAboutAuthor2
= 'Additions: Pss';
521 MsgLabAboutMail
= 'rmw.falcon@mail.ru';
522 MsgLabAboutMail2
= 'pssxx@mail.ru';
523 MsgLabAboutSite
= 'Doom 2D: Forever Web-site';
524 MsgLabAboutHttp
= 'www.doom2d.org';
526 MsgLabAddWads
= 'WAD Files:';
527 MsgLabAddSections
= 'WAD Sections:';
529 MsgLabSetsName
= 'Map Name:';
530 MsgLabSetsDesc
= 'Map Description';
531 MsgLabSetsAuthor
= 'Author:';
532 MsgLabSetsBack
= 'Background/Sky:';
533 MsgLabSetsMusic
= 'Music:';
534 MsgLabSetsTextures
= 'Textures:';
535 MsgLabSetsPanels
= 'Panels:';
536 MsgLabSetsItems
= 'Items:';
537 MsgLabSetsMonsters
= 'Monsters:';
538 MsgLabSetsAreas
= 'Areas:';
539 MsgLabSetsTriggers
= 'Triggers:';
540 MsgLabSetsSizes
= 'Current:';
541 MsgLabSetsWidth
= 'Width:';
542 MsgLabSetsHeight
= 'Height:';
543 MsgLabSetsMapmove
= 'Direction to shift map objects:';
544 MsgLabSetsSnapping
= 'Preserve snapping';
546 MsgLabLaunchTime
= 'Time Limit:';
547 MsgLabLaunchSecs
= 'seconds';
548 MsgLabLaunchScore
= 'Score Limit:';
549 MsgLabLaunchPath
= 'Path to Doom2DF.exe:';
550 MsgLabLaunchArgs
= 'Launch Arguments:';
552 MsgLabEsGrid
= 'Grid Step:';
553 MsgLabEsGridColor
= 'Grid Color:';
554 MsgLabEsGridSize
= 'Grid Dot Size:';
555 MsgLabEsBack
= 'Background Color:';
556 MsgLabEsPreview
= 'Texture Preview Background Color:';
557 MsgLabEsMinimap
= 'Mini-map Scale:';
558 MsgLabEsRecent
= 'Recent Maps List Contains:';
559 MsgLabEsLanguage
= 'Language:';
560 MsgLabEsCompress
= 'Compress archive when save';
561 MsgLabEsBackup
= 'Make backup before save';
563 MsgLabPackSaveTo
= 'Save to:';
564 MsgLabPackMapName
= 'Map Resource Name:';
565 MsgLabPackTextures
= 'Texture Section:';
566 MsgLabPackSky
= 'Sky Section:';
567 MsgLabPackMusic
= 'Music Section:';
569 MsgLabMiniScale
= 'Scale:';
571 MsgBtnApplyProps
= 'Apply Properties';
573 MsgBtnCancel
= 'Cancel';
575 MsgBtnClose
= 'Close';
576 MsgBtnAddClose
= 'Add and Close';
577 MsgBtnTestAgain
= 'Check';
581 MsgBtnNoSound
= 'No sound';
582 MsgBtnTextureAdd
= 'Add texture to the list';
583 MsgBtnTextureDelete
= 'Delete texture from the list';
584 MsgBtnTextureEmpty
= 'Deselect texture';
586 MsgLoadWad
= 'Reading WAD';
587 MsgLoadMap
= 'Loading Map';
588 MsgLoadTextures
= 'Reading Textures';
589 MsgLoadPanels
= 'Reading Panels';
590 MsgLoadItems
= 'Reading Items';
591 MsgLoadMonsters
= 'Reading Monsters';
592 MsgLoadAreas
= 'Reading Areas';
593 MsgLoadTriggers
= 'Reading Triggers';
595 MsgTestAreaWall
= 'Player collides with the wall and will be stuck.';
596 MsgTestAreaWallStr
= 'Area #%d collides with Map (%d:%d)';
597 MsgTestSpawns1
= 'There are several spawn points for First Player on the map';
598 MsgTestSpawns2
= 'There are several spawn points for Second Player on the map';
599 MsgTestSpawns
= 'There are several spawn points on the map. Random one will be used.';
600 MsgTestNoDm
= 'There are no DM spawn points on the map';
601 MsgTestNoDmEx
= 'There are no DM spawn points on the map. Only "Single Player" mode available.';
602 MsgTestMonsterWall
= 'Monster collides with the wall and will be stuck.';
603 MsgTestMonsterWallStr
= 'Monster #%d collides with a map (%d:%d)';
605 MsgOptNoTextures
= 'Texture list is empty';
606 MsgOptDeletedTextures
= 'Deleted Textures:';
607 MsgOptTotalTextures
= 'Textures Total:';
608 MsgOptTexDeleted
= 'Textures Deleted:';
609 MsgOptPanelsOpt
= 'Panels Optimized:';
610 MsgOptWalls
= 'Walls Optimization...';
611 MsgOptFores
= 'Foreground Optimization...';
612 MsgOptBacks
= 'Background Optimization...';
613 MsgOptStairs
= 'Steps Optimization...';
614 MsgOptWater
= 'Water Optimization...';
615 MsgOptAcid1
= 'Acid 1 Optimization...';
616 MsgOptAcid2
= 'Acid 2 Optimization...';
617 MsgOptLifts
= 'Streams Optimization...';
618 MsgOptBlockmon
= 'Monster Boundaries Optimization...';
619 MsgOptTotalPanels
= 'Panels Total:';
620 MsgOptPanelsAfter
= 'Panels after Optimization:';
622 MsgWadSpecialMap
= '<MAP WAD-FILE>';
623 MsgWadSpecialTexs
= '<EXTRA TEXTURES>';
625 MsgFileFilterAll
= 'Doom 2D: Forever Maps (*.dfz, *.dfzip, *.zip, *.wad)|*.dfz;*.dfzip;*.zip;*.wad|Doom 2D: Forever 0.30 Maps (*.ini)|*.ini|All Files (*.*)|*.*';
626 MsgFileFilterWad
= 'Doom 2D: Forever Maps (*.dfz)|*.dfz|Doom 2D: Forever Maps (*.dfzip)|*.dfzip|Doom 2D: Forever Maps (*.zip)|*.zip|Doom 2D: Forever Maps (*.wad)|*.wad|All Files (*.*)|*.*';
628 MsgEditorTitle
= 'Doom 2D: Forever Map Editor';
631 BoolNames
: Array [False..True] of String;
632 DirNames
: Array [D_LEFT
..D_RIGHT
] of String;
633 DirNamesAdv
: Array [0..3] of String;
634 DirButtonNames
: Array [1..4] of String;
635 PANELNAMES
: Array[0..13] of String;
636 EffectNames
: Array [EFFECT_NONE
..EFFECT_FIRE
] of String;
637 ItemNames
: Array [ITEM_MEDKIT_SMALL
..ITEM_MAX
] of String;
638 ShotNames
: Array [TRIGGER_SHOT_PISTOL
..TRIGGER_SHOT_MAX
] of String;
639 MonsterNames
: Array [MONSTER_DEMON
..MONSTER_MAN
] of String;
640 AreaNames
: Array [AREA_PLAYERPOINT1
..AREA_BLUETEAMPOINT
] of String;
641 TriggerNames
: Array [TRIGGER_EXIT
..TRIGGER_MAX
] of String;
643 function g_Language_GetList (): TStringList
;
644 procedure g_Language_Set(lang
: String);
649 g_options
, IniFiles
, gettext
, LazFileUtils
,
650 SysUtils
, e_log
, f_main
, f_about
, f_activationtype
,
651 f_addresource_sky
, f_addresource_sound
,
652 f_addresource_texture
, f_choosetype
, f_keys
, f_mapcheck
,
653 f_mapoptions
, f_mapoptimization
, f_options
,
654 f_packmap
, f_savemap
, f_saveminimap
, f_selectmap
, Forms
, utils
;
657 InSourceLanguage
= 'en_US';
659 procedure SetupArrays();
665 BoolNames
[False] := MsgArrayBoolFalse
;
666 BoolNames
[True] := MsgArrayBoolTrue
;
669 DirNames
[D_LEFT
] := MsgArrayDirLeft
;
670 DirNames
[D_RIGHT
] := MsgArrayDirRight
;
672 // Смены направления:
673 DirNamesAdv
[0] := MsgArrayDirSame
;
674 DirNamesAdv
[1] := MsgArrayDirLeft
;
675 DirNamesAdv
[2] := MsgArrayDirRight
;
676 DirNamesAdv
[3] := MsgArrayDirReversed
;
678 // Направление (на кнопках):
679 DirButtonNames
[1] := MsgArrayDirbtnLeft
;
680 DirButtonNames
[2] := MsgArrayDirbtnRight
;
681 DirButtonNames
[3] := MsgArrayDirbtnUp
;
682 DirButtonNames
[4] := MsgArrayDirbtnDown
;
685 PANELNAMES
[0] := MsgArrayPanelWall
;
686 PANELNAMES
[1] := MsgArrayPanelBack
;
687 PANELNAMES
[2] := MsgArrayPanelFront
;
688 PANELNAMES
[3] := MsgArrayPanelDoorOpen
;
689 PANELNAMES
[4] := MsgArrayPanelDoorClose
;
690 PANELNAMES
[5] := MsgArrayPanelStair
;
691 PANELNAMES
[6] := MsgArrayPanelWater
;
692 PANELNAMES
[7] := MsgArrayPanelAcid1
;
693 PANELNAMES
[8] := MsgArrayPanelAcid2
;
694 PANELNAMES
[9] := MsgArrayPanelLiftUp
;
695 PANELNAMES
[10] := MsgArrayPanelLiftDown
;
696 PANELNAMES
[11] := MsgArrayPanelLiftLeft
;
697 PANELNAMES
[12] := MsgArrayPanelLiftRight
;
698 PANELNAMES
[13] := MsgArrayPanelBlockmon
;
700 // Названия эффектов:
701 EffectNames
[EFFECT_NONE
] := MsgArrayFxNone
;
702 EffectNames
[EFFECT_TELEPORT
] := MsgArrayFxTeleport
;
703 EffectNames
[EFFECT_RESPAWN
] := MsgArrayFxRespawn
;
704 EffectNames
[EFFECT_FIRE
] := MsgArrayFxFire
;
706 // Названия предметов:
707 ItemNames
[ITEM_MEDKIT_SMALL
] := MsgArrayItemMedkit
;
708 ItemNames
[ITEM_MEDKIT_LARGE
] := MsgArrayItemLargeMedkit
;
709 ItemNames
[ITEM_MEDKIT_BLACK
] := MsgArrayItemBlackMedkit
;
710 ItemNames
[ITEM_ARMOR_GREEN
] := MsgArrayItemGreenArmor
;
711 ItemNames
[ITEM_ARMOR_BLUE
] := MsgArrayItemBlueArmor
;
712 ItemNames
[ITEM_SPHERE_BLUE
] := MsgArrayItemBlueSphere
;
713 ItemNames
[ITEM_SPHERE_WHITE
] := MsgArrayItemMegasphere
;
714 ItemNames
[ITEM_SUIT
] := MsgArrayItemHazSuit
;
715 ItemNames
[ITEM_OXYGEN
] := MsgArrayItemOxygen
;
716 ItemNames
[ITEM_INVUL
] := MsgArrayItemInvulnerability
;
717 ItemNames
[ITEM_WEAPON_SAW
] := MsgArrayItemChainsaw
;
718 ItemNames
[ITEM_WEAPON_SHOTGUN1
] := MsgArrayItemShotgun
;
719 ItemNames
[ITEM_WEAPON_SHOTGUN2
] := MsgArrayItemDbShotgun
;
720 ItemNames
[ITEM_WEAPON_CHAINGUN
] := MsgArrayItemChaingun
;
721 ItemNames
[ITEM_WEAPON_ROCKETLAUNCHER
] := MsgArrayItemRocketLauncher
;
722 ItemNames
[ITEM_WEAPON_PLASMA
] := MsgArrayItemPlasmaRifle
;
723 ItemNames
[ITEM_WEAPON_BFG
] := MsgArrayItemBfg
;
724 ItemNames
[ITEM_WEAPON_SUPERPULEMET
] := MsgArrayItemSuperMinigun
;
725 ItemNames
[ITEM_WEAPON_FLAMETHROWER
] := MsgArrayItemFlamethrower
;
726 ItemNames
[ITEM_AMMO_BULLETS
] := MsgArrayItemClip
;
727 ItemNames
[ITEM_AMMO_BULLETS_BOX
] := MsgArrayItemAmmoBox
;
728 ItemNames
[ITEM_AMMO_SHELLS
] := MsgArrayItem4Shells
;
729 ItemNames
[ITEM_AMMO_SHELLS_BOX
] := MsgArrayItem25Shells
;
730 ItemNames
[ITEM_AMMO_ROCKET
] := MsgArrayItem1Rocket
;
731 ItemNames
[ITEM_AMMO_ROCKET_BOX
] := MsgArrayItemRocketBox
;
732 ItemNames
[ITEM_AMMO_CELL
] := MsgArrayItemCell
;
733 ItemNames
[ITEM_AMMO_CELL_BIG
] := MsgArrayItemLargeCell
;
734 ItemNames
[ITEM_AMMO_FUELCAN
] := MsgArrayItemFuelcan
;
735 ItemNames
[ITEM_AMMO_BACKPACK
] := MsgArrayItemBackpack
;
736 ItemNames
[ITEM_KEY_RED
] := MsgArrayItemKeyRed
;
737 ItemNames
[ITEM_KEY_GREEN
] := MsgArrayItemKeyGreen
;
738 ItemNames
[ITEM_KEY_BLUE
] := MsgArrayItemKeyBlue
;
739 ItemNames
[ITEM_WEAPON_KASTET
] := '?';
740 ItemNames
[ITEM_WEAPON_PISTOL
] := '??';
741 ItemNames
[ITEM_BOTTLE
] := MsgArrayItemBottle
;
742 ItemNames
[ITEM_HELMET
] := MsgArrayItemHelmet
;
743 ItemNames
[ITEM_JETPACK
] := MsgArrayItemJetpack
;
744 ItemNames
[ITEM_INVIS
] := MsgArrayItemInvis
;
746 // Названия снарядов:
747 ShotNames
[TRIGGER_SHOT_PISTOL
] := MsgArrayShotPistol
;
748 ShotNames
[TRIGGER_SHOT_BULLET
] := MsgArrayShotBullet
;
749 ShotNames
[TRIGGER_SHOT_SHOTGUN
] := MsgArrayShotShotgun
;
750 ShotNames
[TRIGGER_SHOT_SSG
] := MsgArrayShotSsg
;
751 ShotNames
[TRIGGER_SHOT_IMP
] := MsgArrayShotImp
;
752 ShotNames
[TRIGGER_SHOT_PLASMA
] := MsgArrayShotPlasma
;
753 ShotNames
[TRIGGER_SHOT_SPIDER
] := MsgArrayShotSpider
;
754 ShotNames
[TRIGGER_SHOT_CACO
] := MsgArrayShotCaco
;
755 ShotNames
[TRIGGER_SHOT_BARON
] := MsgArrayShotBaron
;
756 ShotNames
[TRIGGER_SHOT_MANCUB
] := MsgArrayShotMancub
;
757 ShotNames
[TRIGGER_SHOT_REV
] := MsgArrayShotRev
;
758 ShotNames
[TRIGGER_SHOT_ROCKET
] := MsgArrayShotRocket
;
759 ShotNames
[TRIGGER_SHOT_BFG
] := MsgArrayShotBfg
;
760 ShotNames
[TRIGGER_SHOT_EXPL
] := MsgArrayShotExpl
;
761 ShotNames
[TRIGGER_SHOT_BFGEXPL
] := MsgArrayShotBfgexpl
;
762 ShotNames
[TRIGGER_SHOT_FLAME
] := MsgArrayShotFlame
;
764 // Названия монстров:
765 MonsterNames
[MONSTER_DEMON
] := MsgArrayMonDemon
;
766 MonsterNames
[MONSTER_IMP
] := MsgArrayMonImp
;
767 MonsterNames
[MONSTER_ZOMBY
] := MsgArrayMonZombie
;
768 MonsterNames
[MONSTER_SERG
] := MsgArrayMonSergeant
;
769 MonsterNames
[MONSTER_CYBER
] := MsgArrayMonCyber
;
770 MonsterNames
[MONSTER_CGUN
] := MsgArrayMonCgun
;
771 MonsterNames
[MONSTER_BARON
] := MsgArrayMonHellBaron
;
772 MonsterNames
[MONSTER_KNIGHT
] := MsgArrayMonHellKnight
;
773 MonsterNames
[MONSTER_CACO
] := MsgArrayMonCacodemon
;
774 MonsterNames
[MONSTER_SOUL
] := MsgArrayMonLostSoul
;
775 MonsterNames
[MONSTER_PAIN
] := MsgArrayMonPainElemental
;
776 MonsterNames
[MONSTER_SPIDER
] := MsgArrayMonMastermind
;
777 MonsterNames
[MONSTER_BSP
] := MsgArrayMonArachnatron
;
778 MonsterNames
[MONSTER_MANCUB
] := MsgArrayMonMancubus
;
779 MonsterNames
[MONSTER_SKEL
] := MsgArrayMonRevenant
;
780 MonsterNames
[MONSTER_VILE
] := MsgArrayMonArchvile
;
781 MonsterNames
[MONSTER_FISH
] := MsgArrayMonFish
;
782 MonsterNames
[MONSTER_BARREL
] := MsgArrayMonBarrel
;
783 MonsterNames
[MONSTER_ROBO
] := MsgArrayMonRobot
;
784 MonsterNames
[MONSTER_MAN
] := MsgArrayMonPrikolist
;
786 // Названия областей:
787 AreaNames
[AREA_PLAYERPOINT1
] := MsgArrayAreaPlayerOne
;
788 AreaNames
[AREA_PLAYERPOINT2
] := MsgArrayAreaPlayerTwo
;
789 AreaNames
[AREA_DMPOINT
] := MsgArrayAreaDm
;
790 AreaNames
[AREA_REDFLAG
] := MsgArrayAreaFlagRed
;
791 AreaNames
[AREA_BLUEFLAG
] := MsgArrayAreaFlagBlue
;
792 AreaNames
[AREA_DOMFLAG
] := MsgArrayAreaFlagDom
;
793 AreaNames
[AREA_REDTEAMPOINT
] := MsgArrayAreaTeamRed
;
794 AreaNames
[AREA_BLUETEAMPOINT
] := MsgArrayAreaTeamBlue
;
796 // Названия триггеров:
797 TriggerNames
[TRIGGER_EXIT
] := MsgArrayTrExit
;
798 TriggerNames
[TRIGGER_TELEPORT
] := MsgArrayTrTeleport
;
799 TriggerNames
[TRIGGER_OPENDOOR
] := MsgArrayTrDoorOpen
;
800 TriggerNames
[TRIGGER_CLOSEDOOR
] := MsgArrayTrDoorClose
;
801 TriggerNames
[TRIGGER_DOOR
] := MsgArrayTrDoorSwitch
;
802 TriggerNames
[TRIGGER_DOOR5
] := MsgArrayTrDoor5Sec
;
803 TriggerNames
[TRIGGER_CLOSETRAP
] := MsgArrayTrTrapClose
;
804 TriggerNames
[TRIGGER_TRAP
] := MsgArrayTrTrap
;
805 TriggerNames
[TRIGGER_PRESS
] := MsgArrayTrExtend
;
806 TriggerNames
[TRIGGER_SECRET
] := MsgArrayTrSecret
;
807 TriggerNames
[TRIGGER_LIFTUP
] := MsgArrayTrLiftUp
;
808 TriggerNames
[TRIGGER_LIFTDOWN
] := MsgArrayTrLiftDown
;
809 TriggerNames
[TRIGGER_LIFT
] := MsgArrayTrLiftSwitch
;
810 TriggerNames
[TRIGGER_TEXTURE
] := MsgArrayTrTexture
;
811 TriggerNames
[TRIGGER_ON
] := MsgArrayTrOn
;
812 TriggerNames
[TRIGGER_OFF
] := MsgArrayTrOff
;
813 TriggerNames
[TRIGGER_ONOFF
] := MsgArrayTrSwitch
;
814 TriggerNames
[TRIGGER_SOUND
] := MsgArrayTrSound
;
815 TriggerNames
[TRIGGER_SPAWNMONSTER
] := MsgArrayTrSpawnMonster
;
816 TriggerNames
[TRIGGER_SPAWNITEM
] := MsgArrayTrSpawnItem
;
817 TriggerNames
[TRIGGER_MUSIC
] := MsgArrayTrMusic
;
818 TriggerNames
[TRIGGER_PUSH
] := MsgArrayTrPush
;
819 TriggerNames
[TRIGGER_SCORE
] := MsgArrayTrScore
;
820 TriggerNames
[TRIGGER_MESSAGE
] := MsgArrayTrMessage
;
821 TriggerNames
[TRIGGER_DAMAGE
] := MsgArrayTrDamage
;
822 TriggerNames
[TRIGGER_HEALTH
] := MsgArrayTrHealth
;
823 TriggerNames
[TRIGGER_SHOT
] := MsgArrayTrShot
;
824 TriggerNames
[TRIGGER_EFFECT
] := MsgArrayTrEffect
;
826 // Установка значений в панели выбора объектов:
829 lbPanelType
.Items
.Clear();
830 for i
:= 0 to High(PANELNAMES
) do
831 lbPanelType
.Items
.Add(PANELNAMES
[i
]);
832 lbPanelType
.ItemIndex
:= 0;
835 for i
:= ITEM_MEDKIT_SMALL
to ITEM_KEY_BLUE
do
836 lbItemList
.Items
.Add(ItemNames
[i
]);
837 lbItemList
.Items
.Add(ItemNames
[ITEM_BOTTLE
]);
838 lbItemList
.Items
.Add(ItemNames
[ITEM_HELMET
]);
839 lbItemList
.Items
.Add(ItemNames
[ITEM_JETPACK
]);
840 lbItemList
.Items
.Add(ItemNames
[ITEM_INVIS
]);
841 lbItemList
.Items
.Add(ItemNames
[ITEM_WEAPON_FLAMETHROWER
]);
842 lbItemList
.Items
.Add(ItemNames
[ITEM_AMMO_FUELCAN
]);
844 lbMonsterList
.Clear();
845 for i
:= MONSTER_DEMON
to MONSTER_MAN
do
846 lbMonsterList
.Items
.Add(MonsterNames
[i
]);
849 for i
:= AREA_PLAYERPOINT1
to AREA_BLUETEAMPOINT
do
850 lbAreasList
.Items
.Add(AreaNames
[i
]);
852 lbTriggersList
.Clear();
853 for i
:= Low(TriggerNames
) to High(TriggerNames
) do
854 lbTriggersList
.Items
.Add(TriggerNames
[i
]);
856 clbActivationType
.Clear();
857 clbActivationType
.Items
.Add(MsgCtrlActPlayerClose
);
858 clbActivationType
.Items
.Add(MsgCtrlActMonsterClose
);
859 clbActivationType
.Items
.Add(MsgCtrlActPlayerPress
);
860 clbActivationType
.Items
.Add(MsgCtrlActMonsterPress
);
861 clbActivationType
.Items
.Add(MsgCtrlActShot
);
862 clbActivationType
.Items
.Add(MsgCtrlActNoMonster
);
865 clbKeys
.Items
.Add(MsgCtrlKeysRed
);
866 clbKeys
.Items
.Add(MsgCtrlKeysGreen
);
867 clbKeys
.Items
.Add(MsgCtrlKeysBlue
);
868 clbKeys
.Items
.Add(MsgCtrlKeysTeamRed
);
869 clbKeys
.Items
.Add(MsgCtrlKeysTeamBlue
);
873 procedure SetupCaptions();
874 var i
: Integer; s
: AnsiString;
880 s
:= g_GetBuildHash(false);
881 if s
= 'custom build' then
882 s
:= s
+ ' by ' + g_GetBuilderName() + ' ' + EDITOR_BUILDDATE
+ ' ' + EDITOR_BUILDTIME
;
883 FormCaption
:= MsgEditorTitle
+ ' (' + s
+ ')';
884 i
:= Pos('-', Caption
);
887 Caption
:= FormCaption
+ ' ' + Copy(Caption
, i
, Length(Caption
)-i
+1);
890 Caption
:= FormCaption
;
893 miAppleAbout
.Caption
:= MsgMenuAppleAbout
;
894 miApplePref
.Caption
:= MsgMenuApplePref
;
896 miMenuFile
.Caption
:= MsgMenuFile
;
897 miNewMap
.Caption
:= MsgMenuFileNew
;
898 miOpenMap
.Caption
:= MsgMenuFileOpen
;
899 miMacRecentSubMenu
.Caption
:= MsgMenuFileRecentMac
;
900 miMacRecentClear
.Caption
:= MsgMenuFileRecentClearMac
;
901 miSaveMap
.Caption
:= MsgMenuFileSave
;
902 miSaveMapAs
.Caption
:= MsgMenuFileSaveAs
;
903 miOpenWadMap
.Caption
:= MsgMenuFileOpenWad
;
904 miReopenMap
.Caption
:= MsgMenuFileReopen
;
905 miSaveMiniMap
.Caption
:= MsgMenuFileSaveMini
;
906 miDeleteMap
.Caption
:= MsgMenuFileDelete
;
907 miPackMap
.Caption
:= MsgMenuFilePackMap
;
908 miWinRecent
.Caption
:= MsgMenuFileRecentWin
;
909 miExit
.Caption
:= MsgMenuFileExitWin
;
911 miMenuEdit
.Caption
:= MsgMenuEdit
;
912 miUndo
.Caption
:= MsgMenuEditUndo
;
913 miCopy
.Caption
:= MsgMenuEditCopy
;
914 miCut
.Caption
:= MsgMenuEditCut
;
915 miPaste
.Caption
:= MsgMenuEditPaste
;
916 miSelectAll
.Caption
:= MsgMenuEditSelectAll
;
917 miSnapToGrid
.Caption
:= MsgMenuEditSnapGrid
;
918 miSwitchGrid
.Caption
:= MsgMenuEditStepGrid
;
919 miToFore
.Caption
:= MsgMenuEditToFore
;
920 miToBack
.Caption
:= MsgMenuEditToBack
;
921 miMapOptions
.Caption
:= MsgMenuEditMapProps
;
922 miOptions
.Caption
:= MsgMenuEditPrefWin
;
924 miMenuView
.Caption
:= MsgMenuView
;
925 miLayers
.Caption
:= MsgMenuViewLayers
;
926 miLayer1
.Caption
:= MsgMenuLayerBack
;
927 miLayer2
.Caption
:= MsgMenuLayerWall
;
928 miLayer3
.Caption
:= MsgMenuLayerFore
;
929 miLayer4
.Caption
:= MsgMenuLayerStair
;
930 miLayer5
.Caption
:= MsgMenuLayerWater
;
931 miLayer6
.Caption
:= MsgMenuLayerItem
;
932 miLayer7
.Caption
:= MsgMenuLayerMonster
;
933 miLayer8
.Caption
:= MsgMenuLayerArea
;
934 miLayer9
.Caption
:= MsgMenuLayerTrigger
;
935 miMiniMap
.Caption
:= MsgMenuViewMinimap
;
936 miShowEdges
.Caption
:= MsgMenuViewBounds
;
937 miMapPreview
.Caption
:= MsgMenuViewPreview
;
939 miMenuService
.Caption
:= MsgMenuServ
;
940 miCheckMap
.Caption
:= MsgMenuServTest
;
941 miOptimmization
.Caption
:= MsgMenuServOpt
;
942 miTestMap
.Caption
:= MsgMenuServLaunch
;
944 miMenuWindow
.Caption
:= MsgMenuWindow
;
945 miMacMinimize
.Caption
:= MsgMenuWindowMinimize
;
946 miMacZoom
.Caption
:= MsgMenuWindowZoom
;
948 miMenuHelp
.Caption
:= MsgMenuHelp
;
949 miAbout
.Caption
:= MsgMenuHelpAboutWin
;
952 tbNewMap
.Hint
:= MsgMenuTbNew
;
953 tbOpenMap
.Hint
:= MsgMenuTbOpen
;
954 tbSaveMap
.Hint
:= MsgMenuTbSave
;
955 tbOpenWadMap
.Hint
:= MsgMenuTbOpenWad
;
956 tbShowMap
.Hint
:= MsgMenuTbMinimap
;
957 tbShow
.Hint
:= MsgMenuTbLayers
;
958 miLayerP1
.Caption
:= MsgMenuLayerBack
;
959 miLayerP2
.Caption
:= MsgMenuLayerWall
;
960 miLayerP3
.Caption
:= MsgMenuLayerFore
;
961 miLayerP4
.Caption
:= MsgMenuLayerStair
;
962 miLayerP5
.Caption
:= MsgMenuLayerWater
;
963 miLayerP6
.Caption
:= MsgMenuLayerItem
;
964 miLayerP7
.Caption
:= MsgMenuLayerMonster
;
965 miLayerP8
.Caption
:= MsgMenuLayerArea
;
966 miLayerP9
.Caption
:= MsgMenuLayerTrigger
;
967 tbGridOn
.Hint
:= MsgMenuTbGrid
;
968 tbGrid
.Hint
:= MsgMenuTbGridStep
;
969 tbTestMap
.Hint
:= MsgMenuTbLaunch
;
971 // Object property editor:
972 bApplyProperty
.Caption
:= MsgBtnApplyProps
;
973 vleObjectProperty
.TitleCaptions
[0] := MsgCtrlPropKey
;
974 vleObjectProperty
.TitleCaptions
[1] := MsgCtrlPropValue
;
977 tsPanels
.Caption
:= MsgCtrlPanels
;
978 lbPanelType
.Hint
:= MsgPropPanelType
;
979 lbTextureList
.Hint
:= MsgCtrlListTexture
;
980 LabelTxW
.Caption
:= MsgLabTexWidth
;
981 LabelTxH
.Caption
:= MsgLabTexHeight
;
982 cbPreview
.Caption
:= MsgCtrlPreview
;
983 bbAddTexture
.Hint
:= MsgBtnTextureAdd
;
984 bbRemoveTexture
.Hint
:= MsgBtnTextureDelete
;
985 bClearTexture
.Hint
:= MsgBtnTextureEmpty
;
988 tsItems
.Caption
:= MsgCtrlItems
;
989 lbItemList
.Hint
:= MsgCtrlListItem
;
990 cbOnlyDM
.Caption
:= MsgCtrlItemDm
;
991 cbFall
.Caption
:= MsgCtrlItemFalls
;
994 tsMonsters
.Caption
:= MsgCtrlMonsters
;
995 lbMonsterList
.Hint
:= MsgCtrlListMonster
;
996 rbMonsterLeft
.Caption
:= MsgCtrlLeft
;
997 rbMonsterRight
.Caption
:= MsgCtrlRight
;
1000 tsAreas
.Caption
:= MsgCtrlAreas
;
1001 lbAreasList
.Hint
:= MsgCtrlListArea
;
1002 rbAreaLeft
.Caption
:= MsgCtrlLeft
;
1003 rbAreaRight
.Caption
:= MsgCtrlRight
;
1006 tsTriggers
.Caption
:= MsgCtrlTriggers
;
1007 lbTriggersList
.Hint
:= MsgCtrlListTrigger
;
1008 clbActivationType
.Hint
:= MsgCtrlListActive
;
1009 clbKeys
.Hint
:= MsgCtrlListKeys
;
1012 // Форма "О программе":
1015 Caption
:= MsgCapAbout
;
1016 LabelTitle
.Caption
:= MsgEditorTitle
;
1017 LabelVer
.Caption
:= MsgLabAboutVer
;
1018 LabelAuthor
.Caption
:= MsgLabAboutAuthor
;
1019 LabelAuthor2
.Caption
:= MsgLabAboutAuthor2
;
1020 LabelMail
.Caption
:= MsgLabAboutMail
;
1021 LabelMail2
.Caption
:= MsgLabAboutMail2
;
1022 LabelSite
.Caption
:= MsgLabAboutSite
;
1023 LabelHttp
.Caption
:= MsgLabAboutHttp
;
1026 // Форма "Тип активации":
1027 with ActivationTypeForm
do
1029 Caption
:= MsgCapAct
;
1030 cbPlayerCollide
.Caption
:= MsgCtrlActPlayerClose
;
1031 cbMonsterCollide
.Caption
:= MsgCtrlActMonsterClose
;
1032 cbPlayerPress
.Caption
:= MsgCtrlActPlayerPress
;
1033 cbMonsterPress
.Caption
:= MsgCtrlActMonsterPress
;
1034 cbShot
.Caption
:= MsgCtrlActShot
;
1035 cbNoMonster
.Caption
:= MsgCtrlActNoMonster
;
1036 bOK
.Caption
:= MsgBtnOk
;
1039 // Форма "Выбор текстуры для неба":
1042 Caption
:= MsgCapAddSky
;
1043 LabelWADs
.Caption
:= MsgLabAddWads
;
1044 LabelSections
.Caption
:= MsgLabAddSections
;
1045 bOK
.Caption
:= MsgBtnOk
;
1046 bCancel
.Caption
:= MsgBtnCancel
;
1049 // Форма "Выбор звука или музыки":
1050 with AddSoundForm
do
1052 Caption
:= MsgCapAddSound
;
1053 LabelWADs
.Caption
:= MsgLabAddWads
;
1054 LabelSections
.Caption
:= MsgLabAddSections
;
1055 bOK
.Caption
:= MsgBtnOk
;
1056 bCancel
.Caption
:= MsgBtnCancel
;
1057 bEmpty
.Caption
:= MsgBtnNoSound
;
1060 // Форма "Выбор текстуры":
1061 with AddTextureForm
do
1063 Caption
:= MsgCapAddTexture
;
1064 LabelWADs
.Caption
:= MsgLabAddWads
;
1065 LabelSections
.Caption
:= MsgLabAddSections
;
1066 bAddTexture
.Caption
:= MsgBtnAdd
;
1067 bClose
.Caption
:= MsgBtnClose
;
1068 bAddClose
.Caption
:= MsgBtnAddClose
;
1071 // Форма "Выбор типа монстра" / "Выбор типа предмета":
1072 ChooseTypeForm
.bOK
.Caption
:= MsgBtnOk
;
1077 Caption
:= MsgCapKeys
;
1078 cbRedKey
.Caption
:= MsgCtrlKeysRed
;
1079 cbGreenKey
.Caption
:= MsgCtrlKeysGreen
;
1080 cbBlueKey
.Caption
:= MsgCtrlKeysBlue
;
1081 cbRedTeam
.Caption
:= MsgCtrlKeysTeamRed
;
1082 cbBlueTeam
.Caption
:= MsgCtrlKeysTeamBlue
;
1083 bOK
.Caption
:= MsgBtnOk
;
1086 // Форма "Проверка карты":
1087 with MapCheckForm
do
1089 Caption
:= MsgCapTest
;
1090 bCheckMap
.Caption
:= MsgBtnTestAgain
;
1091 bClose
.Caption
:= MsgBtnClose
;
1094 // Форма "Оптимизация карты":
1095 with MapOptimizationForm
do
1097 Caption
:= MsgCapOpt
;
1098 // Выбор оптимизации:
1099 GroupBoxOpt
.Caption
:= MsgCtrlOptGb
;
1100 rbTexturesOptimization
.Caption
:= MsgCtrlOptTexture
;
1101 rbPanelsOptimization
.Caption
:= MsgCtrlOptPanel
;
1102 // Оптимизация текстур:
1103 bBeginTextureOptimization
.Caption
:= MsgBtnStart
;
1104 // Оптимизация панелей:
1105 cbOptimizeWalls
.Caption
:= MsgCtrlOptWall
;
1106 cbOptimizeForeGround
.Caption
:= MsgCtrlOptFore
;
1107 cbOptimizeBackGround
.Caption
:= MsgCtrlOptBack
;
1108 cbOptimizeSteps
.Caption
:= MsgCtrlOptStair
;
1109 cbOptimizeWater
.Caption
:= MsgCtrlOptWater
;
1110 cbOptimizeAcid1
.Caption
:= MsgCtrlOptAcid1
;
1111 cbOptimizeAcid2
.Caption
:= MsgCtrlOptAcid2
;
1112 cbOptimizeLift
.Caption
:= MsgCtrlOptLift
;
1113 cbOptimizeBlockMon
.Caption
:= MsgCtrlOptBlockmon
;
1114 bBeginPanelsOptimization
.Caption
:= MsgBtnStart
;
1117 // Форма "Параметры карты":
1118 with MapOptionsForm
do
1120 Caption
:= MsgCapSets
;
1121 // Основные параметры:
1122 LabelName
.Caption
:= MsgLabSetsName
;
1123 LabelDesc
.Caption
:= MsgLabSetsDesc
;
1124 LabelAuthor
.Caption
:= MsgLabSetsAuthor
;
1125 LabelBack
.Caption
:= MsgLabSetsBack
;
1126 LabelMusic
.Caption
:= MsgLabSetsMusic
;
1128 GBStats
.Caption
:= MsgCtrlSetsStats
;
1129 LabelTexs
.Caption
:= MsgLabSetsTextures
;
1130 LabelPanels
.Caption
:= MsgLabSetsPanels
;
1131 LabelItems
.Caption
:= MsgLabSetsItems
;
1132 LabelMonsters
.Caption
:= MsgLabSetsMonsters
;
1133 LabelAreas
.Caption
:= MsgLabSetsAreas
;
1134 LabelTriggers
.Caption
:= MsgLabSetsTriggers
;
1136 GBSizes
.Caption
:= MsgCtrlSetsSizes
;
1137 LabelWidth
.Caption
:= MsgLabSetsWidth
;
1138 LabelHeight
.Caption
:= MsgLabSetsHeight
;
1139 LabelCurSize
.Caption
:= MsgLabSetsSizes
;
1140 LabelMapMove
.Caption
:= MsgLabSetsMapmove
;
1141 cbSnapping
.Caption
:= MsgLabSetsSnapping
;
1143 bOK
.Caption
:= MsgBtnOk
;
1144 bCancel
.Caption
:= MsgBtnCancel
;
1147 // From "Editor settings":
1150 Caption
:= MsgCapEs
;
1151 bOK
.Caption
:= MsgBtnOk
;
1152 bCancel
.Caption
:= MsgBtnCancel
;
1154 cbShowDots
.Caption
:= MsgCtrlEsGrid
;
1155 cbShowTexture
.Caption
:= MsgCtrlEsTexture
;
1156 cbShowSize
.Caption
:= MsgCtrlEsPanelSize
;
1157 cbCheckerboard
.Caption
:= MsgCtrlEsCheckerboard
;
1158 LabelGrid
.Caption
:= MsgLabEsGrid
;
1159 LabelGridCol
.Caption
:= MsgLabEsGridColor
;
1160 LabelGridSize
.Caption
:= MsgLabEsGridSize
;
1161 LabelBack
.Caption
:= MsgLabEsBack
;
1162 LabelPreview
.Caption
:= MsgLabEsPreview
;
1163 LabelMinimap
.Caption
:= MsgLabEsMinimap
;
1164 LabelLanguage
.Caption
:= MsgLabEsLanguage
;
1166 cbCompress
.Caption
:= MsgLabEsCompress
;
1167 cbBackup
.Caption
:= MsgLabEsBackup
;
1168 LabelRecent
.Caption
:= MsgLabEsRecent
;
1170 rbDM
.Caption
:= MsgCtrlLaunchDm
;
1171 rbTDM
.Caption
:= MsgCtrlLaunchTdm
;
1172 rbCTF
.Caption
:= MsgCtrlLaunchCtf
;
1173 rbCOOP
.Caption
:= MsgCtrlLaunchCoop
;
1174 cbTwoPlayers
.Caption
:= MsgCtrlLaunch2p
;
1175 cbTeamDamage
.Caption
:= MsgCtrlLaunchFf
;
1176 cbAllowExit
.Caption
:= MsgCtrlLaunchExit
;
1177 cbWeaponStay
.Caption
:= MsgCtrlLaunchWeapons
;
1178 cbMonstersDM
.Caption
:= MsgCtrlLaunchMonsters
;
1179 cbMapOnce
.Caption
:= MsgCtrlLaunchClose
;
1180 LabelTime
.Caption
:= MsgLabLaunchTime
;
1181 LabelSecs
.Caption
:= MsgLabLaunchSecs
;
1182 LabelScore
.Caption
:= MsgLabLaunchScore
;
1183 LabelPath
.Caption
:= MsgLabLaunchPath
;
1184 FindD2dDialog
.Title
:= MsgCtrlLaunchOpen
;
1185 LabelArgs
.Caption
:= MsgLabLaunchArgs
;
1188 // Форма "Упаковать карту":
1191 Caption
:= MsgCapPack
;
1192 bPack
.Caption
:= MsgBtnPack
;
1193 LabelSaveTo
.Caption
:= MsgLabPackSaveTo
;
1194 LabelMapName
.Caption
:= MsgLabPackMapName
;
1196 cbTextrures
.Caption
:= MsgCtrlPackTextures
;
1197 LabelTextures
.Caption
:= MsgLabPackTextures
;
1198 cbSky
.Caption
:= MsgCtrlPackSky
;
1199 LabelSky
.Caption
:= MsgLabPackSky
;
1200 cbMusic
.Caption
:= MsgCtrlPackMusic
;
1201 LabelMusic
.Caption
:= MsgLabPackMusic
;
1202 cbAdd
.Caption
:= MsgCtrlPackAdd
;
1203 cbNonStandart
.Caption
:= MsgCtrlPackNonStd
;
1206 // Форма "Сохранить карту":
1209 Caption
:= MsgCapSave
;
1210 bOK
.Caption
:= MsgBtnOk
;
1211 bCancel
.Caption
:= MsgBtnCancel
;
1214 // Форма "Сохранить мини-карту":
1215 with SaveMiniMapForm
do
1217 Caption
:= MsgCapMini
;
1218 LabelScale
.Caption
:= MsgLabMiniScale
;
1219 bSave
.Caption
:= MsgBtnSave
;
1220 bClose
.Caption
:= MsgBtnClose
;
1223 // Форма "Выбор карты":
1224 with SelectMapForm
do
1226 Caption
:= MsgCapSelect
;
1227 bOK
.Caption
:= MsgBtnOk
;
1228 bCancel
.Caption
:= MsgBtnCancel
;
1231 // Заголовок приложения:
1232 Application
.Title
:= MsgEditorTitle
;
1238 ignored
: TStringList
;
1242 function gResourceItarator (name
, value
: AnsiString; hash
: LongInt; arg
: Pointer): AnsiString;
1243 var res
: PResArg
; orig
: AnsiString;
1245 res
:= PResArg(arg
);
1246 orig
:= res
.ini
.ReadString('resourcestring', name
+ '$', '');
1247 if (orig
= '') or (orig
= value
) then
1249 if res
.ini
.ValueExists('resourcestring', name
) then
1251 result
:= res
.ini
.ReadString('resourcestring', name
, '');
1256 if res
.ignored
.IndexOf(Copy(name
, 1, Pos('.', name
) - 1)) < 0 then
1257 e_WriteLog(' Seems that key ' + name
+ ' not translated', MSG_NOTIFY
);
1262 e_WriteLog(' Original resource string for ' + name
+ ' do not match, translation are outdated?', MSG_WARNING
);
1263 e_WriteLog(' [' + value
+ '] -> [' + orig
+ ']', MSG_WARNING
);
1268 procedure gSetLanguageFormStream (const lang
: AnsiString; stream
: TStream
; out ok
: Boolean);
1273 res
.ini
:= TIniFile
.Create(stream
, [ifoStripComments
, ifoStripQuotes
, ifoEscapeLineFeeds
]);
1277 if res
.ini
<> nil then
1280 ok
:= res
.ini
.SectionExists('resourcestring');
1283 res
.ignored
:= TStringList
.Create
;
1284 res
.ignored
.CaseSensitive
:= False;
1285 res
.ini
.ReadSection('ignore', res
.ignored
);
1287 SetResourceStrings(gResourceItarator
, @res
);
1294 if not ok
then e_WriteLog('Translation file for ' + lang
+ ' are invalid ', MSG_FATALERROR
);
1297 procedure gSetLanguageFromFile (const lang
: AnsiString; out ok
: Boolean);
1298 const langfilename
= 'editor';
1299 var stream
: TFileStream
; name
: AnsiString;
1301 name
:= LangDir
+ DirectorySeparator
+ langfilename
+ '.' + lang
+ '.lng';
1303 stream
:= TFileStream
.Create(name
, fmOpenRead
);
1305 gSetLanguageFormStream(lang
, stream
, ok
);
1309 except on E
: EFOpenError
do
1314 procedure gSetLanguage (const lang
: AnsiString; out ok
: Boolean);
1316 gSetLanguageFromFile(lang
, ok
);
1319 function g_Language_GetList (): TStringList
;
1320 const langfilename
= 'editor';
1321 var list
: TStringList
; info
: TSearchRec
;
1323 list
:= TStringList
.Create
;
1324 list
.Duplicates
:= dupIgnore
;
1325 list
.Add(InSourceLanguage
);
1326 if FindFirst(LangDir
+ DirectorySeparator
+ langfilename
+ '.*.lng', faAnyFile
, info
) = 0 then
1329 list
.Add(Copy(ExtractFileNameWithoutExt(info
.Name
), Length(langfilename
) + 2));
1330 until FindNext(info
) <> 0;
1337 procedure g_Language_Set(lang
: String);
1338 var syslang
, fallbacklang
: String; ok
: Boolean;
1340 ResetResourceTables
;
1344 GetLanguageIDs(syslang
, fallbacklang
); // TODO: remove dependency on gettext
1345 e_WriteLog('g_Language_Set: try strings "' + syslang
+ '" (system)', MSG_NOTIFY
);
1346 gSetLanguage(syslang
, ok
);
1349 e_WriteLog('g_Language_Set: try strings "' + fallbacklang
+ '" (fallback)', MSG_NOTIFY
);
1350 gSetLanguage(syslang
, ok
);
1355 e_WriteLog('g_Language_Set: try strings "' + lang
+ '" (user specified)', MSG_NOTIFY
);
1356 gSetLanguage(lang
, ok
);
1358 if not ok
then e_WriteLog('g_Language_Set: use default strings "' + InSourceLanguage
+ '" (in-source)', MSG_NOTIFY
);
1362 RemoveSelectFromObjects();