Eine deutsche Übersetzung des
INFORM
Inform (c) 1993-97 Graham Nelson
Übersetzung (c) 1998/99 Toni Arnold
letzte Modifikation: 16.12.99
Vorwort zur
Übersetzung
Ein bisschen deutsche
Grammatik
Deutsche
Umlaute
Was ist mit
der Deklination?
Deutsche
Artikel
Adjektive
Nachgeordnete
Wortgruppen
Pronomen
Deklinationstabellen
Ansätze einer technischen Dokumentation
Neu! Version 6/10
zum Runterladen
"Lizenz"
Links
Inform homepage
interactive fiction archive
meine Interaktive
Belletristik-Seite
Deutscher
Inform von Ralf Hermann (mit automatischer Deklination!)
weitere links auf der Seite von
Bernd Röhling
Dieses erste Computer-Textabenteuer überhaupt wurde von Don Woods 1977 publiziert und basierte auf einem Geschenk von Will Crowther an seine Kinder, welches er 1972 schrieb. Die Inform 6 - Version von Graham Nelson machte es möglich, dieses Spiel ins Deutsche zu übersetzen.
Kurzanleitung zur Inbetriebnahme
Spieledatei herunterladen durch anklicken; da MS-Explorer mit .Z5-Files Probleme macht im schlimmsten Fall mit einem ftp-Programm das Spiel von ftp.gmd.de runterladen. Bei Netscape sich vom Zeichenchaos nicht beeindrucken lassen und das Spiel als source (oder "HTML") speichern. Sich einen passenden Interpreter für die Z-Code-Spieledatei herunterladen. Damit das Spiel starten. Für Neulinge empfiehlt es sich, zuerst einmal "Hilfe" (mit Return abschliessen) zu tippen. So wird das Hilfemenu aufgerufen. Dort findet sich auch ein interessantes "historisches Vorwort", worin geschrieben steht, wie es zum Abenteuer kam...
Schnell zeigte sich bei meinen ersten Übersetzugsversuchen,
dass die deutsche Sprache eine schwere Sprache ist - ein Phänomen, dass uns
Muttersprachlern gewöhnlich gar nicht auffällt. Ich stelle diese Bemerkung voran
um klarzustellen, dass die vorliegende Übersetzung keine endgültige Lösung des
Problems sein kann und will. Viele Phänomene sind noch nicht behandelt, viele
Fehler lauern noch unentdeckt in den Tiefen des Programms. Die vorliegende
Bibliothek wird deshalb ständig aktualisiert.
Das
Spiel RUMMEL.Z5, eine Rummelplatzgeschichte, ist bloss als kurzes Beispiel
gedacht. Ich arbeite noch an dieser Geschichte und das Veröffentlichen des
Quelltextes würde die Spielfreude zunichte machen.
Diese Dokumentation hier behandelt nur Dinge, die spezifisch für die deutsche
Übersetzung sind. Leute, die noch nie in Inform programmiert haben, sollten
vielleicht erstmal einen Blick auf die Literatur auf der Inform-Seite werfen.
Ein Problem für sich stellen die Umlaute dar. Dies hat historische Gründe: Der ASCII-Zeichensatz, auf welchem Inform basiert, trägt das Amerika schon in den Initialen. Da für Amerikaner alle Sprachen ausser Englisch barbarische Sprachen sind, dachten sie nicht daran, europäische Akzente in ihr System einzubauen. Wir Barbaren müssen diese Nachlässigkeit nun ausbaden. Im Einzelnen:
In gedrucktem Text, also in gedruckten Namen von Objekten und Beschreibungen,
können folgende für Deutsch spezifizierten Inform-Sonderzeichen verwendet werden
(siehe auch nächstes Kapitel über die Deklination):
@:a | ä |
@:o | ö |
@:u | ü |
@:A | Ä |
@:O | Ö |
@:U | Ü |
@ss | ß |
print "Der L@:owe br@:ullt @:angstlich.";
In der name-Property, wo die Namen für das Objekt eingegeben
werden, die vom Parser erkannt werden, funktionieren diese Umlaute jedoch nicht.
Es gibt erst einige wenige Z-Code-Interpreter,
die Umlaute verarbeiten können. Die Umlaute werden transkribiert in deren
Entsprechungen mit zwei Buchstaben ohne Akzent. Damit können deutsche Spiele
auch mit älteren Interpretern oder Tastaturen ohne Umlaute gespielt werden.
Grossbuchstaben werden vom Interpreter in Kleinbuchstaben umgewandelt. Es
sind also folgende Entsprechungen zu verwenden:
ä | ae |
ö | oe |
ü | ue |
ß | ss |
Object -> loewe,
has male,
with short_name "L@:owe",
dekl
6,
name "Loewe";
sub pattern_matching {
s/ä/\@:a/g;
s/Ä/\@:A/g,
s/ö/\@:o/g;
s/Ö/\@:O/g;
s/ü/\@:u/g;
s/Ü/\@:U/g;
s/ß/\@ss/g;
s/"/~/g;
};
Die Publikation eines deutschen Spiels ist angesichts der US-amerikanisch geprägten Z-Code-Interpreter-Situation nicht gerade zum verzweifeln (danke an alle, die zur Behebung des Problems beigetragen haben :-), aber es lässt sich wohl nicht vermeiden, dass auch eine Version ohne Umlaute publiziert werden muss. Ein ähnliches Problem existiert mit farbigen Spielen (z.B. Photopia). Da ich auschliesslich Schwarzweissmonitoren benutze, habe ich wenigstens dieses Problem nicht ;-) Um ein Spiel automatisch umzuwandeln, muss der pattern_matching-Block folgendermassen überschrieben werden:
sub pattern_matching {
s/\@:a/ae/g;
s/\@:A/Ae/g,
s/\@:o/oe/g;
s/\@:O/Oe/g;
s/\@:u/ue/g;
s/\@:U/Ue/g;
s/\@ss/ss/g;
};
Das Perl-Script befindet sich unter txtinf.perl.
Ein bisschen deutsche Grammatik
Im Gegensatz zum Englischen gibt es im Deutschen vier verschiedene Fälle (Kasus), und zwar Nominativ, Akkusativ, Dativ und Genitiv. Des weiteren gibt es drei Geschlechter (Maskulin, Feminin, Neutrum) und zwei Zahlen (Singular, Plural). Je nach seiner Funktion im Satz muss eine Nominalphrase in einen bestimmten Fall gesetzt werden: das direkte Objekt ist im Akkusativ, das indirekte Objekt im Dativ. Der Genitiv drückt in der Regel so etwas wie einen Besitz aus.
Ein Beispiel:
Gib dem Kind ein Buch des Zauberers.
\ /
\ / \ /
\ /
- ----- ------ ---------
|
|
| |
| |
NP[Akk] NP[Gen]
| |
\ /
|
| -----------
|
|
|
Verb
NP[Dat] NP[Akk]
\
|
/
--------------------
|
Satz
im Imperativ
Dabei ist die Reihenfolge der Akkusativ- und der Dativ-NP umkehrbar. Werden die Dativ- und die Genitiv-NP vertauscht, muss jedoch der Artikel vor der Dativ-NP weggelassen werden. "das Buch des Zauberers" wird zu "des Zauberers Buch" - ein eher ungebräuchlicher, aber syntaktisch korrekter Ausdruck.
Die Fälle werden im Deutschen durch unterschiedliche Artikel
und Suffixe ausgedrückt. Die Zuordnung ist jedoch mitnichten eindeutig: "des
Zauberers" in obigem Beispiel ist zwar eindeutig Genitiv Singular, "das Buch"
könnte jedoch auch ein Nominativ sein. Dies verkompliziert das Parsen ungemein.
Genau das ist der Grund, weshalb ich das deutsche Kasus-Numerus-Genus-System im
Inform-Parser noch nicht implementiert habe. Konkret funktioniert das Parsing im
Augenblick so, dass schrittweise alls möglichen Nomen-Suffixe abgespalten werden
bis das Wort im Lexikon gefunden wird. Fälle werden so gar nicht erkannt.
Die Ausgabe auf dem Bildschirm dagegen wird weitgehend
unterstützt.
Für die Implementation der Ausgaberoutinen benutze ich die Deklinationstabelle mit 10 Deklinatonstypen für Nomen im Grammatik-Duden*. Wird im Spiel ein neues Objekt deklariert, ist der zugehörige Deklinationstyp als Inform-Property immer anzugeben. Das sieht mit einem Adjektiv im Minimum so aus:
Object zauberer,
has male,
with
short_name
"Zauberer"
dekl 4,
adj "schlau";
Monatelang prangte obiges Beispiel noch minimaler an dieser
Stelle mit der ersten Zeile Object zauberer "Zauberer". Dies
führt jedoch allgemein dazu, dass zum Beispiel "Lampe" im Plural als "Lampeen"
dekliniert wird, da keine Suffix-Elisionen mehr möglich sind. Es empfiehlt sich
daher, grundsätzlich alle "echten" Objekte immer mit einer
short_name-Property zu versehen. Einzige Ausnahme sind die
Raum-"Objekte", welche nie ge"print"et und damit dekliniert werden.
Der Kasus des Artikels wird für die Bildschirmausgabe von Objekten
folgendermassen deklariert (das Beispiel druckt den oben analysierten
Satz):
print "Gib ",(dem) kind," ",(ein) buch," ",(des) zauberer,".";
Da die Artikel nur in der maskulinen Form eindeutig sind,
werden sie immer so angegeben. Hat das Wort ein anderes Geschlecht wird der
Artikel automatisch entsprechend angepasst. Dank den Deklinationstabellen werden
die Nomen im Singular meist richtig dekliniert.
Da einige dieser
Artikel auch in der Verb-Library vorkommen, wurde die Datei VERBLIBM.H
für die deutsche Übersetzung ebenfalls modifiziert.
Im DEBUG-Modus kann ein Objekt zusammen mit seinen Adjektiven dekliniert werden. Dies erfolgt durch das Metaverb dekliniere (oder kurz dekl). Das Objekt muss in Sichtweite sein. Mit dekliniere komplett werden zusätzlich alle definierten Pronomen aufgerufen. Ein Beispiel, welches nebenbei auch demonstriert, dass die Umlaute in der Eingabe meistens nicht funktionieren: (Ausnahmen)
>dekliniere maedchen
das Mädchen
das Mädchen
dem Mädchen
des Mädchens
ein Mädchen
ein Mädchen
einem Mädchen
eines Mädchens
Ein Beispiel mit einem Plural-Objekt:
>dekliniere leute
die lieben Leute
die lieben Leute
den lieben
Leuten
der lieben Leute
liebe Leute
liebe Leute
lieben Leuten
lieber Leute
Die Pluralform funktioniert bisher erst eingeschränkt: Es
wird immer die in der Property plural
angegebene Form benutzt, wenn mehrere Inform-Objekte in einen Plural
zusammengefasst werden.
Hat dagegen ein Objekt das
pluralname-Attribut wie in obigem Beispiel,
wird das Nomen richtig in der Pluralform dekliniert. Dieses Attribut definiert
das Nomen als einen Plural, obwohl es nur ein einzelnes Inform-Objekt anspricht.
Ein Beispiel wäre das Objekt leute, welches
eine einzelne Gruppe von Menschen meint.
Wenn die Deklinationsendung mit denselben Buchstaben anfängt
wie das Lemma aufhört, werden dieselben gelöscht. Zum Beispiel wird "Auge-en" zu
"Augen". Sollen diese und ähnliche Korrekturen in der deutschen Morphologie
funktionieren, muss der Name des Objekts in der short_name-Property angegeben werden. Sind keine Korrekturen verlangt kann der
Name in der Objekt-Deklarationszeile definiert werden.
Des weiteren ist der Name auf 254 Zeichen begrenzt - Überlänge
produziert eine Runtime-Warnung. Will man längere Namen benutzen muss die
Grösse der Arrays ta_ArrayBuf* angepasst werden.
* Bd. 4. Duden "Grammatik der deutschen Gegenwartssprache", 5.
Aufl., Mannheim; Leipzig; Wien; Zürich: Dudenverl., 1995, S.220
Es gibt acht neue Artikel welche die vier Fälle im Singular und Plural repräsentieren. Grosschreibung wird deklariert durch ein vorangestelltes "G". Diese deutschen Artikel ersetzen die Inform-Artikel (the)und (a):
Definit:
Nom | Akk | Dat | Gen |
(der) | (den) | (dem) | (des) |
(GDer) | (GDen) | (GDem) | (GDes) |
Indefinit:
Nom | Akk | Dat | Gen |
(ein) | (einen) | (einem) | (eines) |
(GEin) | (GEinen) | (GEinem) | (GEines) |
"Kein ..." :
Nom | Akk | Dat | Gen |
(kein) | (keinen) | (keinem) | (keines) |
(GKein) | (GKeinen) | (GKeinem) | (GKeines) |
Kein Artikel (nach Präpositionen):
Nom | Akk | Dat | Gen |
(_er) | (_en) | (_em) | (_es) |
Die Artikel werden jeweils nur in der maskulinen Form angegeben da diese eindeutig ist. Fehlende Artikel nach Präpositionen sollen über die (_e*)-Routinen explizite als fehlend gesetzt werden, sonst werden das Nomen und die Adkjektive nicht dekliniert.
Der Genus wird für jedes Objekt definiert über die folgenden Attribute:
male | female | neuter |
Eigennamen
Eigennamen können in Inform mit der property proper als solche deklariert werden. Dies hat zur Folge, dass der Artikel weggelassen wird. Sollte eigentlich ein indefiniter Artikel gedruckt werden, wird dieser durch den Definiten ersetzt Ein Beispiel:
Du siehst hier einen Soldaten.
aber mit Eigennamen:
Du
siehst hier HD Läppli.
aber mit Adjektiven:
Du siehst hier den
netten HD Läppli.
Objektspezifische indefinite Artikel
In Inform können fixe indefinite "Artikel" mit der Property article gesetzt werden. Dies wird benötigt einerseits für nicht zählbare Objekte im Singular ohne oder mit einem speziellen Artikel und für bestimmte Objekte, die nie mit indefinitem Artikel vorkommen. (Bei pluralname-Objekten, die immer im Plural stehen, wird der indefinite Artikel automatisch weggelassen). Wird mit article ein String deklariert, wird dieser zwar gedruckt, aber nicht dekliniert. Gleiches gilt für den Fall einer Routine. Die definit-Konstante ist speziell definiert, um definite Artikel zu erzwingen. Hat das (in diesem Fall "widersprüchliche" Objekt) zusätzlich das proper-Attribut, wird article wie in der englischen Version ignoriert. Drei Beispiele:
Du siehst hier Blut.
mit article ""
Du siehst
hier viel böses Blut.
mit article "viel" und adj
"b@:os"
Du siehst hier die andere Seite des H@:ugels.
mit
article definit - im Unterschied zur englischen Version eine spezielle
Konstante
Die print (name) obj; -Konstruktion für "kein Artikel drucken in
jedem Fall" wird von dieser Übersetzung nicht unterstützt, ist doch die
Adjektivdeklination auch dann unklar, wenn vier Konstrukte für vier Kasus
definiert würden.
Pluralname
Mit dem Attribut pluralname kann festgelegt werden, dass ein Objekt
immer im Plural vorkommt. Damit die Deklination weiterhin funktioniert, muss
jedoch der Objektname im Code selbst in Singular angegeben werden. Der Plural
wird dann jeweils automatisch erzeugt.
Da im Deutschen die Adjektive speziell dekliniert werden, müssen sie auch
separat deklariert werden. Dafür steht seit Version 6/8 (danke Max Kalus!) nur
noch eine Property zur Verfügung namens
adj |
Es gibt im Deutschen die Möglichkeit, zu einer Nominalphrase nachgeordnete
Wortgruppen zu bilden, also z.B. "der Körper des Drachens". Bei der
Deklination wird jedoch nicht der Drache dekliniert, sondern dessen Körper, es
heisst also "die Überreste des Körpers des Drachens". Aus diesem Grunde
muss die nachgeordnete Wortgruppe separat deklariert werden. Dies geschieht über
die Property
post |
Object DragonCorpse
with dekl 1,
short_name "K@:orper",
post "des Drachens",
initial
"Der
K@:orper eines riesigen, gr@:unen, toten Drachens liegt
auf
einer Seite.",
name "drache"
"koerper" "tot" "drachenkoerper" "stinkend",
adj "stinkend" "gr@:un"
has male static;
Pronomen werden ähnlich definiert wie die Artikel:
Nom | Akk | Dat | Gen |
(er) | (ihn) | (ihm) | (seiner) |
(GEr) | (GIhn) | (GIhm) | (GSeiner) |
Demonstrativ:
Nom | Akk | Dat | Gen |
(dieser) | (diesen) | (diesem) | (dieses) |
(GDieser) | (GDiesen) | (GDiesem) | (GDieses) |
Mit "ist" oder "sind"
Für "(GEr) ist" gibt es die Kurzform:
GEristSiesind |
Die Reihenfolge der Fälle entspricht den schweizerischen Gepflogenheiten.
Buchstaben in [eckigen Klammern] sind optional und werden von meinem System
bisher nicht erzeugt. Ebenfalls nicht erzeugt werden bisher Pluralumlautungen
wie in Apfel-Äpfel.
Maskulinum | Neutrum | ||
Sing | Nom | der Tag | das Jahr |
Akk | den Tag | das Jahr | |
Dat | dem Tag[-e] | dem Jahr[-e] | |
Gen | des Tag-[e]s | des Jahr-[e]s | |
Plur | Nom | die Tag-e | die Jahr-e |
Akk | die Tag-e | die Jahr-e | |
Dat | den Tag-en | den Jahr-en | |
Gen | der Tag-e | der Jahr-e |
Maskulinum | Neutrum | ||
Sing | Nom | der Apfel | das Segel |
Akk | den Apfel | das Segel | |
Dat | dem Apfel | dem Segel | |
Gen | des Apfel-s | des Segel-s | |
Plur | Nom | die Äpfel | die Segel |
Akk | die Äpfel | die Segel | |
Dat | den Äpfel-n | den Segel-n | |
Gen | der Äpfel | der Segel |
Maskulinum | Neutrum | ||
Sing | Nom | der Staat | das Auge |
Akk | den Staat | das Auge | |
Dat | dem Staat[-e] | dem Auge | |
Gen | des Staat-[e]s | des Auge-s | |
Plur | Nom | die Staat-en | die Auge-n |
Akk | die Staate-en | die Auge-n | |
Dat | den Staat-en | den Auge-n | |
Gen | der Staat-en | die Auge-n |
Maskulinum | Neutrum | ||
Sing | Nom | der Wald | das Bild |
Akk | den Wald | das Bild | |
Dat | dem Wald[-e] | dem Bild[-e] | |
Gen | des Wald-[e]s | des Bild-[e]s | |
Plur | Nom | die Wäld-er | die Bild-er |
Akk | die Wäld-er | die Bild-er | |
Dat | den Wäld-ern | den Bild-ern | |
Gen | der Wäld-er | der Bild-er |
Maskulinum | Neutrum | ||
Sing | Nom | der Opa | das Deck |
Akk | den Opa | das Deck | |
Dat | dem Opa | dem Deck | |
Gen | des Opa-s | des Deck-s | |
Plur | Nom | die Opa-s | die Deck-s |
Akk | die Opa-s | die Deck-s | |
Dat | den Opa-s | den Deck-s | |
Gen | der Opa-s | der Deck-s |
Maskulinum | ||
Sing | Nom | der Mensch |
Akk | den Mensch-en | |
Dat | dem Mensch-en | |
Gen | des Mensch-en | |
Plur | Nom | die Mensch-en |
Akk | die Mensch-en | |
Dat | den Mensch-en | |
Gen | der Mensch-en |
Femininum | ||
Sing | Nom | die Kraft |
Akk | die Kraft | |
Dat | der Kraft | |
Gen | der Kraft | |
Plur | Nom | die Kräft-e |
Akk | die Kräft-e | |
Dat | den Kräft-en | |
Gen | der Kräft-e |
Femininum | ||
Sing | Nom | die Mutter |
Akk | die Mutter | |
Dat | der Mutter | |
Gen | der Mutter | |
Plur | Nom | die Mütter |
Akk | die Mütter | |
Dat | den Mütter-n | |
Gen | der Mütter |
Femininum | ||
Sing | Nom | die Frau |
Akk | die Frau | |
Dat | der Frau | |
Gen | der Frau | |
Plur | Nom | die Frau-en |
Akk | die Frau-en | |
Dat | den Frau-en | |
Gen | der Frau-en |
Femininum | ||
Sing | Nom | die Oma |
Akk | die Oma | |
Dat | der Oma | |
Gen | der Oma | |
Plur | Nom | die Oma-s |
Akk | die Oma-s | |
Dat | den Oma-s | |
Gen | der Oma-s |
Ansätze einer technischen Dokumentation
Die ersten beiden der folgenden Dateien sind sowohl für Leute gedacht, die Inform in eine weitere, bisher noch nicht implementierte Sprache übersetzen wollen als auch für Leute, die "nur" mit dieser deutschen Inform-Version arbeiten wollen. Aus diesem Grunde sind sie nicht in Deutsch geschrieben, sondern in Englisch.
libr_97.txt
"Logbuch" der ersten deutschen Übersetzung der Libray, begonnen im Jahre
1997
ASCII, Englisch
libr_98.txt
Erweiterungen seit der ersten Publikation, insbesondere Umlaute, Grammatik
und Bugs
ASCII, Englisch
libr_99.txt
Einfügen der Übersetzung in die neue Library-Version 6/9 und 6/10
ASCII,
Deutsch
abent_98.txt
Änderungen am Abenteuer-Quelltext seit der ersten Publikation.
DOS-ASCII
(Umlaute), Deutsch
Index mit Datum der letzten Modifikation
Deutsche Library 6/7
ginf67.tar.gz
Deutsche Library 6/8
ginf68.tar.gz
Deutsche Library 6/9
ginf69.tar.gz
Deutsche Library 6/10 GLULX
ginfg610.tar.gz
Als einzelne Dateien (hier Index):
german.h *
germang.h *
tgerman.h *
verblib.h
verblibm.h *
linkllv.h
parser.h
parserm.h
linklpa.h
infix.h
Mit einem Stern * gekennzeichnete Dateien sind für das Deutsche angepasst - ich mache hier insbesondere auf verblibm.h aufmerksam. Die anderen Dateien sind die Originaldateien von Graham Nelson.
dirs_2g.h
"Richtungen"-Verb: man kann sich immer die Ausgänge aus dem aktuellen Raum
anzeigen lassen.
goto.html
Doku aus Faulheit erst auf Englisch, da Experimentalversion. Implementiert
das aus Magnetic-Scrolls-Zeiten bekannte "gehe zu", welches selbständig den
kürstesten Weg zu einem schon besuchten Raum sucht.
Quelltext Spielklassiker "Abenteuer"
abent.inform
(Quelltext des Spiels)
abent.icl
(steuert den Compiler)
Batchdateien für DOS:
c_abent.bat
(compiliert ein Spiel mit Inform 6.15 in einem DOS-Fenster)
p_abent.bat
(spielt das Spiel [p für play] auf Knopfdruck mit DOS-Frotz)
Automatische Konversion von Umlauten ins
Inform-Format:
txtinf.perl (Version
1.0b0, 10.3.99)
Batchdateien für DOS:
c_rummel.bat
p_rummel.bat
p_verben.bat
(Windows, spielt mit DOS-Frotz in einem neuen Fenster; quit=restart ohne
weiteren Klick)
Rummel-Beispiel-Spieldatei:
rummel.z5
rummel.z5.hqx
rummel.z5.zip
Z-Code-Interpreter für die
Spieldatei:
if-archive/.../zip
./zip/Index
(mit Kurzbeschreibung aller Interpreter-Versionen)
Z-Code-Interpreter, die Umlaute
unterstützen (if-archive/...):
DOS-Frotz
von Stefan Jokisch
ZIP
Infinity 1.4 für Mac von Matthew T. Russotto
FrotzS5 V1.3 (für
Psion S5 Handheld) von Fréderic Bouvry