Out_of_Ideas: Type Maps / Apache

Guten Tag,

ich versuche eine mehrsprachige Seite aufzusetzen. Den ersten Versuch
habe ich mit MultiViews gewagt. Da ich aber keine Befriedigende Lösung
gefunden habe, um alle Varianten von Deutsch (de, de-de, de-ch, de-at ...)
und Englisch (en, en-us, en-gb ...) damit zu erfassen, habe ich es in
einem zweiten Anlauf mit Type Maps probiert.

Ich habe bereits dieses Forum, Google und die Apache Doku konsultiert,
aber ich werde aus dem Verhalten nicht schlau.

Rahmenbedingungen:

  • Server mit Ubuntu / Apache 2.2.8
  • IE 7 / FF 3.x / Safari 4

Files:

  • test.html.de
  • test.html.en
  • test.html.var
  • .htaccess

Inhalt test.html.var:

URI: test.html

URI: test.html.de
Content-type: text/html
Content-language: de, de-ch, de-at, de-de

URI: test.html.en
Content-type: text/html
Content-language: en, en-us, en-gb

Inhalt .htaccess:
AddHandler type-map var

Gebe ich test.html im Browser ein, wird immmer der Inhalt von test.html.en
angezogen, unabhängig von den Sprachprioritäten im Browser. Gebe ich
test.html.var ein, wird der Korrekte Inhalt (je nach Sprachpriorität im
Browser) angezeigt.

Meinem Verständnis nach müsste nach der Eingabe von test.html je nach
Situation im Hintergrund test.html.de oder test.html.en angezogen werden
und in der Adressleiste der Browsers aber test.html angezeigt werden.
Habe ich das so richtig verstanden?

Ich komme nicht weiter. Wenn mir jemand helfen könnte, oder sieht woran
es liegt, wäre ich sehr dankbar. :-)

