Location: PHPKode > scripts > LanguageSys > languagesys/doc/en/lang_files.htm
<html>
 <head>
  <link rel="stylesheet" href="inline.css" />
 </head>
 <body>
  <h1>The Language Files:</h1>
  <div id="body">
   <h1>Basic concept</h1>
   <p>
    The language files are based on the well known INI file format.<br />
    This is because of the following facts: INI files can be modified/translated
    without additional knowledge or software requirements. Another fact is that
    INI files are simply readable with other programming languages, so if you got
    a &quote;remote launcher&quote; for your desktop based applications, eg in C
    you simple can fetch some values using the iniGetPrivateString() method.<br />
    Often I have seen that people are providing their various languages by simply
    including another php file with an array inner it - but this is not so secure,
    because of that the people providing language files can modify your applications
    by this or can make mistakes so that your application isn't working correctly.
    With INI files this all isn't possible.<br />
    Why not using XML? XML is appropriated to this as INI files are, but there is
    no need for the additional features privided by XML, so INI files are completely
    sufficient. Also the potential translater of your application has to know
    something about XML when he has to work with, using INI files he doesn't need
    any knowledge (Just how to use a text editor :P). Additional to this parsing
    XML files takes much more time than parsing INI files - So, why take the hammer
    if the nail fail does the same?
   </p>
   <h1>Nomination of the files</h1>
   <p>
    The names of the files are builded up from language codes as RFC 1766 recommends.
    For english as spoken in the USA, for example you can use en-US, for generall english just en.
    For english as spoken in Japan (Just a example!!) you may use en-JP.
    I hope you understand how it works. Self-Defined or phantasy languages may begin with an x,
    eg you would provide the language Borg, you could use x-Borg as language tag.<br />
    For more details on building the language tags, please see the <a href="http://www.faqs.org/rfcs/rfc1766.html" lang="en" target="_blank">RFC 1766</a>.<br />
    The filename extension of language files is *.ini, so the english language file for the USA may be named &quot;en-US.ini&quot;, the general english file &quot;en.ini&quot; and so on..<br /> 
    By precompiling the language files the file name extension is been transfered to *.lng.<br />
    If there are two files, one with the suffix *.ini and another with *.lng LanguageSys will prefer the precompiled *.lng file.
   </p>
   <h1>Structure of the langauge files</h1>
   <p>
    <i>(Sorry, but at moment this part of the docs are not aviable in english. If you wrote a translation you can e-mail it to me: hide@address.com)</i><br />
    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">Section1</span><span style="color:darkgreen">]</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:gray">;Begin of the first section..</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">;Sets the value of "foo" to "bar"</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">;Sets the value of "f_a_z" to "The BAZ"</span><br />
     <span style="color:darkgreen">[</span><span style="color:darkblue">Section2</span><span style="color:darkgreen">]</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:gray">;Begin of a second section..</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">;Sets the value of "foo" to "bar"</span><br />
     <span style="color:darkblue">empty</span><span style="color:darkgreen">=</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:gray">;"empty" is empty..</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