• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Herkunft erkennen und weiterleiten

Status
Für weitere Antworten geschlossen.

Freeloader

Neues Mitglied
Hi Forum,

gibt es eine Möglichkeit, die Besucher einer Seite je nach Herkunft weiterzuleiten? Quasi so:

Deutschland -> de.htm
Italien -> it.htm
Spanien -> es.htm
'Nicht definierte' -> un.htm

Danke für Eure Unterstützung!

Greets
 
Werbung:
Ich glaube da war was mit der Spracheinstellung des Browsers, müsste man egtl in Google recht schnell finden, aber wenn ein Spanier dann englische Browser nutzt bist du mit der Methode aufgeschmissen...
Hoffe ich konnte dir helfen, hab selber nicht viel Ahnung, aber man tut was man kann ^^

greetZ Sebi
 
Im header des Browsers steht die verwendete Sprache, ist aber wie schon gesagt nicht immer richtig, gibt genug, die lieber die englische Version benutzen, dort aber nicht leben oder als Muttersprache eine andere haben.
 
Werbung:
Hi Sebi,

danke für deine Antwort. Laut meinen Infos wird die Systemsprache des Besuchers ermittelt. Und wenn ein Spanier die englische Sprache eingestellt hat will er die Seite ja aller Wahrscheinlichkeit nach auch in Englisch sehen. Leider finde ich via Google nichts brauchbares..
 
Hab mal nen bissl gegoogelt und das hier gefunden:

Code:
if (navigator.appName == 'Netscape')
 {var language = navigator.language}
else
 {var language = navigator.browserLanguage}
var lang = ""
if (language.indexOf('is') > -1) lang="Halló, Góðan daginn";
else if (language.indexOf('pl') > -1) lang="Dzien' dobry";
else if (language.indexOf('ro') > -1) lang="Binevenit";
else if (language.indexOf('kl') > -1) lang="Ilaali";
else if (language.indexOf('bg') > -1) lang="Dobro utro";
else if (language.indexOf('af') > -1) lang="Welkom";
else if (language.indexOf('ar') > -1) lang="Sabah al khair";
else if (language.indexOf('zh') > -1) lang="Ni hao";
else if (language.indexOf('cs') > -1) lang="Vítany";
else if (language.indexOf('da') > -1) lang="Hallo";
else if (language.indexOf('nl') > -1) lang="Welkom";
else if (language.indexOf('eo') > -1) lang="Bonvenigi";
else if (language.indexOf('fi') > -1) lang="Hei";
else if (language.indexOf('fr') > -1) lang="Bienvenue";
else if (language.indexOf('de') > -1) lang="Willkommen";
else if (language.indexOf('hu') > -1) lang="Isten hozta!";
else if (language.indexOf('it') > -1) lang="Benvenuto";
else if (language.indexOf('ja') > -1) lang="Kouguu";
else if (language.indexOf('ga') > -1) lang="Tá fáilte romhat";
else if (language.indexOf('la') > -1) lang="Ave";
else if (language.indexOf('no') > -1) lang="Hei";
else if (language.indexOf('sk') > -1) lang="Prosím; Nie je za c^o";
else if (language.indexOf('en') > -1) lang="Welcome";
else if (language.indexOf('tr') > -1) lang="Merhaba";
else if (language.indexOf('es') > -1) lang="Bienvenida";
else if (language.indexOf('sv') > -1) lang="Hej";
else if (language.indexOf('cy') > -1) lang="Croeso";
else if (language.indexOf('zu') > -1) lang="Sawubona";
else if (language.indexOf('pt') > -1) lang="Bem-vindo";

Hoffe das hilft dir weiter ;)

greetZ
 
Das sieht schonmal nach nem guten Anfang aus. Allerdings brauche ich das jetzt nur noch so umgeschrieben, dass ja nach Sprache die Weiterleitung auf die jeweilige Seite stattfindet.

So wie es das auch für die Bildschirmauflösung gibt.

Danke! & Greets
 
Werbung:
Das reicht leider nicht aus, da die Eigenschaft, welche die Sprache hält sehr uneinheitlich ist (da nicht standardisiert):
Code:
var LANG = (navigator.systemLanguage || navigator.userLanguage || navigator.language || navigator.browserLanguage || "").replace(/-.*/,"");
Ansonsten hätte man das Script dort etwas übersichtlicher gestalten können.

Am besten wäre es, wenn du mit einer Server-seitigen Sprache weiterleitest. Es spricht auch nicht dagegen das zu tun, selbst wenn das bei einigen verkehrt eingestellt wurde. Da heißt es dann: selbst schuld. Irgendwie kommt er ja sicher trotzdem auf die richtige Seite. Ich denke die meisten Browser sind richtig lokalisiert. IEs sowieso und Firefox etc. wird sich sicher nicht jemand in Englisch runterladen, wenn er gar kein Englisch kann.
 
Hi Crash,

danke für deine Antwort. Wie sicher schon zu erkennen bin ich kein Meister auf dem Gebiet, brauche es aber nunmal leider..

Wie ließe sich dein Vorschlag denn realisieren?

Greetz
 
PHP:
function getUserLang () {
    if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
        $http_lang = explode(',', str_replace('_', '-', strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE'])));
        $pref_lang = FALSE;
        $pref_lang_weight = 0;
        foreach ($http_lang as $lang) {
            if (preg_match('/(.+);q=0\.(\d)/', $lang, $result)) {
                if ($result[2] > $pref_lang_weight) {
                    $pref_lang_weight = $result[2];
                    $pref_lang = $result[1];
                }
            } else {
                $pref_lang_weight = 10;
                $pref_lang = $lang;
                break;
            }
        }
        return $pref_lang;
    } else return FALSE;
}

// ab hier ungetestet
$langSites = array(
    'de' => 'de.foobar.com',
    'fr' => 'fr.foobar.com',
    'en' => 'en.foobar.com'
);
$userLang = getUserLang();

if (isset($langSites[$userLang])) {
    header('Location: http://' . $langSites[$userLang]);
} else {
    header('Location: http://en.foobar.de/');
}
Zur Vollständigkeit: PHP: http_negotiate_language - Manual

P.S. Es gibt auch eine Methode, dass das Apache übernimmt.
 
Werbung:
Jaja is klar dass das net der beste Weg is, hab das ja auch nur grad schnell ausgegoogelt damit FreeLoader nen Anfang hat und ich fand das sah vielversprechend aus ^^

greetZ
 
Das Script ist einfach zu umständlich, mit einer Struktur wäre das einfacher, sauberer und wartbarer zu lösen. Außerdem ist das eher nicht die Aufgabe von JavaScript.
 
Moin,

die Probleme, die Ihr ansprecht, sind nicht wirklich lösbar.
Es ist absolut nicht selten, dass der angesprochene Spanier z.B. in Amerika in einem Internet-Cafe sitzt und daher die Seiten auf Englisch angezeigt bekommt, statt auf Spanisch. Der Russe, der in Deutschland lebt, kann die Sprache natürlich auf russisch einstellen und bekommt dann russisch angezeigt. Genauso könnte der Deutsche in Deutschland Schwedisch einstellen, weil er die Sprache so toll findet. Benutzt sein kleiner Bruder aber den selben Browser, ärgert der sich schwarz.

Da die Abfragemöglichkeiten am Browser enden, und es kein User-Interface gibt, das den Menschen aus Fleisch und Blut über Gehirnströme nach seiner bevorzugten Sprache fragt, ist die Lösung, die Browser-Einstellung als Default für die Sprache zu nehmen, eine gute. Aber es muss bei mehrsprachigen Seiten natürlich immer und auf jeder Seite eine Möglichkeit geben, die Sprache mit einem Klick umzuschalten.

Allerdings brauche ich das jetzt nur noch so umgeschrieben, dass ja nach Sprache die Weiterleitung auf die jeweilige Seite stattfindet.
So wie es das auch für die Bildschirmauflösung gibt.
Da komm ich wieder nicht umhin zu erwähnen, dass Weichen für die Bildschirmauflösung völliger Quatsch sind und jeder Grundlage entbehren.

Die Auflösung ist für die Erstellung und Anzeige von Webseiten völlig irrelevant.

Was bringt mir eine Auflösungsweiche, die sieht, dass ich eine Auflösung von 1280x1024 benutze, wenn mein Browserfenster nur 772x981px groß ist? Ich werde auf eine falsche Seite weitergeleitet.

Außerdem sind mehrere Seiten für verschiedene "Auflösungen" ohnehin unnütz. Heutzutage gibt es Möglichkeiten, das Layout der Website an den Viewport (den Fensterinnenbereich des Browsers) anzupassen. Untershiedliche Seiten stammen aus den 1990er Jahren.

Gruß,
-Efchen
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben