PHP: Sprachwähler für Intenetseite

Hallo,

Nach langem Suchen bin ich ratlos:
Ich will meine Seite mehrsprachig machen, Dazu habe ich eine php-Klasse, chooseLang.php:

<?php
error_reporting(E_ALL);
class chooseLang {
	//public $language='h';
 	function __construct() {
	  	session_start();	 	
  	}
	public function notes ($lng, $txtNr, $fstream) {
  		$lg=0;
  		$tmp2 = file ($fstream);
  		$lines=count ($tmp2);
  		if ($txtNr>$lines) {
  			return '';
  	 	}
  		if ($lng=='h') {
  	 		$lg=--$txtNr*3;
  	 	} else if ($lng=='d') {
  			$lg=--$txtNr*3+1;
	 	} else {
  	 		return '';
  	 	}			
  	 	return $tmp2[$lg];
  	}
  	public function setLng ($l, $myself) {
  		$_SESSION['lingua']=$l;
		echo $myself;
	}
	public function getLng () {
		return $_SESSION['lingua'];	
	}
  	public $htxt=array( 
                     ... <ungarischer Text>
			);
	public $dtxt=array( 
                    ... <deutscher Text>
			);
}
?>

in einer Extra-nur-Text-Datei namens lang.inc sind die Überschriften: Alle drei Zeilen wiederholt sich
Ungarisch-Deutsch-(Noch leer, da soll Englisch rein), der Algorithmus in

public function notes ($lng, $txtNr, $fstream)
wählt aus nach Sprache (1. Argument: $lng), Textnummer ( $txtNr) und als 3. Argument kommt
der Name lang.inc rein (oder …/lang.inc, falls in einem Unterverzeichnis).

in den Dateien, die die Klasse gebrauchen, steht gleich am Anfang:

<?php
	require_once ("chooseLang.php");
	$texts=new chooseLang ();
	$ccc=$_SERVER['PHP_SELF']; // name of this file
	$tmpx = 'lang.inc';
	$lingua='';
	global $ccc, $texts, $tmpx, $lingua;
?>

und dann in einem Teil einer Tabelle:

<td><a href="<?php $texts->setLng ('h', $ccc);  $lingua=$texts->getLng (); ?>"
              target="_self" name="h">
	<img class="II" src="HU.png" /></a></td>	 
<td><a href="<?php  $texts->setLng ('d', $ccc);  $lingua=$texts->getLng (); ?>" 
              target="_self" name="d">
	<img class="II" src="DE.png" /></a></td>

wenn ich danach ein echo $lingua;
eingebe, bekomme ich immer nur ein d.
Ich könnte es auch mit <form< machen, aber dann brauche ich immer diesen nervigen Submitknopf, und ich möchte, daß direkt beim Drücken der Flagge (DE.png bzw HU.png)
die Datei mit dem richtigen Text neu geladen wird: deutsch wenn $lingua==‘d’ und Ungarisch, wenn $lingua==‘h’.
Wenn mir jemand einen Hinweis geben kann, bin ich dankbar, im Moment habe ich das Gefühl, im Dunklen zu tappen.

rbraus

Verzeih mir wenn ich zu flüchtig drübergeschaut habe, aber kann es sein, dass du den Einsatzbereich von PHP missverstehst? Du kannst PHP nicht direkt mit einem Klick auf einen Link ausführen. Dazu brauchst du entweder Javascript(mit/ohne Ajax) oder du verlinkst auf ein PHP-Script, dass dann die Sprache (für die Session) setzt (wobei das Dokument zumindest neugeladen werden muss).

Mfg :wink2:

Das PHP-Zeug in den href-Attributen wird ja bereits ausgeführt, wenn das Dokument mit diesem
Quelltext abgerufen wird, nicht erst, wenn die Verweise aktiviert werden.
Was man machen kann, ist die Sprache per GET-Parameter an den Verweis anzuhängen und
dann auf der aufgerufenen Seite auszuwerten.
Da kann man dann eine Sitzung aufmachen, wie offenbar beabsichtigt, oder es aber auch beim
GET-Parameter belassen, den man dann jedes Mal auswertet, bevor man Inhalt anzeigt.
Je nachdem, wie die Sitzung organisiert ist und was der jeweilige Nutzer erlaubt (cookies?),
hat die Methode mit dem GET-Parameter immerhin den Vorteil, daß Autor und Nutzer immer
komplett unter Kontrolle haben, daß auch wirklich die gewünschte Sprache verwendet wird.
Da man eine Sitzung allerdings auch wiederum durch anhängen eines GET-Parameters
realisieren kann, sollte dies dann auch auf jeden Fall als Rückfall für abgelehnte cookies
Verwendung finden, wenn man sich für die Sitzungsvariante entscheidet.

Ich habe bei einem Projekt eine Sprachauswahl, die funktioniert allerdings deutlich einfacher, was
aber auch daran liegt, daß die Seiten reichlich Text enthalten und daher für die verfügbaren
Sprachen jeweils Einzeldokumente vorliegen. Zudem wird da versucht, die vom
Darstellungsprogramm gegebenen Sprachinformationen auszuwerten, um automatisch die
passende Sprache zu wählen, falls keine Sprachauswahl erfolgt ist.