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 MsgMsgExitPrompt
= 'Leaving so soon?';
311 MsgMsgDelTexture
= 'Delete the texture';
312 MsgMsgDelTexturePrompt
= '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 MsgMsgDelRecentPrompt
= 'Remove entry from recent list?';
316 MsgMsgClearMap
= 'New map';
317 MsgMsgClearMapPrompt
= 'Clear the entire map?';
318 MsgMsgDeleteMap
= 'Delete the map';
319 MsgMsgDeleteMapPrompt
= 'Delete the map "%s" from "%s" ?';
320 MsgMsgMapDeleted
= 'Map is deleted';
321 MsgMsgMapDeletedPrompt
= 'Map "%s" is deleted';
322 MsgMsgReopenMapPrompt
= '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
= '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 MsgCtrlEsTesting
= 'Testing';
491 MsgCtrlLaunchDm
= 'Deathmatch';
492 MsgCtrlLaunchTdm
= 'Team Deathmatch';
493 MsgCtrlLaunchCtf
= 'Capture the Flag';
494 MsgCtrlLaunchCoop
= 'Cooperative';
495 MsgCtrlLaunch2p
= 'Two Players';
496 MsgCtrlLaunchFf
= 'Friendly Fire';
497 MsgCtrlLaunchExit
= 'Enable Exit';
498 MsgCtrlLaunchWeapons
= 'Weapons Stay';
499 MsgCtrlLaunchMonsters
= 'Enable Monsters';
500 MsgCtrlLaunchClose
= 'Close the game after exiting the map';
501 MsgCtrlLaunchOpen
= 'Select Doom 2D: Forever executable';
503 MsgCtrlEsGeneral
= 'General';
504 MsgCtrlEsGrid
= 'Show Grid';
505 MsgCtrlEsTexture
= 'Show Panel Texture';
506 MsgCtrlEsPanelSize
= 'Show Panel Size';
507 MsgCtrlEsCheckerboard
= 'Use Checkerboard';
509 MsgCtrlPackTextures
= 'Textures';
510 MsgCtrlPackSky
= 'Sky';
511 MsgCtrlPackMusic
= 'Music';
512 MsgCtrlPackAdd
= 'Don''t overwrite WAD';
513 MsgCtrlPackNonStd
= 'Non-standard Resources only';
515 MsgLabTexWidth
= 'Texture Width:';
516 MsgLabTexHeight
= 'Texture Height:';
518 MsgLabSpectrum
= 'Show the Spectrum';
520 MsgLabAboutVer
= 'Version 2.1.5';
521 MsgLabAboutAuthor
= 'Author: rs.falcon';
522 MsgLabAboutAuthor2
= 'Additions: Pss';
523 MsgLabAboutMail
= 'rmw.falcon@mail.ru';
524 MsgLabAboutMail2
= 'pssxx@mail.ru';
525 MsgLabAboutSite
= 'Doom 2D: Forever Web-site';
526 MsgLabAboutHttp
= 'www.doom2d.org';
528 MsgLabAddWads
= 'WAD Files:';
529 MsgLabAddSections
= 'WAD Sections:';
531 MsgLabSetsName
= 'Map Name:';
532 MsgLabSetsDesc
= 'Map Description';
533 MsgLabSetsAuthor
= 'Author:';
534 MsgLabSetsBack
= 'Background/Sky:';
535 MsgLabSetsMusic
= 'Music:';
536 MsgLabSetsTextures
= 'Textures:';
537 MsgLabSetsPanels
= 'Panels:';
538 MsgLabSetsItems
= 'Items:';
539 MsgLabSetsMonsters
= 'Monsters:';
540 MsgLabSetsAreas
= 'Areas:';
541 MsgLabSetsTriggers
= 'Triggers:';
542 MsgLabSetsSizes
= 'Current:';
543 MsgLabSetsWidth
= 'Width:';
544 MsgLabSetsHeight
= 'Height:';
545 MsgLabSetsMapmove
= 'Direction to shift map objects:';
546 MsgLabSetsSnapping
= 'Preserve snapping';
548 MsgLabLaunchTime
= 'Time Limit:';
549 MsgLabLaunchSecs
= 'seconds';
550 MsgLabLaunchScore
= 'Score Limit:';
551 MsgLabLaunchPathWin
= 'Path to Doom2DF.exe:';
552 MsgLabLaunchPathMac
= 'Path to Doom 2D Forever.app:';
553 MsgLabLaunchPathUnix
= 'Path to Doom2DF:';
554 MsgLabLaunchArgs
= 'Launch Arguments:';
556 MsgLabEsGrid
= 'Grid Step:';
557 MsgLabEsGridColor
= 'Grid Color:';
558 MsgLabEsGridSize
= 'Grid Dot Size:';
559 MsgLabEsBack
= 'Background Color:';
560 MsgLabEsPreview
= 'Texture Preview Background Color:';
561 MsgLabEsMinimap
= 'Mini-map Scale:';
562 MsgLabEsRecent
= 'Recent Maps List Contains:';
563 MsgLabEsLanguage
= 'Language:';
564 MsgLabEsLanguageAuto
= 'System Default';
566 MsgCtrlEsFiles
= 'Files';
568 MsgLabPackSaveTo
= 'Save to:';
569 MsgLabPackMapName
= 'Map Resource Name:';
570 MsgLabPackTextures
= 'Texture Section:';
571 MsgLabPackSky
= 'Sky Section:';
572 MsgLabPackMusic
= 'Music Section:';
574 MsgLabMiniScale
= 'Scale:';
576 MsgBtnApplyProps
= 'Apply Properties';
578 MsgBtnCancel
= 'Cancel';
580 MsgBtnClose
= 'Close';
581 MsgBtnAddClose
= 'Add and Close';
582 MsgBtnTestAgain
= 'Check';
586 MsgBtnNoSound
= 'No sound';
587 MsgBtnTextureAdd
= 'Add texture to the list';
588 MsgBtnTextureDelete
= 'Delete texture from the list';
589 MsgBtnTextureEmpty
= 'Deselect texture';
591 MsgLoadWad
= 'Reading WAD';
592 MsgLoadMap
= 'Loading Map';
593 MsgLoadTextures
= 'Reading Textures';
594 MsgLoadPanels
= 'Reading Panels';
595 MsgLoadItems
= 'Reading Items';
596 MsgLoadMonsters
= 'Reading Monsters';
597 MsgLoadAreas
= 'Reading Areas';
598 MsgLoadTriggers
= 'Reading Triggers';
600 MsgTestAreaWall
= 'Player collides with the wall and will be stuck.';
601 MsgTestAreaWallStr
= 'Area #%d collides with Map (%d:%d)';
602 MsgTestSpawns1
= 'There are several spawn points for First Player on the map';
603 MsgTestSpawns2
= 'There are several spawn points for Second Player on the map';
604 MsgTestSpawns
= 'There are several spawn points on the map. Random one will be used.';
605 MsgTestNoDm
= 'There are no DM spawn points on the map';
606 MsgTestNoDmEx
= 'There are no DM spawn points on the map. Only "Single Player" mode available.';
607 MsgTestMonsterWall
= 'Monster collides with the wall and will be stuck.';
608 MsgTestMonsterWallStr
= 'Monster #%d collides with a map (%d:%d)';
610 MsgOptNoTextures
= 'Texture list is empty';
611 MsgOptDeletedTextures
= 'Deleted Textures:';
612 MsgOptTotalTextures
= 'Textures Total:';
613 MsgOptTexDeleted
= 'Textures Deleted:';
614 MsgOptPanelsOpt
= 'Panels Optimized:';
615 MsgOptWalls
= 'Walls Optimization...';
616 MsgOptFores
= 'Foreground Optimization...';
617 MsgOptBacks
= 'Background Optimization...';
618 MsgOptStairs
= 'Steps Optimization...';
619 MsgOptWater
= 'Water Optimization...';
620 MsgOptAcid1
= 'Acid 1 Optimization...';
621 MsgOptAcid2
= 'Acid 2 Optimization...';
622 MsgOptLifts
= 'Streams Optimization...';
623 MsgOptBlockmon
= 'Monster Boundaries Optimization...';
624 MsgOptTotalPanels
= 'Panels Total:';
625 MsgOptPanelsAfter
= 'Panels after Optimization:';
627 MsgWadSpecialMap
= '<MAP WAD-FILE>';
628 MsgWadSpecialTexs
= '<EXTRA TEXTURES>';
630 MsgFileFilterSaveDFWAD
= 'DFWAD Packed Doom 2D: Forever Maps (*.wad)|*.wad';
631 MsgFileFilterSaveDFZIP
= 'DFZIP Packed Doom 2D: Forever Maps (*.dfz)|*.dfz';
632 MsgFileFilterAll
= 'Doom 2D: Forever Maps (*.dfz, *.wad)|*.wad;*.dfz|Doom 2D: Forever 0.30 Maps (*.ini)|*.ini|All Files (*.*)|*.*';
633 MsgFileFilterWad
= 'Doom 2D: Forever Maps (*.dfz, *.wad)|*.wad;*.dfz|All Files (*.*)|*.*';
634 MsgFileFilterExeMac
= 'Doom 2D Forever.app|*.app|Doom 2D Forever (Unix Executable)|Doom2DF;*';
635 MsgFileFilterExeWin
= 'Doom2DF.exe|Doom2DF.exe;*.exe';
636 MsgFileFilterExeUnix
= 'Doom2DF|Doom2DF;*';
638 MsgEditorTitle
= 'Doom 2D: Forever Map Editor';
641 BoolNames
: Array [False..True] of String;
642 DirNames
: Array [D_LEFT
..D_RIGHT
] of String;
643 DirNamesAdv
: Array [0..3] of String;
644 DirButtonNames
: Array [1..4] of String;
645 PANELNAMES
: Array[0..13] of String;
646 EffectNames
: Array [EFFECT_NONE
..EFFECT_FIRE
] of String;
647 ItemNames
: Array [ITEM_MEDKIT_SMALL
..ITEM_MAX
] of String;
648 ShotNames
: Array [TRIGGER_SHOT_PISTOL
..TRIGGER_SHOT_MAX
] of String;
649 MonsterNames
: Array [MONSTER_DEMON
..MONSTER_MAN
] of String;
650 AreaNames
: Array [AREA_PLAYERPOINT1
..AREA_BLUETEAMPOINT
] of String;
651 TriggerNames
: Array [TRIGGER_EXIT
..TRIGGER_MAX
] of String;
653 function g_Language_GetList (): TStringList
;
654 procedure g_Language_Set(lang
: String);
659 g_options
, IniFiles
, gettext
, LazFileUtils
,
660 SysUtils
, e_log
, f_main
, f_about
, f_activationtype
,
661 f_addresource_sky
, f_addresource_sound
,
662 f_addresource_texture
, f_choosetype
, f_keys
, f_mapcheck
,
663 f_mapoptions
, f_mapoptimization
, f_options
,
664 f_packmap
, f_savemap
, f_saveminimap
, f_selectmap
, Forms
, utils
;
667 InSourceLanguage
= 'en_US';
669 procedure SetupArrays();
675 BoolNames
[False] := MsgArrayBoolFalse
;
676 BoolNames
[True] := MsgArrayBoolTrue
;
679 DirNames
[D_LEFT
] := MsgArrayDirLeft
;
680 DirNames
[D_RIGHT
] := MsgArrayDirRight
;
682 // Смены направления:
683 DirNamesAdv
[0] := MsgArrayDirSame
;
684 DirNamesAdv
[1] := MsgArrayDirLeft
;
685 DirNamesAdv
[2] := MsgArrayDirRight
;
686 DirNamesAdv
[3] := MsgArrayDirReversed
;
688 // Направление (на кнопках):
689 DirButtonNames
[1] := MsgArrayDirbtnLeft
;
690 DirButtonNames
[2] := MsgArrayDirbtnRight
;
691 DirButtonNames
[3] := MsgArrayDirbtnUp
;
692 DirButtonNames
[4] := MsgArrayDirbtnDown
;
695 PANELNAMES
[0] := MsgArrayPanelWall
;
696 PANELNAMES
[1] := MsgArrayPanelBack
;
697 PANELNAMES
[2] := MsgArrayPanelFront
;
698 PANELNAMES
[3] := MsgArrayPanelDoorOpen
;
699 PANELNAMES
[4] := MsgArrayPanelDoorClose
;
700 PANELNAMES
[5] := MsgArrayPanelStair
;
701 PANELNAMES
[6] := MsgArrayPanelWater
;
702 PANELNAMES
[7] := MsgArrayPanelAcid1
;
703 PANELNAMES
[8] := MsgArrayPanelAcid2
;
704 PANELNAMES
[9] := MsgArrayPanelLiftUp
;
705 PANELNAMES
[10] := MsgArrayPanelLiftDown
;
706 PANELNAMES
[11] := MsgArrayPanelLiftLeft
;
707 PANELNAMES
[12] := MsgArrayPanelLiftRight
;
708 PANELNAMES
[13] := MsgArrayPanelBlockmon
;
710 // Названия эффектов:
711 EffectNames
[EFFECT_NONE
] := MsgArrayFxNone
;
712 EffectNames
[EFFECT_TELEPORT
] := MsgArrayFxTeleport
;
713 EffectNames
[EFFECT_RESPAWN
] := MsgArrayFxRespawn
;
714 EffectNames
[EFFECT_FIRE
] := MsgArrayFxFire
;
716 // Названия предметов:
717 ItemNames
[ITEM_MEDKIT_SMALL
] := MsgArrayItemMedkit
;
718 ItemNames
[ITEM_MEDKIT_LARGE
] := MsgArrayItemLargeMedkit
;
719 ItemNames
[ITEM_MEDKIT_BLACK
] := MsgArrayItemBlackMedkit
;
720 ItemNames
[ITEM_ARMOR_GREEN
] := MsgArrayItemGreenArmor
;
721 ItemNames
[ITEM_ARMOR_BLUE
] := MsgArrayItemBlueArmor
;
722 ItemNames
[ITEM_SPHERE_BLUE
] := MsgArrayItemBlueSphere
;
723 ItemNames
[ITEM_SPHERE_WHITE
] := MsgArrayItemMegasphere
;
724 ItemNames
[ITEM_SUIT
] := MsgArrayItemHazSuit
;
725 ItemNames
[ITEM_OXYGEN
] := MsgArrayItemOxygen
;
726 ItemNames
[ITEM_INVUL
] := MsgArrayItemInvulnerability
;
727 ItemNames
[ITEM_WEAPON_SAW
] := MsgArrayItemChainsaw
;
728 ItemNames
[ITEM_WEAPON_SHOTGUN1
] := MsgArrayItemShotgun
;
729 ItemNames
[ITEM_WEAPON_SHOTGUN2
] := MsgArrayItemDbShotgun
;
730 ItemNames
[ITEM_WEAPON_CHAINGUN
] := MsgArrayItemChaingun
;
731 ItemNames
[ITEM_WEAPON_ROCKETLAUNCHER
] := MsgArrayItemRocketLauncher
;
732 ItemNames
[ITEM_WEAPON_PLASMA
] := MsgArrayItemPlasmaRifle
;
733 ItemNames
[ITEM_WEAPON_BFG
] := MsgArrayItemBfg
;
734 ItemNames
[ITEM_WEAPON_SUPERPULEMET
] := MsgArrayItemSuperMinigun
;
735 ItemNames
[ITEM_WEAPON_FLAMETHROWER
] := MsgArrayItemFlamethrower
;
736 ItemNames
[ITEM_AMMO_BULLETS
] := MsgArrayItemClip
;
737 ItemNames
[ITEM_AMMO_BULLETS_BOX
] := MsgArrayItemAmmoBox
;
738 ItemNames
[ITEM_AMMO_SHELLS
] := MsgArrayItem4Shells
;
739 ItemNames
[ITEM_AMMO_SHELLS_BOX
] := MsgArrayItem25Shells
;
740 ItemNames
[ITEM_AMMO_ROCKET
] := MsgArrayItem1Rocket
;
741 ItemNames
[ITEM_AMMO_ROCKET_BOX
] := MsgArrayItemRocketBox
;
742 ItemNames
[ITEM_AMMO_CELL
] := MsgArrayItemCell
;
743 ItemNames
[ITEM_AMMO_CELL_BIG
] := MsgArrayItemLargeCell
;
744 ItemNames
[ITEM_AMMO_FUELCAN
] := MsgArrayItemFuelcan
;
745 ItemNames
[ITEM_AMMO_BACKPACK
] := MsgArrayItemBackpack
;
746 ItemNames
[ITEM_KEY_RED
] := MsgArrayItemKeyRed
;
747 ItemNames
[ITEM_KEY_GREEN
] := MsgArrayItemKeyGreen
;
748 ItemNames
[ITEM_KEY_BLUE
] := MsgArrayItemKeyBlue
;
749 ItemNames
[ITEM_WEAPON_KASTET
] := '?';
750 ItemNames
[ITEM_WEAPON_PISTOL
] := '??';
751 ItemNames
[ITEM_BOTTLE
] := MsgArrayItemBottle
;
752 ItemNames
[ITEM_HELMET
] := MsgArrayItemHelmet
;
753 ItemNames
[ITEM_JETPACK
] := MsgArrayItemJetpack
;
754 ItemNames
[ITEM_INVIS
] := MsgArrayItemInvis
;
756 // Названия снарядов:
757 ShotNames
[TRIGGER_SHOT_PISTOL
] := MsgArrayShotPistol
;
758 ShotNames
[TRIGGER_SHOT_BULLET
] := MsgArrayShotBullet
;
759 ShotNames
[TRIGGER_SHOT_SHOTGUN
] := MsgArrayShotShotgun
;
760 ShotNames
[TRIGGER_SHOT_SSG
] := MsgArrayShotSsg
;
761 ShotNames
[TRIGGER_SHOT_IMP
] := MsgArrayShotImp
;
762 ShotNames
[TRIGGER_SHOT_PLASMA
] := MsgArrayShotPlasma
;
763 ShotNames
[TRIGGER_SHOT_SPIDER
] := MsgArrayShotSpider
;
764 ShotNames
[TRIGGER_SHOT_CACO
] := MsgArrayShotCaco
;
765 ShotNames
[TRIGGER_SHOT_BARON
] := MsgArrayShotBaron
;
766 ShotNames
[TRIGGER_SHOT_MANCUB
] := MsgArrayShotMancub
;
767 ShotNames
[TRIGGER_SHOT_REV
] := MsgArrayShotRev
;
768 ShotNames
[TRIGGER_SHOT_ROCKET
] := MsgArrayShotRocket
;
769 ShotNames
[TRIGGER_SHOT_BFG
] := MsgArrayShotBfg
;
770 ShotNames
[TRIGGER_SHOT_EXPL
] := MsgArrayShotExpl
;
771 ShotNames
[TRIGGER_SHOT_BFGEXPL
] := MsgArrayShotBfgexpl
;
772 ShotNames
[TRIGGER_SHOT_FLAME
] := MsgArrayShotFlame
;
774 // Названия монстров:
775 MonsterNames
[MONSTER_DEMON
] := MsgArrayMonDemon
;
776 MonsterNames
[MONSTER_IMP
] := MsgArrayMonImp
;
777 MonsterNames
[MONSTER_ZOMBY
] := MsgArrayMonZombie
;
778 MonsterNames
[MONSTER_SERG
] := MsgArrayMonSergeant
;
779 MonsterNames
[MONSTER_CYBER
] := MsgArrayMonCyber
;
780 MonsterNames
[MONSTER_CGUN
] := MsgArrayMonCgun
;
781 MonsterNames
[MONSTER_BARON
] := MsgArrayMonHellBaron
;
782 MonsterNames
[MONSTER_KNIGHT
] := MsgArrayMonHellKnight
;
783 MonsterNames
[MONSTER_CACO
] := MsgArrayMonCacodemon
;
784 MonsterNames
[MONSTER_SOUL
] := MsgArrayMonLostSoul
;
785 MonsterNames
[MONSTER_PAIN
] := MsgArrayMonPainElemental
;
786 MonsterNames
[MONSTER_SPIDER
] := MsgArrayMonMastermind
;
787 MonsterNames
[MONSTER_BSP
] := MsgArrayMonArachnatron
;
788 MonsterNames
[MONSTER_MANCUB
] := MsgArrayMonMancubus
;
789 MonsterNames
[MONSTER_SKEL
] := MsgArrayMonRevenant
;
790 MonsterNames
[MONSTER_VILE
] := MsgArrayMonArchvile
;
791 MonsterNames
[MONSTER_FISH
] := MsgArrayMonFish
;
792 MonsterNames
[MONSTER_BARREL
] := MsgArrayMonBarrel
;
793 MonsterNames
[MONSTER_ROBO
] := MsgArrayMonRobot
;
794 MonsterNames
[MONSTER_MAN
] := MsgArrayMonPrikolist
;
796 // Названия областей:
797 AreaNames
[AREA_PLAYERPOINT1
] := MsgArrayAreaPlayerOne
;
798 AreaNames
[AREA_PLAYERPOINT2
] := MsgArrayAreaPlayerTwo
;
799 AreaNames
[AREA_DMPOINT
] := MsgArrayAreaDm
;
800 AreaNames
[AREA_REDFLAG
] := MsgArrayAreaFlagRed
;
801 AreaNames
[AREA_BLUEFLAG
] := MsgArrayAreaFlagBlue
;
802 AreaNames
[AREA_DOMFLAG
] := MsgArrayAreaFlagDom
;
803 AreaNames
[AREA_REDTEAMPOINT
] := MsgArrayAreaTeamRed
;
804 AreaNames
[AREA_BLUETEAMPOINT
] := MsgArrayAreaTeamBlue
;
806 // Названия триггеров:
807 TriggerNames
[TRIGGER_EXIT
] := MsgArrayTrExit
;
808 TriggerNames
[TRIGGER_TELEPORT
] := MsgArrayTrTeleport
;
809 TriggerNames
[TRIGGER_OPENDOOR
] := MsgArrayTrDoorOpen
;
810 TriggerNames
[TRIGGER_CLOSEDOOR
] := MsgArrayTrDoorClose
;
811 TriggerNames
[TRIGGER_DOOR
] := MsgArrayTrDoorSwitch
;
812 TriggerNames
[TRIGGER_DOOR5
] := MsgArrayTrDoor5Sec
;
813 TriggerNames
[TRIGGER_CLOSETRAP
] := MsgArrayTrTrapClose
;
814 TriggerNames
[TRIGGER_TRAP
] := MsgArrayTrTrap
;
815 TriggerNames
[TRIGGER_PRESS
] := MsgArrayTrExtend
;
816 TriggerNames
[TRIGGER_SECRET
] := MsgArrayTrSecret
;
817 TriggerNames
[TRIGGER_LIFTUP
] := MsgArrayTrLiftUp
;
818 TriggerNames
[TRIGGER_LIFTDOWN
] := MsgArrayTrLiftDown
;
819 TriggerNames
[TRIGGER_LIFT
] := MsgArrayTrLiftSwitch
;
820 TriggerNames
[TRIGGER_TEXTURE
] := MsgArrayTrTexture
;
821 TriggerNames
[TRIGGER_ON
] := MsgArrayTrOn
;
822 TriggerNames
[TRIGGER_OFF
] := MsgArrayTrOff
;
823 TriggerNames
[TRIGGER_ONOFF
] := MsgArrayTrSwitch
;
824 TriggerNames
[TRIGGER_SOUND
] := MsgArrayTrSound
;
825 TriggerNames
[TRIGGER_SPAWNMONSTER
] := MsgArrayTrSpawnMonster
;
826 TriggerNames
[TRIGGER_SPAWNITEM
] := MsgArrayTrSpawnItem
;
827 TriggerNames
[TRIGGER_MUSIC
] := MsgArrayTrMusic
;
828 TriggerNames
[TRIGGER_PUSH
] := MsgArrayTrPush
;
829 TriggerNames
[TRIGGER_SCORE
] := MsgArrayTrScore
;
830 TriggerNames
[TRIGGER_MESSAGE
] := MsgArrayTrMessage
;
831 TriggerNames
[TRIGGER_DAMAGE
] := MsgArrayTrDamage
;
832 TriggerNames
[TRIGGER_HEALTH
] := MsgArrayTrHealth
;
833 TriggerNames
[TRIGGER_SHOT
] := MsgArrayTrShot
;
834 TriggerNames
[TRIGGER_EFFECT
] := MsgArrayTrEffect
;
836 // Установка значений в панели выбора объектов:
839 lbPanelType
.Items
.Clear();
840 for i
:= 0 to High(PANELNAMES
) do
841 lbPanelType
.Items
.Add(PANELNAMES
[i
]);
842 lbPanelType
.ItemIndex
:= 0;
845 for i
:= ITEM_MEDKIT_SMALL
to ITEM_KEY_BLUE
do
846 lbItemList
.Items
.Add(ItemNames
[i
]);
847 lbItemList
.Items
.Add(ItemNames
[ITEM_BOTTLE
]);
848 lbItemList
.Items
.Add(ItemNames
[ITEM_HELMET
]);
849 lbItemList
.Items
.Add(ItemNames
[ITEM_JETPACK
]);
850 lbItemList
.Items
.Add(ItemNames
[ITEM_INVIS
]);
851 lbItemList
.Items
.Add(ItemNames
[ITEM_WEAPON_FLAMETHROWER
]);
852 lbItemList
.Items
.Add(ItemNames
[ITEM_AMMO_FUELCAN
]);
854 lbMonsterList
.Clear();
855 for i
:= MONSTER_DEMON
to MONSTER_MAN
do
856 lbMonsterList
.Items
.Add(MonsterNames
[i
]);
859 for i
:= AREA_PLAYERPOINT1
to AREA_BLUETEAMPOINT
do
860 lbAreasList
.Items
.Add(AreaNames
[i
]);
862 lbTriggersList
.Clear();
863 for i
:= Low(TriggerNames
) to High(TriggerNames
) do
864 lbTriggersList
.Items
.Add(TriggerNames
[i
]);
866 clbActivationType
.Clear();
867 clbActivationType
.Items
.Add(MsgCtrlActPlayerClose
);
868 clbActivationType
.Items
.Add(MsgCtrlActMonsterClose
);
869 clbActivationType
.Items
.Add(MsgCtrlActPlayerPress
);
870 clbActivationType
.Items
.Add(MsgCtrlActMonsterPress
);
871 clbActivationType
.Items
.Add(MsgCtrlActShot
);
872 clbActivationType
.Items
.Add(MsgCtrlActNoMonster
);
875 clbKeys
.Items
.Add(MsgCtrlKeysRed
);
876 clbKeys
.Items
.Add(MsgCtrlKeysGreen
);
877 clbKeys
.Items
.Add(MsgCtrlKeysBlue
);
878 clbKeys
.Items
.Add(MsgCtrlKeysTeamRed
);
879 clbKeys
.Items
.Add(MsgCtrlKeysTeamBlue
);
883 procedure SetupCaptions();
884 var i
: Integer; s
: AnsiString;
890 s
:= g_GetBuildHash(false);
891 if s
= 'custom build' then
892 s
:= s
+ ' by ' + g_GetBuilderName() + ' ' + EDITOR_BUILDDATE
+ ' ' + EDITOR_BUILDTIME
;
893 FormCaption
:= MsgEditorTitle
+ ' (' + s
+ ')';
894 i
:= Pos('-', Caption
);
897 Caption
:= FormCaption
+ ' ' + Copy(Caption
, i
, Length(Caption
)-i
+1);
900 Caption
:= FormCaption
;
903 miAppleAbout
.Caption
:= MsgMenuAppleAbout
;
904 miApplePref
.Caption
:= MsgMenuApplePref
;
906 miMenuFile
.Caption
:= MsgMenuFile
;
907 miNewMap
.Caption
:= MsgMenuFileNew
;
908 miOpenMap
.Caption
:= MsgMenuFileOpen
;
909 miMacRecentSubMenu
.Caption
:= MsgMenuFileRecentMac
;
910 miMacRecentClear
.Caption
:= MsgMenuFileRecentClearMac
;
911 miSaveMap
.Caption
:= MsgMenuFileSave
;
912 miSaveMapAs
.Caption
:= MsgMenuFileSaveAs
;
913 miOpenWadMap
.Caption
:= MsgMenuFileOpenWad
;
914 miReopenMap
.Caption
:= MsgMenuFileReopen
;
915 miSaveMiniMap
.Caption
:= MsgMenuFileSaveMini
;
916 miDeleteMap
.Caption
:= MsgMenuFileDelete
;
917 miPackMap
.Caption
:= MsgMenuFilePackMap
;
918 miWinRecent
.Caption
:= MsgMenuFileRecentWin
;
919 miExit
.Caption
:= MsgMenuFileExitWin
;
921 miMenuEdit
.Caption
:= MsgMenuEdit
;
922 miUndo
.Caption
:= MsgMenuEditUndo
;
923 miCopy
.Caption
:= MsgMenuEditCopy
;
924 miCut
.Caption
:= MsgMenuEditCut
;
925 miPaste
.Caption
:= MsgMenuEditPaste
;
926 miSelectAll
.Caption
:= MsgMenuEditSelectAll
;
927 miSnapToGrid
.Caption
:= MsgMenuEditSnapGrid
;
928 miSwitchGrid
.Caption
:= MsgMenuEditStepGrid
;
929 miToFore
.Caption
:= MsgMenuEditToFore
;
930 miToBack
.Caption
:= MsgMenuEditToBack
;
931 miMapOptions
.Caption
:= MsgMenuEditMapProps
;
932 miOptions
.Caption
:= MsgMenuEditPrefWin
;
934 miMenuView
.Caption
:= MsgMenuView
;
935 miLayers
.Caption
:= MsgMenuViewLayers
;
936 miLayer1
.Caption
:= MsgMenuLayerBack
;
937 miLayer2
.Caption
:= MsgMenuLayerWall
;
938 miLayer3
.Caption
:= MsgMenuLayerFore
;
939 miLayer4
.Caption
:= MsgMenuLayerStair
;
940 miLayer5
.Caption
:= MsgMenuLayerWater
;
941 miLayer6
.Caption
:= MsgMenuLayerItem
;
942 miLayer7
.Caption
:= MsgMenuLayerMonster
;
943 miLayer8
.Caption
:= MsgMenuLayerArea
;
944 miLayer9
.Caption
:= MsgMenuLayerTrigger
;
945 miMiniMap
.Caption
:= MsgMenuViewMinimap
;
946 miShowEdges
.Caption
:= MsgMenuViewBounds
;
947 miMapPreview
.Caption
:= MsgMenuViewPreview
;
949 miMenuService
.Caption
:= MsgMenuServ
;
950 miCheckMap
.Caption
:= MsgMenuServTest
;
951 miOptimmization
.Caption
:= MsgMenuServOpt
;
952 miTestMap
.Caption
:= MsgMenuServLaunch
;
954 miMenuWindow
.Caption
:= MsgMenuWindow
;
955 miMacMinimize
.Caption
:= MsgMenuWindowMinimize
;
956 miMacZoom
.Caption
:= MsgMenuWindowZoom
;
958 miMenuHelp
.Caption
:= MsgMenuHelp
;
959 miAbout
.Caption
:= MsgMenuHelpAboutWin
;
962 tbNewMap
.Hint
:= MsgMenuTbNew
;
963 tbOpenMap
.Hint
:= MsgMenuTbOpen
;
964 tbSaveMap
.Hint
:= MsgMenuTbSave
;
965 tbOpenWadMap
.Hint
:= MsgMenuTbOpenWad
;
966 tbShowMap
.Hint
:= MsgMenuTbMinimap
;
967 tbShow
.Hint
:= MsgMenuTbLayers
;
968 miLayerP1
.Caption
:= MsgMenuLayerBack
;
969 miLayerP2
.Caption
:= MsgMenuLayerWall
;
970 miLayerP3
.Caption
:= MsgMenuLayerFore
;
971 miLayerP4
.Caption
:= MsgMenuLayerStair
;
972 miLayerP5
.Caption
:= MsgMenuLayerWater
;
973 miLayerP6
.Caption
:= MsgMenuLayerItem
;
974 miLayerP7
.Caption
:= MsgMenuLayerMonster
;
975 miLayerP8
.Caption
:= MsgMenuLayerArea
;
976 miLayerP9
.Caption
:= MsgMenuLayerTrigger
;
977 tbGridOn
.Hint
:= MsgMenuTbGrid
;
978 tbGrid
.Hint
:= MsgMenuTbGridStep
;
979 tbTestMap
.Hint
:= MsgMenuTbLaunch
;
981 // Object property editor:
982 bApplyProperty
.Caption
:= MsgBtnApplyProps
;
983 vleObjectProperty
.TitleCaptions
[0] := MsgCtrlPropKey
;
984 vleObjectProperty
.TitleCaptions
[1] := MsgCtrlPropValue
;
987 tsPanels
.Caption
:= MsgCtrlPanels
;
988 lbPanelType
.Hint
:= MsgPropPanelType
;
989 lbTextureList
.Hint
:= MsgCtrlListTexture
;
990 LabelTxW
.Caption
:= MsgLabTexWidth
;
991 LabelTxH
.Caption
:= MsgLabTexHeight
;
992 cbPreview
.Caption
:= MsgCtrlPreview
;
993 bbAddTexture
.Hint
:= MsgBtnTextureAdd
;
994 bbRemoveTexture
.Hint
:= MsgBtnTextureDelete
;
995 bClearTexture
.Hint
:= MsgBtnTextureEmpty
;
998 tsItems
.Caption
:= MsgCtrlItems
;
999 lbItemList
.Hint
:= MsgCtrlListItem
;
1000 cbOnlyDM
.Caption
:= MsgCtrlItemDm
;
1001 cbFall
.Caption
:= MsgCtrlItemFalls
;
1004 tsMonsters
.Caption
:= MsgCtrlMonsters
;
1005 lbMonsterList
.Hint
:= MsgCtrlListMonster
;
1006 rbMonsterLeft
.Caption
:= MsgCtrlLeft
;
1007 rbMonsterRight
.Caption
:= MsgCtrlRight
;
1010 tsAreas
.Caption
:= MsgCtrlAreas
;
1011 lbAreasList
.Hint
:= MsgCtrlListArea
;
1012 rbAreaLeft
.Caption
:= MsgCtrlLeft
;
1013 rbAreaRight
.Caption
:= MsgCtrlRight
;
1016 tsTriggers
.Caption
:= MsgCtrlTriggers
;
1017 lbTriggersList
.Hint
:= MsgCtrlListTrigger
;
1018 clbActivationType
.Hint
:= MsgCtrlListActive
;
1019 clbKeys
.Hint
:= MsgCtrlListKeys
;
1022 // Форма "О программе":
1025 Caption
:= MsgCapAbout
;
1026 LabelTitle
.Caption
:= MsgEditorTitle
;
1027 LabelVer
.Caption
:= MsgLabAboutVer
;
1028 LabelAuthor
.Caption
:= MsgLabAboutAuthor
;
1029 LabelAuthor2
.Caption
:= MsgLabAboutAuthor2
;
1030 LabelMail
.Caption
:= MsgLabAboutMail
;
1031 LabelMail2
.Caption
:= MsgLabAboutMail2
;
1032 LabelSite
.Caption
:= MsgLabAboutSite
;
1033 LabelHttp
.Caption
:= MsgLabAboutHttp
;
1036 // Форма "Тип активации":
1037 with ActivationTypeForm
do
1039 Caption
:= MsgCapAct
;
1040 cbPlayerCollide
.Caption
:= MsgCtrlActPlayerClose
;
1041 cbMonsterCollide
.Caption
:= MsgCtrlActMonsterClose
;
1042 cbPlayerPress
.Caption
:= MsgCtrlActPlayerPress
;
1043 cbMonsterPress
.Caption
:= MsgCtrlActMonsterPress
;
1044 cbShot
.Caption
:= MsgCtrlActShot
;
1045 cbNoMonster
.Caption
:= MsgCtrlActNoMonster
;
1046 bOK
.Caption
:= MsgBtnOk
;
1049 // Форма "Выбор текстуры для неба":
1052 Caption
:= MsgCapAddSky
;
1053 LabelWADs
.Caption
:= MsgLabAddWads
;
1054 LabelSections
.Caption
:= MsgLabAddSections
;
1055 bOK
.Caption
:= MsgBtnOk
;
1056 bCancel
.Caption
:= MsgBtnCancel
;
1059 // Форма "Выбор звука или музыки":
1060 with AddSoundForm
do
1062 Caption
:= MsgCapAddSound
;
1063 LabelWADs
.Caption
:= MsgLabAddWads
;
1064 LabelSections
.Caption
:= MsgLabAddSections
;
1065 bOK
.Caption
:= MsgBtnOk
;
1066 bCancel
.Caption
:= MsgBtnCancel
;
1067 bEmpty
.Caption
:= MsgBtnNoSound
;
1070 // Форма "Выбор текстуры":
1071 with AddTextureForm
do
1073 Caption
:= MsgCapAddTexture
;
1074 LabelWADs
.Caption
:= MsgLabAddWads
;
1075 LabelSections
.Caption
:= MsgLabAddSections
;
1076 bAddTexture
.Caption
:= MsgBtnAdd
;
1077 bClose
.Caption
:= MsgBtnClose
;
1078 bAddClose
.Caption
:= MsgBtnAddClose
;
1081 // Форма "Выбор типа монстра" / "Выбор типа предмета":
1082 ChooseTypeForm
.bOK
.Caption
:= MsgBtnOk
;
1087 Caption
:= MsgCapKeys
;
1088 cbRedKey
.Caption
:= MsgCtrlKeysRed
;
1089 cbGreenKey
.Caption
:= MsgCtrlKeysGreen
;
1090 cbBlueKey
.Caption
:= MsgCtrlKeysBlue
;
1091 cbRedTeam
.Caption
:= MsgCtrlKeysTeamRed
;
1092 cbBlueTeam
.Caption
:= MsgCtrlKeysTeamBlue
;
1093 bOK
.Caption
:= MsgBtnOk
;
1096 // Форма "Проверка карты":
1097 with MapCheckForm
do
1099 Caption
:= MsgCapTest
;
1100 bCheckMap
.Caption
:= MsgBtnTestAgain
;
1101 bClose
.Caption
:= MsgBtnClose
;
1104 // Форма "Оптимизация карты":
1105 with MapOptimizationForm
do
1107 Caption
:= MsgCapOpt
;
1108 // Выбор оптимизации:
1109 GroupBoxOpt
.Caption
:= MsgCtrlOptGb
;
1110 rbTexturesOptimization
.Caption
:= MsgCtrlOptTexture
;
1111 rbPanelsOptimization
.Caption
:= MsgCtrlOptPanel
;
1112 // Оптимизация текстур:
1113 bBeginTextureOptimization
.Caption
:= MsgBtnStart
;
1114 // Оптимизация панелей:
1115 cbOptimizeWalls
.Caption
:= MsgCtrlOptWall
;
1116 cbOptimizeForeGround
.Caption
:= MsgCtrlOptFore
;
1117 cbOptimizeBackGround
.Caption
:= MsgCtrlOptBack
;
1118 cbOptimizeSteps
.Caption
:= MsgCtrlOptStair
;
1119 cbOptimizeWater
.Caption
:= MsgCtrlOptWater
;
1120 cbOptimizeAcid1
.Caption
:= MsgCtrlOptAcid1
;
1121 cbOptimizeAcid2
.Caption
:= MsgCtrlOptAcid2
;
1122 cbOptimizeLift
.Caption
:= MsgCtrlOptLift
;
1123 cbOptimizeBlockMon
.Caption
:= MsgCtrlOptBlockmon
;
1124 bBeginPanelsOptimization
.Caption
:= MsgBtnStart
;
1127 // Форма "Параметры карты":
1128 with MapOptionsForm
do
1130 Caption
:= MsgCapSets
;
1131 // Основные параметры:
1132 LabelName
.Caption
:= MsgLabSetsName
;
1133 LabelDesc
.Caption
:= MsgLabSetsDesc
;
1134 LabelAuthor
.Caption
:= MsgLabSetsAuthor
;
1135 LabelBack
.Caption
:= MsgLabSetsBack
;
1136 LabelMusic
.Caption
:= MsgLabSetsMusic
;
1138 GBStats
.Caption
:= MsgCtrlSetsStats
;
1139 LabelTexs
.Caption
:= MsgLabSetsTextures
;
1140 LabelPanels
.Caption
:= MsgLabSetsPanels
;
1141 LabelItems
.Caption
:= MsgLabSetsItems
;
1142 LabelMonsters
.Caption
:= MsgLabSetsMonsters
;
1143 LabelAreas
.Caption
:= MsgLabSetsAreas
;
1144 LabelTriggers
.Caption
:= MsgLabSetsTriggers
;
1146 GBSizes
.Caption
:= MsgCtrlSetsSizes
;
1147 LabelWidth
.Caption
:= MsgLabSetsWidth
;
1148 LabelHeight
.Caption
:= MsgLabSetsHeight
;
1149 LabelCurSize
.Caption
:= MsgLabSetsSizes
;
1150 LabelMapMove
.Caption
:= MsgLabSetsMapmove
;
1151 cbSnapping
.Caption
:= MsgLabSetsSnapping
;
1153 bOK
.Caption
:= MsgBtnOk
;
1154 bCancel
.Caption
:= MsgBtnCancel
;
1157 // Form preferences:
1160 Caption
:= MsgCapEs
;
1161 bOK
.Caption
:= MsgBtnOk
;
1162 bCancel
.Caption
:= MsgBtnCancel
;
1164 TabGeneral
.Caption
:= MsgCtrlEsGeneral
;
1165 cbShowDots
.Caption
:= MsgCtrlEsGrid
;
1166 cbShowTexture
.Caption
:= MsgCtrlEsTexture
;
1167 cbShowSize
.Caption
:= MsgCtrlEsPanelSize
;
1168 cbCheckerboard
.Caption
:= MsgCtrlEsCheckerboard
;
1169 LabelGrid
.Caption
:= MsgLabEsGrid
;
1170 LabelGridCol
.Caption
:= MsgLabEsGridColor
;
1171 LabelGridSize
.Caption
:= MsgLabEsGridSize
;
1172 LabelBack
.Caption
:= MsgLabEsBack
;
1173 LabelPreview
.Caption
:= MsgLabEsPreview
;
1174 LabelMinimap
.Caption
:= MsgLabEsMinimap
;
1175 LabelLanguage
.Caption
:= MsgLabEsLanguage
;
1177 TabFiles
.Caption
:= MsgCtrlEsFiles
;
1178 LabelRecent
.Caption
:= MsgLabEsRecent
;
1180 TabTesting
.Caption
:= MsgCtrlEsTesting
;
1181 rbDM
.Caption
:= MsgCtrlLaunchDm
;
1182 rbTDM
.Caption
:= MsgCtrlLaunchTdm
;
1183 rbCTF
.Caption
:= MsgCtrlLaunchCtf
;
1184 rbCOOP
.Caption
:= MsgCtrlLaunchCoop
;
1185 cbTwoPlayers
.Caption
:= MsgCtrlLaunch2p
;
1186 cbTeamDamage
.Caption
:= MsgCtrlLaunchFf
;
1187 cbAllowExit
.Caption
:= MsgCtrlLaunchExit
;
1188 cbWeaponStay
.Caption
:= MsgCtrlLaunchWeapons
;
1189 cbMonstersDM
.Caption
:= MsgCtrlLaunchMonsters
;
1190 cbMapOnce
.Caption
:= MsgCtrlLaunchClose
;
1191 LabelTime
.Caption
:= MsgLabLaunchTime
;
1192 LabelSecs
.Caption
:= MsgLabLaunchSecs
;
1193 LabelScore
.Caption
:= MsgLabLaunchScore
;
1194 {$IF DEFINED(DARWIN)}
1195 LabelPath
.Caption
:= MsgLabLaunchPathMac
;
1196 ExeEdit
.DialogTitle
:= MsgCtrlLaunchOpen
;
1197 ExeEdit
.Filter
:= MsgFileFilterExeMac
;
1198 {$ELSEIF DEFINED(WINDOWS)}
1199 LabelPath
.Caption
:= MsgLabLaunchPathWin
;
1200 ExeEdit
.DialogTitle
:= MsgCtrlLaunchOpen
;
1201 ExeEdit
.Filter
:= MsgFileFilterExeWin
;
1203 LabelPath
.Caption
:= MsgLabLaunchPathUnix
;
1204 ExeEdit
.DialogTitle
:= MsgCtrlLaunchOpen
;
1205 ExeEdit
.Filter
:= MsgFileFilterExeUnix
;
1207 LabelArgs
.Caption
:= MsgLabLaunchArgs
;
1210 // Форма "Упаковать карту":
1213 Caption
:= MsgCapPack
;
1214 bPack
.Caption
:= MsgBtnPack
;
1215 LabelSaveTo
.Caption
:= MsgLabPackSaveTo
;
1216 LabelMapName
.Caption
:= MsgLabPackMapName
;
1218 cbTextrures
.Caption
:= MsgCtrlPackTextures
;
1219 LabelTextures
.Caption
:= MsgLabPackTextures
;
1220 cbSky
.Caption
:= MsgCtrlPackSky
;
1221 LabelSky
.Caption
:= MsgLabPackSky
;
1222 cbMusic
.Caption
:= MsgCtrlPackMusic
;
1223 LabelMusic
.Caption
:= MsgLabPackMusic
;
1224 cbAdd
.Caption
:= MsgCtrlPackAdd
;
1225 cbNonStandart
.Caption
:= MsgCtrlPackNonStd
;
1228 // Форма "Сохранить карту":
1231 Caption
:= MsgCapSave
;
1232 bOK
.Caption
:= MsgBtnOk
;
1233 bCancel
.Caption
:= MsgBtnCancel
;
1236 // Форма "Сохранить мини-карту":
1237 with SaveMiniMapForm
do
1239 Caption
:= MsgCapMini
;
1240 LabelScale
.Caption
:= MsgLabMiniScale
;
1241 bSave
.Caption
:= MsgBtnSave
;
1242 bClose
.Caption
:= MsgBtnClose
;
1245 // Форма "Выбор карты":
1246 with SelectMapForm
do
1248 Caption
:= MsgCapSelect
;
1249 bOK
.Caption
:= MsgBtnOk
;
1250 bCancel
.Caption
:= MsgBtnCancel
;
1253 // Заголовок приложения:
1254 Application
.Title
:= MsgEditorTitle
;
1260 ignored
: TStringList
;
1264 function gResourceItarator (name
, value
: AnsiString; hash
: LongInt; arg
: Pointer): AnsiString;
1265 var res
: PResArg
; orig
: AnsiString;
1267 res
:= PResArg(arg
);
1268 orig
:= res
.ini
.ReadString('resourcestring', name
+ '$', '');
1269 if (orig
= '') or (orig
= value
) then
1271 if res
.ini
.ValueExists('resourcestring', name
) then
1273 result
:= res
.ini
.ReadString('resourcestring', name
, '');
1278 if res
.ignored
.IndexOf(Copy(name
, 1, Pos('.', name
) - 1)) < 0 then
1279 e_WriteLog(' Seems that key ' + name
+ ' not translated', MSG_NOTIFY
);
1284 e_WriteLog(' Original resource string for ' + name
+ ' do not match, translation are outdated?', MSG_WARNING
);
1285 e_WriteLog(' [' + value
+ '] -> [' + orig
+ ']', MSG_WARNING
);
1290 procedure gSetLanguageFormStream (const lang
: AnsiString; stream
: TStream
; out ok
: Boolean);
1295 res
.ini
:= TIniFile
.Create(stream
, [ifoStripComments
, ifoStripQuotes
, ifoEscapeLineFeeds
]);
1299 if res
.ini
<> nil then
1302 ok
:= res
.ini
.SectionExists('resourcestring');
1305 res
.ignored
:= TStringList
.Create
;
1306 res
.ignored
.CaseSensitive
:= False;
1307 res
.ini
.ReadSection('ignore', res
.ignored
);
1309 SetResourceStrings(gResourceItarator
, @res
);
1316 if not ok
then e_WriteLog('Translation file for ' + lang
+ ' are invalid ', MSG_FATALERROR
);
1319 procedure gSetLanguageFromFile (const lang
: AnsiString; out ok
: Boolean);
1320 const langfilename
= 'editor';
1321 var stream
: TFileStream
; name
: AnsiString;
1323 name
:= LangDir
+ DirectorySeparator
+ langfilename
+ '.' + lang
+ '.lng';
1325 stream
:= TFileStream
.Create(name
, fmOpenRead
);
1327 gSetLanguageFormStream(lang
, stream
, ok
);
1331 except on E
: EFOpenError
do
1336 procedure gSetLanguage (const lang
: AnsiString; out ok
: Boolean);
1338 gSetLanguageFromFile(lang
, ok
);
1341 function g_Language_GetList (): TStringList
;
1342 const langfilename
= 'editor';
1343 var list
: TStringList
; info
: TSearchRec
;
1345 list
:= TStringList
.Create
;
1346 list
.Duplicates
:= dupIgnore
;
1347 list
.Add(InSourceLanguage
);
1348 if FindFirst(LangDir
+ DirectorySeparator
+ langfilename
+ '.*.lng', faReadOnly
, info
) = 0 then
1351 list
.Add(Copy(ExtractFileNameWithoutExt(info
.Name
), Length(langfilename
) + 2));
1352 until FindNext(info
) <> 0;
1359 procedure g_Language_Set(lang
: String);
1360 var syslang
, fallbacklang
: String; ok
: Boolean;
1362 ResetResourceTables
;
1366 GetLanguageIDs(syslang
, fallbacklang
); // TODO: remove dependency on gettext
1367 e_WriteLog('g_Language_Set: try strings "' + syslang
+ '" (system)', MSG_NOTIFY
);
1368 gSetLanguage(syslang
, ok
);
1371 e_WriteLog('g_Language_Set: try strings "' + fallbacklang
+ '" (fallback)', MSG_NOTIFY
);
1372 gSetLanguage(syslang
, ok
);
1377 e_WriteLog('g_Language_Set: try strings "' + lang
+ '" (user specified)', MSG_NOTIFY
);
1378 gSetLanguage(lang
, ok
);
1380 if not ok
then e_WriteLog('g_Language_Set: use default strings "' + InSourceLanguage
+ '" (in-source)', MSG_NOTIFY
);
1384 RemoveSelectFromObjects();