[code]Hallo Shopware-Community, ich habe ein PHP-Skript geschrieben, das anhand der Ip-Nummer das Besucher-Land ermittelt und die Besucher auf den Deutschen oder auf den Englischen-Shop weiterleitet, damit der Shop und seine Elemente in der jeweiligen Sprache automatisch dargestellt werden. Bitte vorher den Teil meinshop/de/ ersetzen und den Source-Code als index.php in das root-Verzeichnis hochladen. Das war es schon, viel Spaß damit. :thumbup: Bedient euch [code]<?php $GERMANSHOP = „meinshop/de/“; /* Bitte ersetzen mit eigener Pfad /
$ENGLISHSHOP = „meinshop/en/“; / Bitte ersetzen mit eigener Pfad */
FOR SESSION RECORD START 15.05.2013 cengizkan bilgic#########
Hallo Cengizkan Ist es nicht besser anhand einer Domain den User in den richtigen Sprachshop zu leiten? Ich habe 2 Domains domain.de und domain.com und möchte dann die auch auf die richtige Sprache weiterleiten. domain.de => shop.domain.de/dedomain.com => shop.domain.de/en Nur in den root-Ordner legen reicht glaube ich nicht. Da als erstes die .htaccess greift und gleich die shopware.php benutzt wird doch die index.php übersprungen, oder? Über Hilfe wäre ich sehr dankbar. LG mirko
@Cengizkan Vielen Dnak für das Skript. ich bin aber auch der Meinung, dass ein einfaches Ablegen als index.php im root-verzeichnis nichts nützt. m.E. ist das Umleiten auf Grund der IP auch nicht sinnvoll. Viel mehr Sinn würde es machen die eingestellte Sprache des Browsers abzufragen.
Hallo zusammen, damit die Weiterleitung funktioniert sollten die Shopwaredateien in einem separaten Verzeichnis liegen wie z.B. handyshop/ und die index.php sollte dann im übergeordnetem Root-Verzeichnis erstellt werden. Für einige Webserver (je nach Konfiguration) ist es besser, wenn im Root-Verzeichnis noch eine index.html erstellt wird. Es reicht wenn die index.html folgenden Inhalt hat:
Ist es möglich diese Funktion auf Basis der Browsersprache zu verwenden?? Sprich… Benutzer mit englischsprachigem Browser wird auf shop.com/en weitergeleitet … Benutzer mit deutschsprachigem Shop wird auf shop.com/de weitergeleitet.
Ich verwende das hier. <?php $lc = ""; // Initialize the language code variable
// Check to see that the global language server variable isset()
// If it is set, we cut the first two characters from that string
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
$lc = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
}
// Now we simply evaluate that variable to detect specific languages
if($lc == "de"){
header("location: http://www.domain.de/de/");
exit();
} else if($lc == "en"){
header("location: http://www.domain.de/en/");
exit();
}
?>
Klappt super! Das einzige ist, dass der zwar die Webseite in der richtigen Sprache anzeigt, aber die Flagge wechselt nicht in z.b. die englisch sondern zeigt weiterhin die deutsche. Wenn es hierfür noch eine Lösung gibt wäre das perfekt!
[quote=“bombfrog”]Ich verwende das hier. <?php $lc = ""; // Initialize the language code variable
// Check to see that the global language server variable isset()
// If it is set, we cut the first two characters from that string
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
$lc = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
}
// Now we simply evaluate that variable to detect specific languages
if($lc == "de"){
header("location: http://www.domain.de/de/");
exit();
} else if($lc == "en"){
header("location: http://www.domain.de/en/");
exit();
}
?>[/quote] Erst einmal vielen Dank bombfrog! Ich habe deine Script in eine index.php auf dem Root Verzeichnis abgelegt Shopware liegt in einem Unterverzeichnis shopware/. Dennoch funktioniert das Script nicht bei mir. Egal welche Sprache ich in meinem Browser einstelle, ich gelange immer auf den deutschen Shop. Meine Frage ist, habe ich die index.php an der falschen Stelle eingefügt? In das Shopware Verzeichnis kann es ja nicht rein, weil sonst die shopware.php nicht ausgeführt wird und somit eine Blankpage bekomme. Ich habe es auch mal versucht mit Javascript zu lösen. Aber anscheinend klappt das auch nicht so richtig. var lastURL = document.referrer; var suche = lastURL.search("meinShop.de"); //alert(suche); // Nur ausführen wenn man von einer fremden Webseite auf meinShop.de gelangt. if(suche == -1){ if (navigator.language == "fr" || navigator.language == "fr-ch"){ window.location = "http://www.meinShop.de/fr"; } }
Eventuell liegt es auch an den Grundeinstellungen. Bei mir sieht das so aus: Shop 1: Host: www.domain.de Virtuelle URL: /de Lokalisierung: Deutsch Shop 2: Virtuelle URL: /en Lokalisierung: Englisch Eventuell liegt es auch an der .htaccess bzw. mod_rewrite wenn du Apache verwendest. <?php $lc = ""; // Initialize the language code variable
// Check to see that the global language server variable isset()
// If it is set, we cut the first two characters from that string
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
$lc = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
}
// Now we simply evaluate that variable to detect specific languages
if($lc == "de"){
header("location: http://www.domain.de/de/");
exit();
} else if($lc == "en"){
header("location: http://www.domain.de/en/");
exit();
}
?>
Ich hab noch ein anderes Skript gefunden welches bei mir auch läuft: [code]<?php // Needs to be first line of page.
/*
Language Browser Language Detection and Redirect
Version 1.0
August 21, 2010
Bontrager Connection, LLC grants you
a royalty free license to use or modify
this software provided this notice appears
on all copies. This software is provided
„AS IS,“ without a warranty of any kind.
*/
1.7.0 (Nginx) im Livebetrieb, und 1.5.3 (Apache2/Uwamp) auf der lokalen Testumgebung. Ich habe das ganze mit dem normalem Template (ohne Änderungen) getestet, und mit meinen Anpassungen im Ordner “_theme”. Ich glaube auch nicht unbedingt das es an dem Template liegt, da es wie gesagt auf dem Standard Template “Emotion” auch läuft.
Mir ist aufgefallen, dass der Browser immer das anzeigt, was als letztes (vor dem Schließen) aktiv war. Sprich… Webseite wird in englischer Version aufgerufen, also mit englischer Flagge. Danach wird der Browser geschlossen. Beim erneuten Öffnen erkennt die Webseite anhand des Skripts die Browsersprache (deutsch), zeigt also korrekt die deutsche Webseitenversion an aber weiterhin die Englische Flagge, da diese als letztes aktiv war (vor dem Schließen). Kann es sein, dass das am APC Cache liegt, dass der Flaggen-Wechsel nicht reibungslos funktioniert?