Location: PHPKode > scripts > LanguageSys > languagesys/doc/de/lang_files.htm
<html>
 <head>
  <link rel="stylesheet" href="inline.css" />
 </head>
 <body>
  <h1>Die Sprachdateien:</h1>
  <div id="body">
   <h1>Grundkonzept</h1>
   <p>
    Die Sprachdateien (Language Files) sind im den allgemein Bekannten INI datein nachempfunden.<br />
    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 &quot;remote launchers&quot;
    zum Beispiel in C einfach ein wert mit iniGetPrivateString(..) geholt werden.</br>
    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?
   </p>
   <h1>Dateibenennung</h1>
   <p>
    Die dateien werden wie in RFC 1766 vorgeschlagen benannt.<br />
    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.<br />
    Für nähere details zu diesen Codes siehe <a href="http://www.faqs.org/rfcs/rfc1766.html" lang="en" target="_blank">RFC 1766</a>.<br />
    Die dateiendung ist *.ini, die deutsche datei für Deutschlang könnte also &quot;de-DE.ini&quot; heißen, die generell deutsch &quot;de.ini&quot; usw.<br />
    Bei Vorkompilierten datein ist die endung nicht *.ini sondern *.lng.<br />
    Wenn zwei datein, eine *.ini und eine *.lng mit gleichem namen existieren wird von LanguageSys automatisch die Vorkompilierte *.lng datei benutzt.
   </p>
   <h1>Aufbau der Language Dateien</h1>
   <p>
    Die Language dateien (Nicht vorkompilierte!) sind im Stiel von Initialisierungsdateien (INI-Dateien) aufgebaut,
    jedoch müssen alle Werte in anführungszeichen (&quot;) geschrieben werden.<br />
    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.<br />
    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).<br />
    Beispiel:
    <code>
     <span style="color:darkgreen">[</span><span style="color:darkblue">Sektion1</span><span style="color:darkgreen">]</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:gray">;Beginn der ersten Sektion..</span><br />
     <span style="color:darkblue">foo</span> <span style="color:darkgreen">=</span> <span style="color:blue">"bar"</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:gray">;Weist "foo" den wert "bar" zu.</span><br />
     <span style="color:darkblue">f_A z</span> <span style="color:darkgreen">=</span><span style="color:blue">"The BAZ"</span><span style="color:gray">;Weist "f_a_z" den wert "The BAZ" zu</span><br />
     <span style="color:darkgreen">[</span><span style="color:darkblue">Sektion2</span><span style="color:darkgreen">]</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:gray">;Beginn einer zweiten sektion..</span><br />
     <span style="color:darkblue">foo</span><span style="color:darkgreen">=</span> <span style="color:blue">"bar"</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:gray">;Weist "foo" den wert "bar" zu.</span><br />
     <span style="color:darkblue">leer</span><span style="color:darkgreen">=</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:gray">;"leer" ist leer..</span>
    </code>
    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 &quot;f_A z&quot; 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 &quot;f_A z&quot; als &quot;f_a_z&quot; 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.<br />
    Das zweite interessante sind die Kommentare, kommentare werden mit &quot;;&quot; eingeleitet und können überall stehen. Sobald ausserhalb von zwei anführungszeichen (&quot;) ein ; auftauchtm wird der rest der zeile ignoriert.
    Wenn &quot;;&quot; das erste zeichen in einer Zeile ist, wird die ganze zeile so wie eine leere zeile ignoriert.<br />
    <br />
    Zu beachten ist nun nurnoch, das Language-Dateien nur zwei sektionen nach werten durchsuchen, dass sind [info] und [lang].<br />
    Unter info könne werte die als informationen zu der Sprachdatei dienen festgelegt werden.<br />
    Im moment werden folgende werte unterstützt:<br />
    <ul>
     <li><b>use</b> - Verweist auf eine andere Sprachdatei, die anstelle der eigenen verwendet werden soll.</li>
     <li><b>author</b> - Gibt den namen von demjenigen an, der die Datei/Übersetzung geschrieben hat.</li>
     <li><b>translation_info</b> - Ein kurzer Text um auf den übersetzter hinzuweisen, z.B. &quot;Translated by xyz&quot;</li>
     <li><b>version</b> - Die version der Sprachdatei oder die Version der Applikation für welche die Sprachdatei ist.</li>
     <li><b>application</b> - Den namen der Softwareapplkikation, für welche die Sprachdatei geschrieben wurde.</li>
    </ul>
    (Die werte sind alle Optional).<br />
    In der Sektion [lang] können beliebige werte zugewiesen werden, diese werden als späterer inhalt für die ausgabe der sprachinformationen verwendet.<br />
    Einige Beispiel Sprachdateien sind beim Download der Klasse enthalten.
   </p>
  </div>
 </body>
</html>
Return current item: LanguageSys