Sprachanpassung

Clonk ermöglicht es, Unterstützung für mehrere Sprachen in Objekte und Szenarien zu integrieren. Dazu können jeweils bestimmte Elemente sprachabhängig überladen werden.

Anpassbare Elemente

Title.txt
Die Komponente Title.txt kann in Szenarien und Objektordnern verwendet werden, um den Titel für verschiedene Sprachen zu definieren.
In jeder Zeile wird dabei ein Sprachkürzel dem gewünschten Titel vorangestellt. Beispiel:
DE:Angriff der Killerwipfe
US:Attack of the Killer Wipfs
In externen Sprachpaketen sollte an der entsprechenden Verzeichnis-Position eine Komponente Title*.txt stehen (wobei * durch das entsprechende Sprachkürzel ersetzt wird), die dann den Titel für die jeweilige zusätzliche Sprache enthalten kann. Beispiel für den Inhalt einer TitleFR.txt:
FR:Les wipfes moerderesque attaquent
Ist ein Eintrag für die gewählte Sprache vorhanden, so wird der Title-Eintrag aus der Scenario.txt durch den entsprechenden Namen überschrieben.
Wichtig: es sollten keine Anführungszeichen oder Sonderzeichen verwendet werden.
Names.txt
Mit der Komponente Names.txt kann der Name eines Objekts für verschiedene Sprachen definiert werden. Die Funktionsweise der Names.txt gleicht Funktionsweise der der Title.txt.
Existiert ein Eintrag für die gewählte Sprache, so wird die Name-Angabe aus der DefCore.txt überschrieben.
Desc*.txt / Desc*.rtf
Um die Beschreibung einer Objektdefinition oder eines Szenarios sprachabhängig anzupassen, muss eine Datei Desc*.txt/.rtf im Definitions- bzw. Szenarioverzeichnis vorhanden sein (* steht dabei wieder für das entsprechende Sprachkürzel, die Komponenten sollte also z.B. DescUS.rtf heißen).
Script.c, Teams.txt
Um sprachabhängig Texte in Scripts einzufügen, kommen sogenannte String Tables zum Einsatz. Im Script wird dazu, anstatt des Textes ein Verweis auf einen Eintrag einer solchen String-Tabelle eingefügt. Die Tabelle muss sich im selben Verzeichnis wie das darauf verweisende Script befinden und den Namen StringTbl*.txt haben (wobei * für den Sprachcode steht).
Der Verweis im Script besteht aus einem Namen für den zu verwendenden String (String-ID), der mit Dollarzeichen ("$") als ein solcher Stringtabellenverweis gekennzeichnet ist.
Beispiel:
protected func Activate(pCaller)
{
  [$DescActivate$]
  Message("$MsgYourPosition$ %d / %d", GetX(pCaller), GetY(pCaller));
}
Hier werden zwei Strings mit den Namen "DescActivate" und "MsgYourPosition" eingebunden.
Eine passende StringTblDE.txt (für deutsche Sprache) könnte folgendermaßen aussehen:
# Beschreibungstexte
DescActivate=Position bestimmen
# Nachrichten
MsgYourPosition=Deine Position ist:
Im Objekt hätte also Activate den Beschreibungstext "Position bestimmen" und würde z.B. die Nachricht "Deine Position ist: 252 / 352" ausgeben. In der Stringtabelle wurden hier zwei Kommentare eingefügt. Sie beginnen mit einem '#'-Zeichen und werden ignoriert.
Zur Vollständigkeit - eine passende StringTblUS.txt:
# Description texts
DescActivate=Tell position
# Messages
MsgYourPosition=Your position is:
Hier würden also z.B. die Nachricht "Your position is: 252 / 352" erzeugt, wenn Englisch als Sprache eingestellt ist.
PeterW, April 2002
matthes, April 2004