[PHP] performance => sprachpakete realisieren

Goltergaul

Well-known member
ID: 17553
L
26 April 2006
480
7
hi ich überlege grade wie ich mein projekt leicht übersetztbar machen könnte und habe mir gedacht alle textausgaben in eine datei zu schreiben:

PHP:
$willkommen="hi blahblah";
$login_wrong_pw="dein pw ist leider falsch usw.";
...
...
...

und diese dann immer zu includen. Meine Frage jetzt: kostet es den server viel arbeit jedesmal so viele variablen zu deklarieren? schätze mal das es eine menge variablen werden würden.

thx :)
 
Von der Performance is das egal, da normalerweise jede gute Webseite mit Templates arbeitet.

Ich empfehle aber unbedingt Arrays, sonst blickst du nimmer durch.
PHP:
$_language=array();
$_language['accessdenied']="Access denied."; // default
$_language['accessdenied']['english']="Access denied.";
$_language['accessdenied']['german']="Zugriff verweigert.";
// ...
So kannst du verschiedene Sprachen anbieten.
 
theHacker schrieb:
PHP:
$_language=array();
$_language['accessdenied']="Access denied."; // default
$_language['accessdenied']['english']="Access denied.";
$_language['accessdenied']['german']="Zugriff verweigert.";
// ...
Ich weiss nicht, ob ich mich grad vertu, aber das mit dem Default dürfte in die Hose gehen. Wenn Du erst $foo als String definierst, um es direkt in der nächsten Zeile dann als Array zu definieren, wird der erste Wert wohl unweigerlich überschrieben werden.
 
tleilax schrieb:
Ich weiss nicht, ob ich mich grad vertu, aber das mit dem Default dürfte in die Hose gehen. Wenn Du erst $foo als String definierst, um es direkt in der nächsten Zeile dann als Array zu definieren, wird der erste Wert wohl unweigerlich überschrieben werden.
Nene, es war so angedacht, dass falls keine extra Sprache definiert is, dass es dann irgendwo einen Default-Wert gibt.
Is also nur ein Ansatz. Ob man so einen Default-Wert einbaut, is jeden seine eigene Sache.

Das vB3 z.B. arbeitet da afaik mit einer Language-ID -1, wenn du nix extra angibst.
 
Ich würde das ganze mittels Return-Codes und Mysql machen ...

Wenn irgendwas fehlschlägt dann machst du z.B. ein return (int) 11;

Dann z.B.

return_codes::get_codes($klasse->methode(), $db);

Dann musst du nicht immer das ganze Zeug laden. Schneller ist es denke ich erst ab einer bestimmten Datenmenge ...
 
mhm ja muss ich mal sehen aber so viel wirds dann glaub ich auch nicht, dass sich immer ein query lohnen würde ;)
 
Goltergaul schrieb:
mhm ja muss ich mal sehen aber so viel wirds dann glaub ich auch nicht, dass sich immer ein query lohnen würde ;)

Naja, kommt drauf an ... Wenn die Datenbank-Verbindung eh schon offen ist, dann fährt man mit der Query denke ich sogar schneller (und schöner :p)
 
ich weiß nicht ich hab das gefühl das ein query enorm länger dauert wie eine variable einlesen *g* oder hab ich dich falsch verstanden?
 
Goltergaul schrieb:
ich weiß nicht ich hab das gefühl das ein query enorm länger dauert wie eine variable einlesen *g* oder hab ich dich falsch verstanden?

Eine Variable einlesen ist schneller, Arrays sind schonmal langsamer. Das mit dem "länger dauern" war auf das includieren der Datei mit den Datensätzen bezogen :)
 
Hm, wenn du HiSpeed brauchst könntest das ganze jeweils vor dem einsatz mit einem CPP lokalisieren :ugly: Aber wenn ich ehrlich sein soll, nimm doch einfach das bewährte GNU gettext... https://ch2.php.net/gettext ;)

/*
* argh, das ist ja standardmässig schon so
* Am besten schreibst du noch einen Wrapper der _ nach gettext mappt so in
* der Art von function _($s) { return gettext($s); } ;)
*/

Und zu deinen Speed sorgen:
https://mel.melaxis.com/devblog/200...-localization-is-gettext-fast-enough/#more-13
Scheint sogar schneller als die Array-Lösung zu sein.
 
Zuletzt bearbeitet: