Vorkompilieren von Sprachdateien

Warum vorkompilieren?

Durch das Vorkompilieren werden alle Daten die nicht benötigt werden entfernt und die Daten werden so arrangiert das sie schneller einlesbar sind.
Das hat zur folge das die Geschwindigkeit der abarbeitung stark erhöht wird.

Wann ist Vorkompilieren sinnvoll?

Vorkompilieren ist immer dann sinnvoll, wenn geschwindigkeit gefragt ist.
Grundsätzlich ist das Voprkompilieren aber erst dann wirklich notwendig wenn die Sprachdateien sehr umfangreich sind, ab ca. 200-300 einträgen. Davor ist normalerweise kein geschwindikeitsunterschied bemerkbar (aber messbar!).

Und so einfach gehts..

Um eine Sprachdatei vorzukopmpilieren wird von der LanguageSys Klasse eine funktion bereitgestellt, die sich passend LanguageSys::compile() nennt. Diese funktion erwartet eine Quelldatei und eine Zieldatei als angaben.
Die Quelldatei ist die Originaldatei, zum Beispiel de_DE.ini und die Zieldatei die, in die alles ausgegeben werden soll, zum Beispiel de_DE.lng.
Ein Script zum einfachen Vorkompilieren ist im Download der Klasse enthalten sowei am ende dieser Seite aufgeführt.
Bei diesem Script solltet ihr darauf achten das genügend rechte zum Lesen/Schreiben der Dateien existieren.
Nach dem Vorkompilieren der Datei kann diese einfach mit in das Verzeichniss der anderen Sprachdateien getan werden, Die LanguageSys klasse zieht dateien mit der endung *.lng automatisch den dateien mit der endung *.ini vor, die Originaldatei muss also nicht gelöscht werden - kann aber gelöscht werden.
Achtung! In einer Vorkompilierten datei sollte nichtsmehr von hand verändert werden! Fehler darin können zu unerwarteten folgen führen, das bedeutet dass eine Verschiebung der Sprachelemente die folge sein könnte und somit nicht das gewünscht ergbnis erzielt würde.
Lieber zweimal kompilieren ;-)

Beispielscript zum Vorkompilieren

Hier nochmals der Quellcode des Beispielscriptes zum Vorkompilieren von Sprachdateien: <?php
include('LanguageSys.class.php');

$srcfile = './de_DE.ini'; //Quelldatei
$destfile = './de_DE.lng'; //Zieldatei

$compiler = new LanguageSys();
if( !$compiler->compile($srcfile, $destfile) )
{
  die($compiler->last_error());
}

print "File compiled successfully.\n";
?>