2 Array ausgeben

emptynick

Erfahrenes Mitglied
Moin,

bin grade dabei für meine neue Website die function für verschiedene Sprachen zu programmieren, doch da stehe ich wohl grade auf dem Schlauch. Zu meinem Problem:

Ich habe einen Array der meinetwegen wie folgt aussieht:

PHP:
<?php
$german[login_success] = 'Login erfolgreich';

Jetzt finde ich durch eine Funktion die Sprache des Users herraus, der Wert wird dann wiederrum in einem Cookie gespeichert (oder Session, ist ja erstmal egal). Sieht also wie folgt aus;

PHP:
<?php
$_COOKIE['lang'] = 'german'; // Das habe ich jetzt nur zur Erkenntlichkeit hier so eingefügt, die Variable wird je nach der Sprache generiert
?>

jetzt habe ich halt diese zwei Werte, eigentlich müsste es ja jetzt möglich sein diese beiden Array in eine Variable zu klatschen und auszugeben, doch das gelingt mir nicht so recht. Ich muss ja aus zwei Arrays eine Variable machen und diese Ausgeben...

Ich hoffe mich hat jemand verstanden und kann mir helfen :)

Danke im Vorraus

MfG emptynick
 
Tach auch!

Also Du könntest auf Dein login_success über $$ zugreifen.
PHP:
$lang=$_COOKIE['lang']
$provided_langs=array('german','english');
$allowed=in_array($lang,$provided_langs);
if($allowed){
  echo $$lang['login_success'];
}
Das ist aber, wie Du siehst, etwas umständlich und kann leicht gefährlich werden.
Schließlich greift der User durch $_COOKIE['lang'] einfach auf eine Variable
seiner Wahl zu und nur eine entsprechende Prüfung (hier mit "in_array") verhindert,
daß sich der User nicht vielleicht sonstwelche Daten beschafft.

Sinnvoller wäre ein zweidimensionales Array für die gesamte Ausgabe von Sprachen.

Also
PHP:
$lang=$_COOKIE['lang'];
if($lang=='') $lang='german';

$text['login_success']['german'] = 'Login erfolgreich';
$text['login_success']['english'] = 'login successful';
$text['login_error']['german'] = 'Login fehlgeschlagen';
$text['login_error']['english'] = 'login failed';

echo $text['login_success'][$lang];
Das hätte gleich mehrere Vorteile:
Die Sicherheit wäre hier gleich inbegriffen, weil ein gemeines Cookie selbst
ungeprüft nicht im Code rumpfuschen könnte und außerdem hättest Du nicht so
viele Variablen zu beachten. Wenn eine Funktion Text ausgeben soll, dann
brauchst Du der Funktion nur $text übergeben - nicht $german, $english, $...


Nu denn, hoffe geholfen zu haben.
Schönen Gruß!
 
Hallo!

Der Ansatz von Semaphor geht in die richtige Richtung, bläht den Code aber immer noch stark auf. schließlich muss ich jedes mal die komplette Kette mit dem gewünschten Text-Token sowie dessen Übersetzung angeben. Was irgendwann ziemlich müßig wird.

Besser wäre, am Anfang des Skriptes festzustellen welche Sprache der User möchte und dann einfach die entsprechende Sprache aus einem Include (oder ähnlich) laden und damit dann immer den selben Assoziativen-Array aufbauen.

Das hat den Vorteil, das ich immer blind auf
Code:
$text['login_success'];

zugreifen kann, ohne ständig so was wie
Code:
$text['login_success'][$lang];

eingeben zu müssen. ;)

Nur so ein Tipp zur Vereinfachung. schließlich sind Programmierer ja faul. ;)

Grüße,
Sven
 
auch wahr, aber wenn man sich die Funktion genauer anguckt könnte man es auch als eine Schleife händeln *meine Meinung*

Denk mal Thread ist durch...

Danke an alle :)
 
Zurück