Terry: Autom. Sprachauswahl

Hallo,
ich möchte meine Homepage in mehreren Sprachen aufbauen. Kann ich in .htaccess oder in einer anderen Datei oder notfalls im HTML-Dokument steuern, dass die Seite mit der Sprache aufgerufen wird, die der Anwender in seinem Browser eingestellt hat?
Thanks

  1. Hello out there!

    ich möchte meine Homepage in mehreren Sprachen aufbauen. Kann ich in .htaccess oder in einer anderen Datei oder notfalls im HTML-Dokument steuern, dass die Seite mit der Sprache aufgerufen wird, die der Anwender in seinem Browser eingestellt hat?

    "Content negotiation" ist dein Stichwort.

    http://forum.de.selfhtml.org/archiv/2006/6/t131307/#m849403
    http://forum.de.selfhtml.org/archiv/2006/4/t127369/#m822336
    http://forum.de.selfhtml.org/archiv/2006/3/t124751/#m804069

    See ya up the road,
    Gunnar

    --
    “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
    1. Hallo Gunnar u. Ihr anderen,
      den Königsweg habe ich aus den vielen Dokumenten nicht herausgefunden. Da ich noch wenig mit Servern zu tun hatte, verstehe ich die umfangreiche Beschreibung von "Content negotiation" überhaupt nicht.
      Aber ich habe ein Beispiel gefunden, das folgendermassen aussieht:

      Datei .htaccess:

        
      # Alternative Inhalte  
      AddType application/x-type-map var  
      Options +MultiViews  
      DirectoryIndex index  
      
      

      Datei index.var:

        
      URI: index; vary="type,language"  
        
      URI: indexd.htm  
      Content-type: text/html; qs=1.0  
      Content-language: de  
        
      URI: indexf.htm  
      Content-type: text/html; qs=0.8  
      Content-language: fr  
      
      

      Ich verstehe es zwar nicht, aber es funktioniert im Internet!
      Leider aber nicht auf meinem lokalen Apache-Server.

      Weiß jemand, was ich da noch wo ändern muss?

      Danke

      1. Hallo Gunnar u. Ihr anderen,
        den Königsweg habe ich aus den vielen Dokumenten nicht herausgefunden. Da ich noch wenig mit Servern zu tun hatte, verstehe ich die umfangreiche Beschreibung von "Content negotiation" überhaupt nicht.
        Aber ich habe ein Beispiel gefunden, das folgendermassen aussieht:

        Datei .htaccess:

        Alternative Inhalte

        AddType application/x-type-map var
        Options +MultiViews
        DirectoryIndex index

        
        >   
        >   
        > Datei index.var:  
        >   
        > ~~~apache
          
        
        > URI: index; vary="type,language"  
        >   
        > URI: indexd.htm  
        > Content-type: text/html; qs=1.0  
        > Content-language: de  
        >   
        > URI: indexf.htm  
        > Content-type: text/html; qs=0.8  
        > Content-language: fr  
        > 
        
        

        Ich verstehe es zwar nicht, aber es funktioniert im Internet!
        Leider aber nicht auf meinem lokalen Apache-Server.

        Weiß jemand, was ich da noch wo ändern muss?

        Danke

      2. Hey,
        Apache bietet mehrere Methoden zur CN; Typemaps, wie von dir genannt, ist einer davon. Ich hab noch nie davon Gebrauch gemacht. Mein bevorzugter Weg MultiViews richtet sich schon nach dem Dateinamen und macht erweiterte Konfiguration unnötig, weil der Kram schon standardmäßig aktiviert ist.

        In deinem Fall: speichere Dateien mit Sprachendungen, bspw. quux.html.en
        und quux.html.de. Verlinke auf quux.html (oder nur quux) und der Server ermittelt mit dem vom Browser geschickten Accept*-Header die passende Ressource.

        Das klappt auch mit Zeichenkodierungen: quux.html.utf-8 und quux.html.iso-8859-2 (verlinke auf quux.html oder nur quux)

        Auch Inhaltstypen gehen: quux.xhtml und quux.html und quux.txt (verlinke auf quux)
        quux.svg und quux.png und quux.jpg (verlinke auf quux/binde quux als Bildobjekt ein)

        Lies mehr dazu im Handbuch.
        http://httpd.apache.org/docs/2.2/mod/mod_mime.html#multipleext
        http://httpd.apache.org/docs/2.2/content-negotiation.html#naming

        Wenn du heute CN schlau einsetzt und dir Gedanken um gutes URI-Design machst, kannst du in der Zukunft Ressourcen in Hinblick auf bessere Technologie austauschen, ohne dass Links kaputtgehen/dein Googlejuice flöten geht.

        --
        水-金-地-火-木-土-天-海-冥
  2. Kann ich in .htaccess oder in einer anderen Datei oder notfalls im HTML-Dokument steuern, dass die Seite mit der Sprache aufgerufen wird, die der Anwender in seinem Browser eingestellt hat?

    Deine index.php könnte auf verschiedene Unterverzeichnisse leiden, etwa so:

    <?php
    $lang_variable = $_SERVER['HTTP_ACCEPT_LANGUAGE'];

    if (substr($lang_variable, 0, 2) == "en") {
      header ("Location:./en/");
      exit;
    }else {
      header ("Location:./de/");
      exit;
    }
    ?>

    Ist die Browserkennung englisch, wird auf /en/ geleitet, in allen anderen Fällen auf /de/.

    Viele Grüße!
    _ds

    --
    Baumkuchen hat übrigens einen hohen Coolnessfaktor.
    Top 5-Blog, Genussmittel für Gothics
    1. Hey,

      if (substr($lang_variable, 0, 2) == "en") {
        header ("Location:./en/");
        exit;
      }else {
        header ("Location:./de/");
        exit;
      }

      dieser Algorithmus zur Content-Negotiation ist unvollständig. Ein typischer Fall - Nutzer bevorzugt deutsch mit englisch als Fallback - liefert das falsche.
      Wie's richtig geht, steht in http://httpd.apache.org/docs/2.2/content-negotiation.html#methods sowie der HTTP/1.1-Spec.

      --
      水-金-地-火-木-土-天-海-冥
  3. Hallo Terry

    ich möchte meine Homepage in mehreren Sprachen aufbauen. Kann ich in .htaccess oder in einer anderen Datei oder notfalls im HTML-Dokument steuern, dass die Seite mit der Sprache aufgerufen wird, die der Anwender in seinem Browser eingestellt hat?

    Ja das geht und die Methoden sind genannt. Trotzdem möchte ich dich davor warnen, dass zu tun. Wenn jemand unterwegs ist und zu Beispiel auf einem Internetcafe heraus surft, dann müssen die Browsereinstellungen nichts mit der Auffassung des Surfers zu tun haben. Eine einfache Sprachnavigation ist das wesentlich hilfreicher.

    Herzliche Grüße
    Wolfgang

    1. Hello out there!

      Ja das geht und die Methoden sind genannt. Trotzdem möchte ich dich davor warnen, dass zu tun. Wenn jemand unterwegs ist und zu Beispiel auf einem Internetcafe heraus surft, dann müssen die Browsereinstellungen nichts mit der Auffassung des Surfers zu tun haben. Eine einfache Sprachnavigation ist das wesentlich hilfreicher.

      Content negotiation steht einer Auswahl der Sprache durch den Nutzer nicht im Wege.

      Letztere ist auch immer anzubieten, wie ich auch in zwei der drei von mir verlionkten Postings ausdrücklich gesagt hatte.

      See ya up the road,
      Gunnar

      --
      “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)