1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Ländererkennung bei URLs....

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Kaischo, 31.12.09.

  1. Kaischo

    Kaischo Becks Apfel (Emstaler Champagner)

    Dabei seit:
    06.01.07
    Beiträge:
    338
    Hallo zusammen!!!

    Ich möchte folgendes haben:

    1 Website in 2 Sprachen. Das realisiere ich mit Joomla und Joomfish! (oder kann mir jemand sagen wieso ich das nicht sollte, btw. ?)

    Wenn man auf "meineseite.com" geht kommt man auf die Englische Version der Webseite.

    Wenn man auf "meineseite.de" geht kommt man auf die Deutsche Version der Webseite.ABER: In der Form, dass man automatisch weitergeleitet wird auf "meineseite.com/de".

    Das bekomme ich mit meinen Domains und Host-Europe usw. denke ich hin.

    Aber ich möchte noch ein Special: Wenn man in Deutschland an einem Computer sitzt und man auf "meineseite.com" geht soll automatisch erkannt werden dass dieser Computer in Deutschland steht und man landet dennoch auf "meineseite.com/de"

    Wie geht sowas ? Tutorials ? Links ? usw. ?

    Ich danke euch vielmals und schonmal ein guten Rutsch an alle!

    Kaisch0
     
  2. karolherbst

    karolherbst Danziger Kant

    Dabei seit:
    11.05.07
    Beiträge:
    3.878
    Standortabfrage ist immer heikel. Das solltest du am besten vergessen. Du solltest es am besten über die Spreche des Browser (Abfrage über JS) oder über den PHP Header herauslesen (was die sinnvollste Variante ist) welche Sprache der Browser bevorzugt.

    Nachtrag:
    im PHP-Request Header enthalten: "User-Agent:Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; de-de) AppleWebKit/532.8+ (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10"
    Da erkennst du die Sprache des Browsers über PHP, also wenn die Stringfolge "de-de" in diesem HEader steht, soll das Skript auf .com/de umleiten, wobei aber /de in den meisten Fällen eine PHP Variable ist, so wird eigentlich auf die gleiche index.php verwiesen, nur mit einer Sprachvariable
     
    below gefällt das.
  3. Synoxis

    Synoxis Leipziger Reinette

    Dabei seit:
    09.06.09
    Beiträge:
    1.774
    Ich hab so eine Erkennung schon bei einigen Wordpress Blogs gesehen, vielleicht schaust du dort einfach mal nach wie die das gelöst haben?
     
  4. Sam Razr

    Sam Razr Granny Smith

    Dabei seit:
    09.11.09
    Beiträge:
    16
    Direkt am Anfang einer PHP-Seite einbinden:


    Code:
    $lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'] ;
    
    if($lang == "de")
    {
    header('Location: http://www.domain.com/de');
    }
    else
    {
    header('Location: http://www.domain.com/int');
    }
    
    Sam
     
  5. Pascaaal

    Pascaaal Macoun

    Dabei seit:
    14.06.09
    Beiträge:
    122
    Nur scheiße, dass $_SERVER['HTTP_ACCEPT_LANGUAGE'] nicht immer nur "de" enthält, sondern auch mal "de_DE" oder gar "de_DE; en" ;)

    Wenn, dann mit strstr() bzw. strpos() arbeiten. Allerdings wird dann die Konstellation "en; de" falsch behandelt, weil in dem Fall Englisch vor Deutsch bevorzugt wird.
     
    #5 Pascaaal, 11.01.10
    Zuletzt bearbeitet: 12.01.10
  6. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Ich finde es total nervig, wenn eine Website mir vorschreibt, in welcher Sprache ich sie betrachten soll.

    Was machst Du mit Leuten, die Englisch sprechen und im Urlaub in Deutschland sind? EDIT: In einem Internetcafe ist wahrscheinlich der Browser auf "DE", und ihre IP ohnehin.

    Alex
     
  7. Pascaaal

    Pascaaal Macoun

    Dabei seit:
    14.06.09
    Beiträge:
    122
    Man könnte ja noch eine manuelle Umschaltlösung anbieten? Die automatische Auswahl ist jedenfalls komfortabler als z.B. eine vorgeschaltete Seite zur Sprachauswahl, bevor man überhaupt zur Seite gelangt.
     
  8. Sam Razr

    Sam Razr Granny Smith

    Dabei seit:
    09.11.09
    Beiträge:
    16
    Ok, hab ich eben auf die schnelle nicht dran gedacht. Hatte mich nur vage an die Php Referenz erinnert, wo was von return "en" stand. Aber so müsste es klappen:
    Code:
    $lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'] ;
    
    if(strpos($lang, "de") !== false)
    {
    header('Location: http://www.domain.com/de');
    }
    else
    {
    header('Location: http://www.domain.com/int');
    }
    
    Optimal ist das natürlich nicht. Ich würde auch immer gut sichtbar eine Britische/Amerikanische Flagge anbringen, die dann auf die Englische Seite verlinkt.
     
  9. Pascaaal

    Pascaaal Macoun

    Dabei seit:
    14.06.09
    Beiträge:
    122
    Da ich nichts besseres zu tun habe, hab ich mich mal daran gesetzt und mir Gedanken gemacht. Ich hoffe, dass mein negatives Karma bald verschwindet ;)

    Die Hauptseite ist http://www.domain.com. Diese ist Englisch. Nur wenn die Sprache Deutsch ist, wird auf www.domain.com/de weitergeleitet, ansonsten bleibt es bei http://www.domain.com.

    Code:
    <?php
    
        if(preg_match("^de",$_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
            header("Location: http://www.domain.com/de");
        }
    
    ?>
    
    Dies soll bewirkt, dass nur ein "de" am Anfang von $_SERVER['HTTP_ACCEPT_LANGUAGE'] gesucht wird. Bei der Methode mit strpos() würde jedes "de" in $_SERVER['HTTP_ACCEPT_LANGUAGE'] gefunden werden, weshalb auch eine Konstellation alà "en; de" als Deutsch interpretiert werden würde, obwohl es bedeutet, dass Englisch der Deutschen Sprache bevorzugt wird.

    Das kommt einfach in die Startseite bei http://www.domain.com, da diese ja immer aufgerufen wird. http://www.domain.de könnte ja direkt auf http://www.domain.com/de zeigen oder auf http://www.domain.com, wo dann eh weitergeleitet wird, falls die Sprache Deutsch ist.

    Natürlich kann auch der Fall eintreten, dass man in einem Internetcafè mit einem deutsche Browser ist, allerdings lieber Englisch hätte. Für den Fall sollte eine manuelle Auswahlmöglichkeit bestehen.
     
    BobRoss gefällt das.
  10. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Wow, Du bist Domain Registrar? Cool!

    Alex
     
  11. Pascaaal

    Pascaaal Macoun

    Dabei seit:
    14.06.09
    Beiträge:
    122
    Ja, aber http://www.domain.com wurde in vorherigen Beiträgen als Beispiel verwendet, weshalb ich sie weiter verwendet hab. Für dieses Unternehmen ist es natürlich gute Werbung :-D
     
  12. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Ah, Sam Razr ist der Domainregistrar?

    Oder sollte er vielleicht RFC 2606 lesen?

    Alex
     
  13. Pascaaal

    Pascaaal Macoun

    Dabei seit:
    14.06.09
    Beiträge:
    122
    Nein? Hab ich doch nie behauptet.

    Ja, das sollte er mal lesen.
    Für alle die es nicht wissen: Man soll example.org, example.net oder example.com bzw. die Domainendungen .test, .example, .invalid oder .localhost als Beispieldomains verwenden, da diese von der IANA dafür reserviert wurden ;)
     

Diese Seite empfehlen