Auf meiner Seite habe ich eine Navigation bei der ich auf Deutsch und Englisch wechseln kann mit diesem Code.
Mein Problem ist es, dass ich auf dem Ipad oder Iphone immer auf die Deutsche Seite komme. Auf dem Desktop funktioniert das Perfekt. Also wenn ich einmal auf Englisch stelle, bleibt die Seite immer auf Englisch egal welche Navigationverlinkung ich anklicke.
Weiss jemand woran es liegen kann?
Mein Problem ist es, dass ich auf dem Ipad oder Iphone immer auf die Deutsche Seite komme. Auf dem Desktop funktioniert das Perfekt. Also wenn ich einmal auf Englisch stelle, bleibt die Seite immer auf Englisch egal welche Navigationverlinkung ich anklicke.
PHP-Code:
<?php
header('Content-Type: text/html; charset=UTF-8');
// Spracherkennung
// GET abfragen; wird geliefert wenn ein Sprachlink geklickt wird
if(isset($_GET["lang"])) {
$lang = langanalyse($_GET["lang"],"get");
}
// POST abfragen; wird in meinem Beispiel nicht benutzt
elseif(isset($_POST["lang"])) {
$lang = langanalyse($_POST["lang"],"post");
}
// Cookie abfragen; ist ab dem 2. Besuch gesetzt (wenn Cookies aktiviert sind)
elseif(isset($_COOKIE["lang"])) {
$lang = langanalyse($_COOKIE["lang"],"cookie");
}
// keine Sprache gefunden; Browsersprache erkennen, die Sprache mit der höchsten Priorität auswählen
else {
$cutstring = explode("-", $_SERVER["HTTP_ACCEPT_LANGUAGE"]);
$detectlang = $cutstring[0];
$lang = langanalyse($detectlang,"browser");
}
// überprüfe ob für die Sprache verfügbar ist
function langanalyse($new_lang, $methode) {
switch($new_lang) {
// die erlaubten Sprachen hier hintereinander auflisten
case ("de"):
case ("en"):
$lang = $new_lang;
setcookie("lang", $lang, time()+31536000);
break;
// Cookie löschen Funktion als Pseudo-Sprache
case ("delete"):
setcookie("lang", $lang, time()-3600);
break;
// für die erkannte Sprache sind keine übersetzungen vorhanden oder die Sprache ist gänzlich unbekannt
default:
$unknown_lang = 1;
// die Standardsprache:
$lang = "en";
setcookie("lang", $lang, time()+31536000);
}
// Methode erkennen, Debugbox öffnen und Informationen ausgeben
/*switch($methode) {
case ("get"): echo('<div id="langdebug">Methode = get<br/>'); break;
case ("post"): echo('<div id="langdebug">Methode = post<br/>'); break;
case ("cookie"): echo('<div id="langdebug">Methode = cookie<br/>'); break;
case ("browser"): echo('<div id="langdebug">Methode = browserdetect<br/>
(kein GET, POST und COOKIE gefunden)<br/>
Browserlang: '.$_SERVER["HTTP_ACCEPT_LANGUAGE"].'<br/>'); break;
default: echo('<div id="langdebug">Methode = Unbekannt oder Fehler<br/>'); break;
}*/
// Hinweis im Debugbox wenn Sprache unbekannt
if($unknown_lang == 1) {
echo('!! Sprache "'.$new_lang.'" unbekannt. Auf "'.$lang.'" gesetzt<br/>');
$unknown_lang = 0;
}
return $lang;
}
// ein paar zusätzliche Debuginformationen und die manuelle Sprachwahl
/*echo('aktuelle Sprache = '.$lang.'<br/>
Cookie Sprache = '.$_COOKIE["lang"].'<br/>
Cookie Tod = '. date("d.m.Y G:i",time()+31536000) .'<br/>
Sprache setzen:<br/>
</div>');*/
/*<a href="'.$_SERVER['SCRIPT_NAME'].'?lang=de">Deutsch</a>
<a href="'.$_SERVER['SCRIPT_NAME'].'?lang=en">Englisch</a><br/>
<a href="'.$_SERVER['SCRIPT_NAME'].'?lang=delete">Cookie loeschen</a>
?>