Array oder einzelne Strings?
Alex
- php
Hallo,
Für ein Skript hätte ich gerne eine externe Sprachdatei. Ich hab dann mal geschaut, wie das die anderen so machen. PhpMyAdmin z.B. macht das mit einzelnen Strings in dieser Form:
$strChangeDisplay = 'Choose Field to display';
$strChangePassword = 'Change password';
...
PhpBB macht das mit einem Array:
$lang['Forum_not_exist'] = 'The forum you selected does not exist.';
$lang['Reached_on_error'] = 'You have reached this page in error.';
...
Hat jemand eine Idee was sinnvoller ist? Gibt es da Unterschiede in der Serverbelastung, Geschwindigkeit usw.?
Danke und Grüße, Alex
Hallo Alex,
Hat jemand eine Idee was sinnvoller ist?
Ich würde sagen, das Array. Sonst hast Du am Ende lauter globale Variablen und wenn Du Dich nicht versiehst, überschreibst Du noch eine.
Gibt es da Unterschiede in der Serverbelastung, Geschwindigkeit usw.?
Ja. Ich vermute, (ich weiß es nicht mit Sicherheit) das Array ist schneller. Und zwar rede ich jetzt nicht vom Zugriff auf die Sprachtexte sondern vom allgemeinen Zugriff auf globale Variablen. Wenn Du 200-2000 globale Variablen hast, dann ist die Zeit, die verstreicht, bis PHP den Speicherbereich einer Variablen findet, größer, als wenn Du nur 20 hast. Und Du greifst sicherlich häufiger auf andere globale Variablen zu (z.B. Zähler in Schleifen, etc.) als auf die Sprachtexte.
Allerdings dürfte der Unterschied bei normalen Scripten so gering sein, dass die Serverbelastung IMHO nicht als Argument herangezogen werden kann.
Viele Grüße,
Christian
So eine ähnliche Frage habe ich bereits etwas weiter unten gestellt.
Was aber ist mit den benannten Zeichen in HTML?
Es kann ja sein, dass man mal einen Link in so einen Satz einbauen will. Wenn ich dann alles mit htmlentities() ausgebe, wird der Link nicht umgesetzt. Ohne htmlentities() ists aber wieder nicht HTML konform.
Wie löst du das?
Hallo Onizuka,
Es kann ja sein, dass man mal einen Link in so einen Satz einbauen will. Wenn ich dann alles mit htmlentities() ausgebe, wird der Link nicht umgesetzt. Ohne htmlentities() ists aber wieder nicht HTML konform.
Wie löst du das?
Alternative 1: Gleich kodieren:
$... = 'Zum >><a href="impressum">Impressum</a><&lgt;';
Alternative 2: Eine Art Markosprache verwenden wie z.B. hier im Forum.
(man möge gerne Alternativen 3 aufwärts anfügen ;-))
Viele Grüße,
Christian
Möglichkeit 1 ist einfach nicht möglich, da auch Benutzer, die nichts von HTML o.ä. verstehen, eine Übersetzung schreiben können sollten.
Möglichkeit 2 ist zwar etwas besser, aber immer noch zu umständlich.
Auch Leute, die nur den Text übersetzen können, sollen da etwas dran ändern können.
Auf meine untere Frage hat jemand geschrieben, dass man irgendwo das charset angeben soll und dann würde es schon passen.
Stimmt das?