Sprachenwahl Hinweis

  • Hallo zusammen,


    wir betreiben eine mehrsprachige Webseite mit en-GB und en-US Sprachunterstützung. Da die GB-Seiten in den Suchmaschinen besser gefunden werden als die neuen US-Seiten haben wir sehr viele US-Besucher auf den englischen Seiten.


    Gibt es ein Modul / Plugin das die Browser-Spracheinstellung überprüft und nachfragt ob nicht die passende Seite geladen werden soll?
    - Spracheinstellung testen
    - schauen ob passende Seite existiert (rel)
    - Wechsel vorschlagen und gegf. Cookie speichern


    Gruß


    PS: Kann ich einen Thread verschieben? ;)

    • Hilfreich

    A)

    Code
    $lang_code = JLanguageHelper::detectLanguage();


    Was macht detectLanguage()?
    - 1) Ermittlung der im Browser eingestellten Sprachen. Unter Firefox die Einstellungen unter "Bevorzugte Sprachen für dir Darstellung von Websites".
    Also der Inhalt von $_SERVER['HTTP_ACCEPT_LANGUAGE'].
    Bsp.: ar-SA,en-US;q=0.8,de-DE;q=0.7,de;q=0.5,en-GB;q=0.3,en;q=0.2


    - 2) Ermittlung der Inhaltssprachen Joomlas.


    - 3) Abgleich "welche der Browsersprachen einer Inhaltssprache am nächsten kommt". Und das ist dann obiger $lang_code.


    B)

    Code
    JFactory::getLanguage()->getTag()


    - Sollte aktuelle InhaltsSprache der Seite sein(?)


    C)
    - Ggf. Empfehlung für Wechsel ausgeben (nach Prüfung von D), Sessioneintrag, was ganz zu Anfang des Gesamtcodes passieren sollte).

    Code
    JFactory::getApplication()->enqueueMessage('Change your language');


    D)
    - In Joomla-Session schreiben, dass Meldung bereits ausgegeben wurde, damit nur einmalig passiert.


    Ermittlung, ob Seite in betr. Sprache esxistiert? Keine Ahnung. JLanguageAssociations::getAssociations ? Hängt ja auch von Komponente der aktuellen verknüpften Seite ab (Menü, Kategorie, Beitrag...).


    Grobe Theorie. Nix geprüft. Nur so aus Code zusammengesucht und Gedächtnis.

  • Geschafft. Hier mein Code falls jemand Interesse hat:


    Da für mich nur der Weg International Englisch nach US Englisch ist gibt es dieses Script nur auf der INT Seite.


    Zuerst hole ich mir etwas unsauber mit js den Link aus dem Sprachenwechsler. Mit PHP wäre das geschickter - habs noch nicht hinbekommen.

    Code
    <script type="text/javascript">link_us ="#";jQuery(document).ready(function($) {$(".nolang").click(function() {$('#lang-quest').slideUp();});link_us = $("a.en_us").attr("href");if (link_us !="#"){$("#lang-quest").slideDown(800);}});</script>


    Dann schauen ob Cookie gesetzt

    PHP
    <?phpif (!isset($_COOKIE['lang-quest'])) {


    Geolocalisation über IP

    Code
    require_once JPATH_LIBRARIES . '/geoip/geoip.php';$geo = new GeoIp();$location = $geo->get();$visitor_country = $location->countryCode;


    Dann noch nach Spracheinstellung Browser schauen

    Code
    $lang_code = JLanguageHelper::detectLanguage();


    Wenn es ein Amerikaner ist dann Ausgeben und bei Klick ein Cookie raushauen.

    Code
    if ($lang_code == "en-US" OR $visitor_country == "US"){
    echo
     '<div id="lang-quest"><h3>Our website is available for the USA.</h3><p>Would you change to the US site? <button onclick="location.href=window.link_us;">Ok. Let\'s get 
    there.</button>&nbsp;<button class="nolang" onclick="document.cookie=\'lang-quest=accepted;path=/; expires=0\'">No thanks.</button></p></div>';
    }
    }
    ?>