Die Sprachdateien:

Grundkonzept

Die Sprachdateien (Language Files) sind im den allgemein Bekannten INI datein nachempfunden.
Warum dies so ist lässt sich leicht begründen, so können INI datein ohne besondere kenntnisse und/oder Software bearbeitet und damit übersetzt werden, zum anderen lassen sich INI datein auch gut mit anderen Programmiersprachen lesen, so könnte im ramen eines "remote launchers" zum Beispiel in C einfach ein wert mit iniGetPrivateString(..) geholt werden.
Warum kein XML? Weil XML zwar gleichermassen geeignet wäre, jedoch keine besonderen fähigkeiten benötigt werden, und INI Datein somit völlig ausreichend sind, des weiteren benötigt man zum Bearbeiten von XML Datein gewisse grundkenntnisse, über welche villeicht nicht alle evtl. in frage kommenden übersetzer der Software verfügen. Ausserdem ist das Parsen von INI Datein schneller als von XML Datein - Warum also den Hammer nehmen wenn es auch eine Nagelfeile tut?

Dateibenennung

Die dateien werden wie in RFC 1766 vorgeschlagen benannt.
Für Deutsch wie in deutschland gesprochen wird zum Beispiel de-DE benutzt, für deutsch generell nur de. Für English wie man es in Japan spricht (Auch wenn es unwarscheinlich ist) könnte man en-JP benutzen. Ich hoffe das grundsystem des aufbaus ist klar. Selbstdefinierte sprachen können mit einem x beginnen, wenn also die nicht offizielle sprach Borg verwendet werden soll, kann zum beispiel x-Borg benuzt werden.
Für nähere details zu diesen Codes siehe RFC 1766.
Die dateiendung ist *.ini, die deutsche datei für Deutschlang könnte also "de-DE.ini" heißen, die generell deutsch "de.ini" usw.
Bei Vorkompilierten datein ist die endung nicht *.ini sondern *.lng.
Wenn zwei datein, eine *.ini und eine *.lng mit gleichem namen existieren wird von LanguageSys automatisch die Vorkompilierte *.lng datei benutzt.

Aufbau der Language Dateien

Die Language dateien (Nicht vorkompilierte!) sind im Stiel von Initialisierungsdateien (INI-Dateien) aufgebaut, jedoch müssen alle Werte in anführungszeichen (") geschrieben werden.
In Initialisierungsdateien werden einzelne Sektionen benannt, dannach werden unterhalb von diesen Sektionen werte zugewiesen, Sektionen werden durch eckige klammern ([ und ]) gekennzeichnet, zwischen diesen wird der name der Sektion geschrieben. Der Name der sektion ist Caseinsensitiv, was bedeutet das gross/kleinschreibung keine rolle spielt, jedoch sollte er immer klein geschrieben werden.
Werte werden zugewiesen, indem nach dem beginn einer Sektion eine zeichenfolge (regex: `/\w/i´) gefolgt von einem gleichheitszeichen (`=´) und dem Wert (Beliebige zeichenfolge (Ohne \r und \n) eingeschlossen in anführungszeichen).
Beispiel: [Sektion1]        ;Beginn der ersten Sektion..
foo = "bar"       ;Weist "foo" den wert "bar" zu.
f_A z ="The BAZ";Weist "f_a_z" den wert "The BAZ" zu
[Sektion2]        ;Beginn einer zweiten sektion..
foo= "bar"        ;Weist "foo" den wert "bar" zu.
leer=             ;"leer" ist leer..
Hier sind auch gleich zwei weitere interessante features erkennbar, zum ersten werden hier in einer Zeile leerzeichen vor dem = benutzt, oder gar in dem string "f_A z" in zeile 3, werden jedoch alle gleich bewertet, das liegt daran, dass vor und nach dem = alle leerzeichen bis zum ersten anderen zeichen ignoriert werden. Das "f_A z" als "f_a_z" angesehen wird liegt an der behandlungsroutine, hier werden die leerzeichen automatisch durch unterstriche erstezt und alles wird kleingeschrieben (Caseinsensitive), dies ist nämlich vorraussetztung für das spätere verarbeiten als variable.
Das zweite interessante sind die Kommentare, kommentare werden mit ";" eingeleitet und können überall stehen. Sobald ausserhalb von zwei anführungszeichen (") ein ; auftauchtm wird der rest der zeile ignoriert. Wenn ";" das erste zeichen in einer Zeile ist, wird die ganze zeile so wie eine leere zeile ignoriert.

Zu beachten ist nun nurnoch, das Language-Dateien nur zwei sektionen nach werten durchsuchen, dass sind [info] und [lang].
Unter info könne werte die als informationen zu der Sprachdatei dienen festgelegt werden.
Im moment werden folgende werte unterstützt:

(Die werte sind alle Optional).
In der Sektion [lang] können beliebige werte zugewiesen werden, diese werden als späterer inhalt für die ausgabe der sprachinformationen verwendet.
Einige Beispiel Sprachdateien sind beim Download der Klasse enthalten.