simpleXML für Sprachdateien

ev0lst

Erfahrenes Mitglied
Hallo zusammen,

ich befasse mich schon lange mit dem Gedanken, einmal meine Sprachdateien in XML Dateien zu verpacken. Hierzu die erste Frage: Macht das Sinn? Performence?
Warum ich daran denke? Ich halte es für Anpassungen (Bearbeiten der Werte) für wesentlich angenehmer, wenn jemand diese bearbeiten möchte.

Ich habe mir zwar mehrfach simpleXML angeschaut, habe aber bisher keine wirklich brauchbaren Ergebnisse erzielen können.
Habe hier einmal einen Auszug einer text.xml Datei, wie ich sie gerne strukturieren würde:

PHP:
<?xml version="1.0" encoding="utf-8"?>
<language name="masterfile" version="1.0" type="de">
<phrasetype name="News" module="news">
<phrase name="title"><![CDATA[Überschrift]]></phrase>
<phrase name="article"><![CDATA[Artikel]]></phrase>
</phrasetype>
</language>

Ich würde hier gerne ein Array erhalten, was wie folgt strukturiert ist:

PHP:
$var['news'] = array('title' => 'Überschrift', 'article' => 'Artikel' );

Wie kann ich sowas umsetzen?

Wie gesagt, im Vordergrund steht wie immer die Performence, daher würde ich mich da über Erfahrungen ebenfalls sehr freuen. Ich spiele auch mit dem Gedanken, die XML Dateien als Quelle zu nutzen, die dann wiederrum in eine PHP Datei geparsed werden. Eine Art "Cache" für die Sprachdatei.

Wäre super, wenn da jemand ein paar Infos / Hilfen für mich hätte.

Danke!
 
Moin,

jetzt mal simpleXML unbetrachtet gelassen...das geht natürlich.
Ob es besonders performant ist, wage ich aber zu bezweifeln.
Ich glaube, bspw. [phpf]parse_ini_file[/phpf] wäre dort eine bessere Alternative, und solch eine ini-Datei lässt sich auch gut bearbeiten.

Vielleicht bringt dich ja auch dies auf andere Gedanken(hinsichtlich deines Gedankenspiels):

http://www.webholics.de/2007/10/01/xslt-als-template-engine-in-php-teil-7/

Ich nutze diese Variante etwas an eigene Bedürfnisse angepasst für ein aktuelles Projekt und bin bisher sehr zufrieden damit.:)
 
Danke für den Hinweis. Habe mir das TUT gerade mal durchgelesen. Sehr interessante Sache.
Frage mich nur gerade, wie ich das verwenden kann.

Wenn ich das richtig sehe, soll ich also DomDocument() für meine Bedürfnisse nutzen, richtig? Ich würde / konnte dann also eine lang.xml anlegen, mit den jeweiligen Werten und Variablen.

Muss da etwas doof fragen, da ich den "idealweg" einschlagen möchte, vor allem in Sachen Performence und Usability (bei einer möglichen Anpassung).

Danke !
 
Jo, du hättest dann eine (oder auch mehrere) XML-Dateien für die Sprache(n)

Sinn macht das natürlich nur, wenn du generell mit XML arbeitest, also nicht nur die Sprache betreffend, sondern die ganzen Seiten über XML-Dokumente aufbaust.
 
Ausschließlich mit XML arbeiten tue ich (leider) nicht. Zudem arbeite ich noch mit Smarty für die TPL-Engine.
Der generelle Background für die XML-LANGFILES war grundsätzliche das, meiner meinung nach, bessere editieren der Sprachdateien.

Überlege zudem gerade, nach Deiner Antwort, wie umfangreich ein Switch zu XML wäre.
 
Der Umstieg wäre sicher nicht gerade im Handumdrehen bewerkstelligt :-)

Ich muss jetzt erstmal weg, ich werd heut nacht mal testen, was da wirklich schneller geht von den beiden Varianten.
 
Das Ergebnis ist wie erwartet.

Habs mal getestet mit einem Array mit 3000 Elementen, parse_ini_file() benötigt nur 1/10 der Zeit wie das auseinandernehmen per DOM(alleine das Laden des XML dauert da bereits 3x solang, wie parse_ini_file() im Ganzen benötigt).

Habs mal angehangen zum selbertesten.

Man könnte das Ergebnis natürlich per shmop(falls verfügbar) in den RAM laden, dann sollte das alles keine grosse Rolle spielen.
 

Anhänge

Hallo Sven,

wirklich interessantes Ergebnis. Diese ini-Variante scheint dadurch wirklich viel effizienter zu sein.
Eine Frage habe ich noch.

Ich habe gerade mal getestet, ob das ganze auch mit einer anderen Extension geht. Habe also mal "test.lang" als Datei gemacht und das hat auch funktioniert. Wäre das denn auch OK oder steht diese Lösung wieder irgend einem Problem gegenüber? Ich denke, es ist vielleicht schöner, es mit einer Nicht-INI-Endung zu machen, da viele dies vielleicht als php.ini interpretieren.

Was meinst Du?

Schonmal vielen vielen Dank für Deine Hilfe.

Bist der Beste :)
 
Zurück