kostenloser Webspace werbefrei: lima-city


Automatische Umleitung auf die bevorzugte Sprache

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    projekt-brainstorming

    projekt-brainstorming hat kostenlosen Webspace.

    Hallo.

    ich bin gerade dabei ein zweisprachiges Wiki zu erstellen. Dazu bräuchte ich Hilfe mit der automatischen Sprachumleitung. Das System soll den Benutzer, wenn er die Hauptdomain verwendet, automatisch auf seine Bevorzugte Sprache umgeleitet werden.

    Die Zulässigen Sprachen sind Deutsch und Englisch. (Englisch als default)

    Das heißt, sollte er "brainstonewiki.tk" eingeben landet er je na seine Einstellungen auf "de.brainstonewiki.tk" oder "en.brainstonewiki.tk"

    Allerdings sollte dabei auch der Pfad erhalten bleiben. Also "brainstonewiki.tk/test/foo/bar.php" sollte zum Beispiel auf "de.brainstonewiki.tk/test/foo/bar.php" umgeleitet werden. Wie stelle ich das am Besten an?

    Hilfe zur Selbsthilfe ist auch gerne gesehen!

    Beitrag zuletzt geändert: 11.9.2013 23:21:56 von projekt-brainstorming
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo,

    du kannst die $_SERVER-Super-Global auslesen. $_SERVER['HTTP_ACCEPT_LANGUAGE'] enthält Informationen zur Wunschsprache des Userbrowsers in einer Form wie "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3".
    Jetzt ließe sich der ein Teilstring bis zum ersten Komma abtrennen und dann nach dem deutschen oder englischen Sprachkürzel suchen.

    Die eigentliche Umleitung erfolgt dann über die Funktion header:

    header("Location: de.brainstonewiki.tk/test/foo/bar.php")


    Wichtig ist dabei, dass du zuvor keine anderen Header an den User senden darfst, darunter fällt schon ein einfacher Aufruf von "echo".

  4. projekt-brainstorming schrieb:
    Das System soll den Benutzer, wenn er die Hauptdomain verwendet, automatisch auf seine Bevorzugte Sprache umgeleitet werden.

    An Hand welcher Bedingungen willst Du die "bevorzugte" Sprache erkennen? Die Idee von Testings hängt sich an Einstellungen des Betriebssystems/Browsers.
    Ist das der wirklich brauchbare Weg?
    Wenn ich meine Lieblingswebseiten aus einem Internetcafe im Ausland aufrufe, fände ich es wenig prickelnd, wenn ich mich dann, auf vertrauten Webseiten, plötzlich mit der Landessprache auseinandersetzen müßte. :wink:
    Ebenso ärgerlich finde ich es, wenn ich auf ausländischen Websites unterwegs bin, plötzlich mit schlechten Übersetzungen klarkommen zu müssen, obwohl ich die originäre Sprache verstehe und damit vermutlich besser informiert wäre. .

    Es gibt bessere Wege.

    Grundsätzlich sollte deine Website in der Sprache erscheinen, die die Mehrheit der potentiellen Nutzer beherrscht/erwartet.
    Alternativen kann man den anderen Nutzern auf vielfältige Weise anbieten.

    z.B. durch Session-/Cookie-/Loginbasierte Einstellung nach persönlicher Sprachauswahl durch den User.

    Auf die Angaben eines Browsers, oder andere automatische Kriterien würde ich mich nie verlassen. Überlasse es dem User, in welcher Sprache er deine Website nutzen will. Besser ist das.





    Beitrag zuletzt geändert: 12.9.2013 2:21:35 von fatfreddy
  5. Autor dieses Themas

    projekt-brainstorming

    projekt-brainstorming hat kostenlosen Webspace.

    fatfreddy schrieb:
    projekt-brainstorming schrieb:
    Das System soll den Benutzer, wenn er die Hauptdomain verwendet, automatisch auf seine Bevorzugte Sprache umgeleitet werden.

    An Hand welcher Bedingungen willst Du die "bevorzugte" Sprache erkennen? Die Idee von Testings hängt sich an Einstellungen des Betriebssystems/Browsers.
    Ist das der wirklich brauchbare Weg?
    Wenn ich meine Lieblingswebseiten aus einem Internetcafe im Ausland aufrufe, fände ich es wenig prickelnd, wenn ich mich dann, auf vertrauten Webseiten, plötzlich mit der Landessprache auseinandersetzen müßte. :wink:
    Ebenso ärgerlich finde ich es, wenn ich auf ausländischen Websites unterwegs bin, plötzlich mit schlechten Übersetzungen klarkommen zu müssen, obwohl ich die originäre Sprache verstehe und damit vermutlich besser informiert wäre. .

    Es gibt bessere Wege.

    Grundsätzlich sollte deine Website in der Sprache erscheinen, die die Mehrheit der potentiellen Nutzer beherrscht/erwartet.
    Alternativen kann man den anderen Nutzern auf vielfältige Weise anbieten.

    z.B. durch Session-/Cookie-/Loginbasierte Einstellung nach persönlicher Sprachauswahl durch den User.

    Auf die Angaben eines Browsers, oder andere automatische Kriterien würde ich mich nie verlassen. Überlasse es dem User, in welcher Sprache er deine Website nutzen will. Besser ist das.


    Die Umleitung soll nicht zwingend sein. Man wird auch noch von Hand die Sprache wechseln können. Dafür werden Buttons in der entsprechenden Sprache angebracht. Ich möchte dennoch, dass die Mehrheit der User direkt auf der richtigen Sprache landet.

    @testings, danke werde ich gleich mal ausprobieren!

    EDIT:

    Ich habe gerade eine lösung gefunden:

    index.php:

    <?php
    
    header("Location: http://" . getDefaultLanguage() . ".brainstonewiki.tk/");
    
    function getDefaultLanguage($acceptlanguages = array("en", "de")) {
      if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"]))
        $http_accept = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
      else
        $http_accept = NULL;
    
      $language = $acceptlanguages[0];
      $languagelist = "(" . join($acceptlanguages, "|") . ")";
      
      if(isset($http_accept) && (strlen($http_accept) > 1)) {
      
        # Split possible languages into array
        $x = explode(",", $http_accept);
        
        foreach ($x as $val) {  
          #check for q-value and create associative array. No q-value means 1 by rule
          if(preg_match("/(.*);q=([01]?\.\d{0,4})/i", $val, $matches))
            $lang[$matches[1]] = (float)$matches[2];
          else
            $lang[$val] = 1.0;
        }
        
        arsort($lang);
        
        foreach($lang as $curlang => $qvalue) {
          if(preg_match("/$languagelist/i", $curlang, $matches)) {
            if($qvalue != 0.0) {
              $language = $matches[0];
              
              break;
            } else {
              unset($acceptlanguages[$matches[0]]);
              
              if(sizeof($acceptlanguages) == 0) {
                return "en";
              }
            }
          }
        }
      }
      
      return strtolower($language);
    }
    
    ?>


    Und .htaccess:

    ErrorDocument 404 /index.php


    Leitet so um, wie ich es mir vorgestellt habe und man kann immernoch die Seite wechseln.

    Beitrag zuletzt geändert: 12.9.2013 16:14:58 von projekt-brainstorming
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!