A fordítóprogram működése
A fordítóprogram bármely Imagine verzióban készült projektet be tudja olvasni, és át tudja fordítani más nyelvi változatra. A fordítás nem automatikus, sok esetben felhasználói beavatkozást / döntést is igényel, hiszen ugyanaz a szó mást-mást jelenthet attól függően, hogy milyen környezetben szerepel. Ezért a program használójának jól kell ismernie azt a parancskészletet, amelyre fordítani szeretne.
A fordítás nem csak a parancsokra, és az objektumok tulajdonságaira terjed ki, a program segítségével lefordíttathatjuk az eljárások és változók nevét is.
A fordítás lépései vázlatosan:
- A fordítandó IMP állomány beolvasása
- A célnyelv (angol, magyar, szlovák, stb.) kiválasztása
- Az eljárások, változók nevének manuális fordítása
- A gépi fordítás elvégzése
- A kétértelmű szavak fordításának elvégzése
- Az IMP állomány elmentése
- A lefordított állomány teljeskörű tesztelése, ha szükséges, további javítások elvégzése.
A program funkciói
A program IMP típusú állományok beolvasására és mentésére képes. Jelenleg cseh (czech), magyar (hungarian), angol (english), lengyel (polish), portugál (portuguese), szlovák (slovak) nyelvű projektek fordítására képes.
Lehetőségünk van arra, hogy a projektben szereplő eljárás- és változó neveket lefordítsuk, így a lefordított projektben nem csak a parancsok változnak meg, hanem a nevek is, ami hasznos lehet, ha azt akarjuk, hogy olyan valaki is egyszerűen módosíthassa / átláthassa a programkódot, aki nem beszél idegen nyelve(ke)t. A nevek megtekintéséhez kattintsunk a names (nevek) fülecskére!
A programkód fordítása persze nem mindig egyértelmű, ezért fontos, hogy a kétértelmű parancsokat végignézhessük, és mindig a megfelelő változatot választhassuk ki. Erre szolgál az Ambiguity (kétértelműség) funkció. A funkció kiválasztása után a program felkínálja a lehetséges alternatívákat, amelyeket elfogadhatunk, illetve ha szükséges, mi magunk is belejavíthatunk a programkódba.
A fordítás lépései
A fordítás lépései részletesen:
A File / Open menüpont kiválasztásával, vagy az Open (megnyit) ikon segítségével olvassuk be azt a projektet, amelyet le kívánunk fordítani.
Válasszuk ki azt a nyelvet, amelyre a fordítást el szeretnénk végezni. A projektben használt parancskészletnek megfelelő nyelvet nem tudjuk kiválasztani, érthető okokból (például angolról angolra nincs értelme fordítani). Ezt a nyelvet egyébként elszürkítve jeleníti meg a program.
Ezek után érdemes az eljárások, változók, objektumok neveit megváltoztatni. Ehhez a names (nevek) fület kell kiválasztani, és megfelelően ki kell tölteni a táblázatot. Ennél a műveletnél ügyelnünk kell arra, hogy ne adjunk meg például olyan nevet, amely az Imagineben alapszóként funkciónál, mert ennek nem kívánt következményei lehetnek.
A nevek előtt információt kapunk arról, hogy az adott név mire vonatkozik:
o (object): objektum neve
p (procedure): eljárás neve
g (global): globális változó neve
s (shape): alak neve
A fordítás elvégzése
Ezután lehet elvégezni a fordítást, amelyhez a Translate (fordítás) gombra kell kattintani.
Ezzel még nem végeztünk, hiszen a program találhatott kétértelmű szavakat is, amelyeket a programkódban pirossal jelöl. Ha már javítottuk ezeket, akkor a színük zöldre változik. Kattintsunk az Ambiguity (kétértelműség) gombra, és gondoljuk át, hogy melyik változatot fogadjuk el. A program egyébként azt a változatot teszi első helyre, amelyet ő javasol az adott helyre.
Ha minden kétértelmű parancs ki lett javítva, akkor már elmenthetjük a projektet a Save ikonra kattintással, vagy a File / Save menüpont segítségével. Ekkor a program eredeti neve elé íródik az adott nyelv angol elnevezése is. Ha pl. a maze.imp programot fordítjuk angolról magyarra, akkor az eredményt hungarian_maze.IMP néven menti el a program. Ha nem ezt szeretnénk, akkor inkább válasszuk ki a File / Save as... (Mentés másként...) funkciót, mert itt mi adhatjuk meg a fájl nevét.
Ezek után a lefordított alkalmazást ki kell próbálnunk, le kell tesztelnünk, hogy minden funkció megfelelően működik-e. Ha találunk hibát, akkor vagy újra el kell végeznünk a fordítást a megfelelő módosításokkal, vagy közvetlenül javíthatunk a programkódban is, de ezt nagy körültekintéssel tegyük.
Kiindulási kód
Nézzünk egy angol parancskészlettel írt eljárást (house), amely annyit csinál, hogy a teknőccel kirajzoltat egy megadott oldalhosszúságú négyzetből, és szabályos háromszögből álló házat egy véletlenszerűen választott pozícióban. A rajz színét is véletlenszerűen állítja be, sőt a toll vastagságát is.
A kód:
to house :n
penup
setpos (list any any)
pendown
setpencolor any
setpenwidth any
repeat 5 [forward :n right 90]
repeat 3 [forward :n left 120]
left 90
back :n
end
Lefordított kód
Ha a fordítás során megadjuk, hogy a program a house név helyett a ház szót használja, akkor a fordítás eredménye a következő lesz.
A kód:
eljárás ház :n
tollatfel
Poz! (lista tetszőleges tetszőleges)
tollatle
Tollszín! tetszőleges
Tollvastagság! tetszőleges
ismétlés 5 [előre :n jobbra 90]
ismétlés 3 [előre :n balra 120]
balra 90
hátra :n
vége
Ez az eljárás már használható a magyar nyelvű parancskészletet használó Imagine környezetben is.