Gruss
Out_of_Ideas

  1. Hallo,

    das Verhalten ist reproduzieren.

    URI: test.html

    Diesen Eintrag in der Type-Map ist Unsinn, tut aber nichts zu Deinem Problem.

    URI: test.html.de
    ...

    Inhalt .htaccess:

    AddHandler type-map var
    AddLanguage en .en
    AddLanguage de .de

      
    Fehlte der Negotiation diese Angaben, funktioniert sie nicht. Es ist auch für meine Begriffe äußerst unlogisch, da die Angaben der Sprachen sich ja aus der Type-Map ergeben, aber apache braucht wohl den AddLanguage in den Konfigurationen...  
      
      
    Gruß aus Berlin!  
    eddi  
    
    -- 
    Ab einem gewissen Erkenntnisstand ist die Versuchung wohl zu groß, in diesem und seinen begleitenden Errungenschaften zu verharren.  
    Das nenne ich Aufblick zu den Stufen des Tempels von der geistigen Gosse aus!
    
    1. Hallo Eddi,

      besten Dank für Deinen Input.

      Hallo,
      »»
      »» Inhalt .htaccess:
      »» ~~~apache

      AddHandler type-map var

      AddLanguage en .en
      AddLanguage de .de

      
      >   
        
      Grundsätzlich helfen die von Dir beschriebenen Einträge nicht,  
      da Sie meine Problem der Sprachvarianten (de-de, de-ch, en-us ...)  
      nicht beheben. Aus genau diesem Grund nutze ich nicht die Multiviews  
      sondern die type-maps. Zudem ändert sich bei mir das Verhalten  
      nicht, wenn ich die von Dir genannten Einträge in meine .htaccess  
      einfüge. Trotzdem allerbesten Dank für Deine Unterstützung.  
        
      Falls sonst jemand noch einen Tipp, oder eine Idee hat, bin ich immer  
      noch sehr empfäglich dafür. :-)  
      
      
      1. Re:

        Na, nicht so voreilig! ;)

        Du müsstest Dich schon befleißigen, für jede Sprache (also auch de-ch) eine Definition mittels AddLanguage in den Konfigurationen zu hinterlegen. Ansonsten habe ich den Fehler in meiner Konfiguration ausfindig machen können und auch Deine bevorzugte Methode mittels type-map und Option -Multiviews arbeitet wie erwartet.

        Ich muss also ins blaue fragen: Wie werden die Dokumente von Dir referenziert? Mittels ../test.html oder ../test.html.var? Welche Version des Apachen verwendest Du?

        Gruß aus Berlin!
        eddi

        --
        Ab einem gewissen Erkenntnisstand ist die Versuchung wohl zu groß, in diesem und seinen begleitenden Errungenschaften zu verharren.
        Das nenne ich Aufblick zu den Stufen des Tempels von der geistigen Gosse aus!
        1. Hallo Eddie,

          gemäss der Apache Doku

          http://httpd.apache.org/docs/2.2/mod/mod_mime.html#addlanguage

          kann ich mit AddLanguage leider nicht mehrere Sprachen einer
          Endung (en-us = .en und en-gb = .en) zuweisen. Dies war mein
          ursprüngliches Problem. Deshalb bin ich erst auf die Variante
          mit den Type-Maps gekommen.

          Ich habe unter Ubuntu einen Apache 2.2.8 am laufen. Auf die
          Datei greife ich mit test.html zu. Test.html.var bringt
          das richtige Resultat, aber das kann keine Lösung sein.

          Nochmals danke für Deine Hilfe! :-)

          Gruss

          completly_out_of_ideas

          1. Re:

            kann ich mit AddLanguage leider nicht mehrere Sprachen einer
            Endung (en-us = .en und en-gb = .en) zuweisen. Dies war mein
            ursprüngliches Problem. Deshalb bin ich erst auf die Variante
            mit den Type-Maps gekommen.

            AddLanguage en .en  
            AddLanguage en-gb .en-gb  
            AddLanguage en-us .en-us
            

            Ich habe unter Ubuntu einen Apache 2.2.8 am laufen. Auf die
            Datei greife ich mit test.html zu. Test.html.var bringt
            das richtige Resultat, aber das kann keine Lösung sein.

            Und woher soll apache Deiner Meinung nach wissen, dass er bei Anfrage nach %{dateiname}.html auch %{dateiname}.html.var mit einzubeziehen hat, wenn Du ihm die Möglichkeit dazu mit Options -Mutiviews nimmst? ;)

            Deine Lösung sollte also so aussehen:

            <Files test.html>  
            # produktiv dann:  
            # <Files *.html>  
            	SetHandler type-map  
            </Files>  
            Options -Multiviews
            

            In die test.html schreibst Du dann die Deklarationen zu den einzelnen Dateien rein.
            Sollte es immer noch nicht funktionieren, lade dir bitte folgendes Add-on https://addons.mozilla.org/de/firefox/addon/6647 herunter, wenn Du es noch nicht hast, und stelle sicher, dass die richtigen HTTP-Header gesendet werden!

            Gruß aus Berlin!
            eddi

            --
            Ab einem gewissen Erkenntnisstand ist die Versuchung wohl zu groß, in diesem und seinen begleitenden Errungenschaften zu verharren.
            Das nenne ich Aufblick zu den Stufen des Tempels von der geistigen Gosse aus!
            1. Noch eine etwas abstruse Variante gefällig? Bitte sehr:

              AddLanguage var .var  
              AddHandler type-map .var  
              LanguagePriority var de en fr  
              ForceLanguagePriority Fallback  
              Options Multiviews
              

              $ ls -l && cat test.html.var

              -rw-r--r-- 1 eddi eddi    7  2. Jun 18:43 test.html.de
              -rw-r--r-- 1 eddi eddi    8  2. Jun 18:43 test.html.en
              -rw-r--r-- 1 eddi eddi  157  2. Jun 20:55 test.html.var

              URI: test.html.en
              Content-type: text/html
              Content-language: en, en-us, en-gb

              URI: test.html.de
              Content-type: text/html
              Content-language: de, de-ch, de-at, de-de

            2. Hallo Eddie,

              AddLanguage en .en

              AddLanguage en-gb .en-gb
              AddLanguage en-us .en-us

                
              Diese Variante kommt für mich nicht in Frage, da ich keine Lust  
              habe für eine Sprache die gleichen Files mehrere Male auf dem  
              Server liegen zu haben. Auch ein Workaround mit symlinks finde ich  
              nicht wirklich gelungen.  
                
              
              > Und woher soll apache Deiner Meinung nach wissen, dass er bei Anfrage nach %{dateiname}.html auch %{dateiname}.html.var mit einzubeziehen hat, wenn Du ihm die Möglichkeit dazu mit `Options -Mutiviews`{:.language-apache} nimmst? ;)  
                
              In meinem allerersten Post habe ich die Frage gestellt, ob ich diesen  
              grundsätzlichen Mechanismus richtig verstanden habe. Jetzt werde ich  
              darauf hingewiesen, dass dem anscheinend nicht so ist. Die Option  
              -Multiviews habe ich ich keinem meiner Posts aufgeführt.  
                
              
              >   
              > Deine Lösung sollte also so aussehen:  
              >   
              > ~~~apache
              
              <Files test.html>  
              
              > # produktiv dann:  
              > # <Files *.html>  
              > 	SetHandler type-map  
              > </Files>  
              > Options -Multiviews
              
              

              In die test.html schreibst Du dann die Deklarationen zu den einzelnen Dateien rein.

              Funktioniert nicht. Ich kriege nur den Inhalt der HTML Datei im Browers anzeigt. Das Firefox-Addon habe ich installiert. Was sind "richtige" Header?

              Danke für Deine Hilfe & Gruss

              still_out_of_ideas

              1. Re:

                Auch ein Workaround mit symlinks finde ich nicht wirklich gelungen.

                verständlich.

                | Und woher soll apache Deiner Meinung nach wissen, dass er bei Anfrage nach %{dateiname}.html auch %{dateiname}.html.var mit einzubeziehen hat, wenn Du ihm die Möglichkeit dazu mit Options -Mutiviews nimmst? ;)

                In meinem allerersten Post habe ich die Frage gestellt, ob ich diesen
                grundsätzlichen Mechanismus richtig verstanden habe. Jetzt werde ich
                darauf hingewiesen, dass dem anscheinend nicht so ist.

                Weißt Du, ich bin blond. ;)

                Die Option -Multiviews habe ich ich keinem meiner Posts aufgeführt.

                [ref:?t=187417&m=1245761] Du auch. ;-P *scnr*

                Funktioniert nicht. Ich kriege nur den Inhalt der HTML Datei im Browers anzeigt.

                Bitte poste alle Konfigurationen, die auf das "Test"-Verzeichnis Wirkung entfalten von der Serverkonfiguration beginnend!
                Derweil werde ich mal einen 2.2.8 kompilieren, um zu sehen, was da vielleicht im Argen liegt.

                Das Firefox-Addon habe ich installiert. Was sind "richtige" Header?

                Zum Beispiel:

                Accept-Language: de,de-at;q=0.8,de-de;q=0.6,en;q=0.4,en-us;q=0.2
                Accept-Language: en,en-us;q=0.8,de;q=0.6,de-de;q=0.4,de-at;q=0.2

                Hier ist wichtig, dass die Qualifizierung richtig gesetzt ist RFC 3282.

                Gruß aus Berlin!
                eddi

                --
                Ab einem gewissen Erkenntnisstand ist die Versuchung wohl zu groß, in diesem und seinen begleitenden Errungenschaften zu verharren.
                Das nenne ich Aufblick zu den Stufen des Tempels von der geistigen Gosse aus!