Browsersprache und automatische Weiterleitung

Bei Problemen/Anregungen mehrsprachiger Webseiten.

Browsersprache und automatische Weiterleitung

Beitragvon patomalo » 5. Mai 2010, 15:57

Hallo,

ich möchte die Browsersprache ermitteln und auf die entsprechende Sprache (3 insgesamt) automatisch weiterleiten. Bisher habe ich vergeblich im Forum nach einem Beitrag gesucht, womit ich was anfangen kann, bin nämlich nicht der PHP Pro. Ich habe folgenden Script in die index.php datei eingefügt (habe ich von einem Forumsbeitrag)

<?php
$sprache = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
$weiterleitung = '';

// deutsch
if (eregi('de', $sprache) && !isset($REX['CUR_CLANG'])) {
$weiterleitung = 'index.php?article_id=15&clang=1';
}

// english
if (eregi('tr', $sprache) ) {
$weiterleitung = 'index.php?article_id=15&clang=2';
}

header ("location: $weiterleitung");
exit;
?>

Der Script erzeugt eine Endlosschleife. Liegt es daran, weil der Script in die Templatedatei gehört, oder ist es richtig, dass ich ihn in die index.php eingebaut habe. Gibt es überhaupt die Möglichkeit mit REDAXO die Sprache des Browsers zu ermitteln und automatisch weiterzuleiten. Da draussen ist doch bestimmt jemand, der das schon umsetzen konnte. Ich wäre euch sehr sehr dankbar.
LG
patomalo
 
Beiträge: 3
Registriert: 5. Mai 2010, 15:40

Beitragvon Cheffchen » 5. Mai 2010, 22:16

Hallo,

nee nicht in die index.php da machst nie nicht was dran :O).

In dein Template zum Anfang.

Bei Englisch suchst nach tr? meinst en

Was passiert wenn ein France kommt? :O)

Vielleicht so:

Code: Alles auswählen
$sprache = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
$weiterleitung = '';

if (eregi('de', $sprache) && !isset($REX['CUR_CLANG'])) {
// deutsch
$weiterleitung = 'index.php?article_id=15&clang=1';
}elseif(eregi('en', $sprache) && !isset($REX['CUR_CLANG'])) {
// english
$weiterleitung = 'index.php?article_id=15&clang=2';
}else{
// default standard
$weiterleitung = 'index.php?article_id=15&clang=1';
}

header ("location: $weiterleitung");
exit;

Cheffchen
Benutzeravatar
Cheffchen
 
Beiträge: 1127
Registriert: 3. Mär 2009, 12:51
Wohnort: Berlin

Gelöst

Beitragvon patomalo » 6. Mai 2010, 09:20

Hallo Cheffchen, danke erstmal für deine Mühe. Die Endlosschleife kriege ich immer noch nicht weg mit dem Script. Ich habe jetzt was anderes asuprobiert und sihe da, es funktioniert :) Für die, die es interessiert, hier der Script:

$sprache = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
$weiterleitung = '';

// deutsch
if (eregi('de', $sprache) && !isset($_GET['clang'])) {

$weiterleitung = 'index.php?article_id=15&clang=1';
#$REX['CUR_CLANG'] = 1;
}

// türkisch
if (eregi('tr', $sprache) && $REX['CUR_CLANG'] == 0) {
$weiterleitung = 'index.php?article_id=15&clang=2';
#$REX['CUR_CLANG'] = 2;
}
if($weiterleitung!=''){
header ("location: $weiterleitung");
exit;
}

Viel Spaß damit
patomalo
patomalo
 
Beiträge: 3
Registriert: 5. Mai 2010, 15:40

Beitragvon zehbaeh » 6. Mai 2010, 12:26

Sinnvollerweise solltest Du auch beachten das HTTP_ACCEPT_LANGUAGE für die akzeptierten Sprachen ein Quality/Relevanz Parameter/Wert (q=) vorsieht.

Möglicher Wert von HTTP_ACCEPT_LANGUAGE:
tr, de;q=0.9, en;q=0.8

Würde bei deiner Reihenfolge zb. nicht die optimale Sprache wählen.
zehbaeh
 
Beiträge: 563
Registriert: 17. Okt 2006, 10:52
Wohnort: Solingen

Beitragvon patomalo » 6. Mai 2010, 15:14

Danke für den Tip zehbaeh ;)
patomalo
 
Beiträge: 3
Registriert: 5. Mai 2010, 15:40


Zurück zu Mehrsprachigkeit [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast