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

mehrsprachige Webseiten

rapj

Neues Mitglied
Hallo,

ich baue gerade eine Webseite, die mehrsprachig ist.
Hierfür habe ich Verzeichnisse /de, /en etc. erstellt, in denen die Website in der jeweiligen Sprache ist.

Besteht die Möglichkeit, dass überprüft wird, über welche Suchmaschine der Nutzer die Website gefunden hat bzw. welche Browsereinstellungen er bzgl. Sprache hat und dann zu den Verzeichnissen /de, /en usw. weiterleitet?


Viele grüße,
rapj
 
Hallo rapj,

die meisten Browser senden im HTTP-Request den Accept-Language-Header zum Server. Wenn du diesen ausließt, kannst du die gewünschte Sprache des Besuchers ermitteln.
Siehe bspw. The Future of the Web » Parse Accept-Language to detect a user's language » Web Development with JavaScript, jQuery, PHP and MySQL.

Weitere Informationen über den Client, wie Betriebssystem, Browser oder eben Crawler-Betreiber, stehen im HTTP-User-Agent-Header.
Siehe how to identify web crawlers of google/yahoo/msn by PHP? - Stack Overflow

Gruß
 
Ok, vielen Dank.
Und wie lautet dann der Code zur Weiterleitung zum entsprechenden Verzeichnis und wo füge ich diesen ein?
 
Na ja, an die Stelle, an der du ermittelst, zu welcher Seite du weiterleiten möchtest. Das ist so aus der Luft etwas schwierig zu beantworten.
 
Du kannst doch auch gleich etwas wie Analytics oder Piwik nehmen. Damit bekommt man eine gute Auswertung hin, wenn die Datenschützer mitspielen würden :-)
 
Es stimmt aber, dass die Frage derzeit etwas unklar gestellt ist. Manche Aspekte deuten eher darauf hin, zu speichern, von welchen Suchmaschinen die Nutzer kommen (das wäre der Bereich von Analysetools wie Piwik oder Google Analytics), andere Aspekte drehen sich um eine länderspezifische Weiterleitung. Das sind im Prinzip verschiedene Dinge.
 
Zuletzt bearbeitet:
Genau, mir geht es derzeit nicht um Analysen. Ich möchte, wie schon beschrieben, Nutzer aus bestimmten Ländern entsprechenden Sprachversionen der Website zuweisen.

Wenn ich alles richtig verstanden habe wird durch einen solchen Code (http://www.thefutureoftheweb.com/blog/use-accept-language-header):
PHP:
$langs = array();


if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
    // break up string into pieces (languages and q factors)
    preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse);


    if (count($lang_parse[1])) {
        // create a list like "en" => 0.8
        $langs = array_combine($lang_parse[1], $lang_parse[4]);
        
        // set default to 1 for any without q factor
        foreach ($langs as $lang => $val) {
            if ($val === '') $langs[$lang] = 1;
        }


        // sort list based on value    
        arsort($langs, SORT_NUMERIC);
    }
}


// look through sorted list and use first one that matches our languages
foreach ($langs as $lang => $val) {
    if (strpos($lang, 'de') === 0) {
        // show German site
    } else if (strpos($lang, 'en') === 0) {
        // show English site
    } 
}


// show default site or prompt for language
ermittelt, wie die Browser-Sprach-Einstellungen des Nutzers sind.
Mit dem Befehl:
PHP:
header("Location: http://www.example.com/");
kann ich per PHP weiterleiten.

Allerdings weiß ich nicht, wie und wo ich die Weiterleitung in Code 1 einbaue.
 
Muss ich in den Code sonst noch etwas einfügen. Habe es ausprobiert, aber die Weiterleitung funktioniert nicht.
 
Was hast du denn genau ausprobiert?
Sollen wir raten wie du es umgesetzt hast?
Den Code brauchen wir zur Fehleranalyse gelegentlich schon.
 
Hab's jetzt doch hinbekommen. Hatte das Ganze zwar in einer .php-Datei, allerdings hatte die Datei einen HTML-Aufbau (<html>-Tags, Header, etc.).
Nun lautet die Funktion:
PHP:
<?php$langs = array();
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {    // break up string into pieces (languages and q factors)    preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse);
    if (count($lang_parse[1])) {        // create a list like "en" => 0.8        $langs = array_combine($lang_parse[1], $lang_parse[4]);    	        // set default to 1 for any without q factor        foreach ($langs as $lang => $val) {            if ($val === '') $langs[$lang] = 1;        }
        // sort list based on value	        arsort($langs, SORT_NUMERIC);    }}
// look through sorted list and use first one that matches our languagesforeach ($langs as $lang => $val) {	if (strpos($lang, 'de') === 0) {	header("Location: http://www.example.de");  	} else if (strpos($lang, 'en') === 0) {	header("Location: http://www.example.com");  	} }
// show default site or prompt for language?>
 
Zurück
Oben