Leo02: Sprachauswahl in .htaccess

Hallo,
(wie) kann ich in .htaccess eine Variable setzen, die die beim Anwender eingestellte bevorzugte Sprache angibt, um diese Variable dann in PHP abfragen zu können?
Grüße
Leo

  1. @@Leo02:

    nuqneH

    (wie) kann ich in .htaccess eine Variable setzen, die die beim Anwender eingestellte bevorzugte Sprache angibt, um diese Variable dann in PHP abfragen zu können?

    Du willst Sprachvereinbarung (language negotiation) implementieren? Das ginge mit MultiViews (ohne PHP).

    Um das angesprochene Problem mit dem „Gedächtnis“ zu beheben, bietet sich eine PHP-Lösung mit Cookies an.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Hallo

      Um das angesprochene Problem mit dem „Gedächtnis“ zu beheben, bietet sich eine PHP-Lösung mit Cookies an.

      Welches/wo "angesprochene" Problem meinst Du?

      Cookies möchte ich nicht verwenden.
      Meine Theorie:
      Kann ich nicht eine Environment-Variable in .htaccess mit der Sprache besetzen und diese dann im PHP-Programm abfragen (und ggf. an Folgeseiten über POST weitergeben)?
      Ob das auch in der Praxis möglich ist?

      1. Ob das auch in der Praxis möglich ist?

        Warum sollte man das tun wollen, wenn Cookies das Mittel der Wahl sind und das Session-Handling von PHP sowieso für die Weitergabe der Session-ID sorgt, wenn keine Cookies verfügbar sind?

        1. Warum sollte man das tun wollen, wenn Cookies das Mittel der Wahl sind und das Session-Handling von PHP sowieso für die Weitergabe der Session-ID sorgt, wenn keine Cookies verfügbar sind?

          Mit Sessions habe ich noch keine Erfahrung (aber auch sonst nicht viel ;-)
          werde mich aber gerne damit befassen.
          Aber auch da muss ich doch die Sprache irgendwo herbekommen und dann speichern in Session-Variablen?

          1. @@Leo02:

            nuqneH

            Aber auch da muss ich doch die Sprache irgendwo herbekommen

            Aus dem 'Language-Accept'-Feld des HTTP-Headers. Die Sprachen, Mehrzahl.

            Qapla'

            --
            Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
            (Mark Twain)
            1. Aber auch da muss ich doch die Sprache irgendwo herbekommen

              Aus dem 'Language-Accept'-Feld des HTTP-Headers. Die Sprachen, Mehrzahl.

              Und dafür gibt es selbstveständlich unter PHP fertige Lösungen:

              http://pear.php.net/package/HTTP/

            2. Hallo,

              Aber auch da muss ich doch die Sprache irgendwo herbekommen
              Aus dem 'Language-Accept'-Feld des HTTP-Headers.

              andersrum, Accept-Language.

              Die Sprachen, Mehrzahl.

              Das gilt natürlich trotzdem.

              Ciao,
               Martin

              --
              Computer lösen für uns Probleme, die wir ohne sie gar nicht hätten.
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              1. Hallo,

                Aus dem 'Language-Accept'-Feld des HTTP-Headers.

                andersrum, Accept-Language.

                Dazu habe ich gefunden

                  
                The Accept-Language request-header field is similar to Accept, but restricts the set of natural languages that are preferred as a response to the request. Language tags are defined in section 3.10.  
                  
                       Accept-Language = "Accept-Language" ":"  
                                         1#( language-range [ ";" "q" "=" qvalue ] )  
                       language-range  = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" )  
                  
                Each language-range MAY be given an associated quality value which represents an estimate of the user's preference for the languages specified by that range. The quality value defaults to "q=1". For example,  
                  
                       Accept-Language: da, en-gb;q=0.8, en;q=0.7  
                
                

                Gibt es dazu für meine Zwecke keine einfachere Beschreibung?
                Kann ich davon ausgehen, dass die bevorzugte Sprache ganz vorne steht?
                Wenn man keine speziellen Sprachschattierungen möchte, z.B. bei en-us nur en,
                bezeichnen dann immer die beiden ersten Stellen die "Haupt"-Sprache oder gibt es auch Sprachkürzel, die länger sind als 2 Stellen?

                1. @@Leo02:

                  nuqneH

                  Wenn man keine speziellen Sprachschattierungen möchte, z.B. bei en-us nur en

                  Im Accept-Language-Header sollte eigentlich 'en-US' nicht allein stehen, sondern dann auch 'en'. [qa-lang-priorities]

                  bezeichnen dann immer die beiden ersten Stellen die "Haupt"-Sprache

                  Nein. Sondern die Stellen vor dem ersten Bindestrich. [article-language-tags]

                  gibt es auch Sprachkürzel, die länger sind als 2 Stellen?

                  Ja. [qa-lang-2or3]

                  Vielleicht solltest du dir einfach mal alle Artikel zum Thema Sprache anschauen.

                  Qapla'

                  --
                  Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                  (Mark Twain)
                  1. Hallo,
                    ich weiß, dass das Ziel von Selfhtml ist "Hilfe zur Selbsthilfe".

                    Vielleicht solltest du dir einfach mal alle Artikel zum Thema Sprache anschauen.

                    Aber ist es wirklich nötig, dass man - wenn man ein kleines Problem hat - jeweils immer umfangreiche Literatur lesen muss?
                    Mein altes Hirn ist leider nicht mehr so aufnahmefähig! Und wenn dieses Problem gelöst ist, werde ich die Information vermutlich nie mehr benötigen - und falls doch wäre das Wissen aus o.g. Grunde wieder weg!
                    Dabei wird (z.B. in dem verlinkten Dokument in jedem 2. Satz mindestens auf einen weiteren Artikel verwiesen.
                    Unter den oben verlinkten Kapiteln finde ich vieles aber nicht wie ich den Inhalt von Accept-language interpretieren soll, bzw. nur "welche der angegebenen Sprachen ist die bevorzugte".

                    1. Hi there,

                      ich weiß, dass das Ziel von Selfhtml ist "Hilfe zur Selbsthilfe".

                      Vielleicht solltest du dir einfach mal alle Artikel zum Thema Sprache anschauen.
                      Aber ist es wirklich nötig, dass man - wenn man ein kleines Problem hat - jeweils immer umfangreiche Literatur lesen muss?

                      Ja, die Erfahrung musste ich auch machen.
                      Verweis auf Literatur, Literatur, ....
                      Bevor meine erste Homepage online war, sollte ich mir

                      • HTML
                      • CSS
                      • SSI
                      • Literatur zu .htaccess
                      • file transfer
                      • php oder perl
                      • und vieles andere durchlesen.
                        Allerdings immer umfangreiche Werke anstatt Verweise auf die Darstellung eines angesprochenen Problems!
                        Ich bin jetzt fit in allen Bereichen, benötigte von all dem angelesenen Wissen nur einen Bruchteil und meine Homepage wurde nach Monaten endlich fertig!
                        Oft hätte eine kleine Hilfestellung genügt, um weiter zu kommen, aber nein es muss ein Server-Handbuch gelesen werden!
                        Da ich jetzt nicht laufend mit dem Thema beschäftigt bin, werde ich wohl beim nächsten Male wieder von vorne anfangen müssen - allerdings habe ich da schon die alte HP als Muster.
                      1. Allerdings immer umfangreiche Werke anstatt Verweise auf die Darstellung eines angesprochenen Problems!

                        Das Problem ist, dass die "Darstellung eines angesprochenen Problems" oft nicht verfügbar ist und vor allem aber, dass die Übernahme von Rezepten aus diesen Darstellungen, so man sie unkritisch - also ohne das Grundlagenwissen - durchführt, oft zu Sicherheitsproblemen führt.

                        Fred

              2. @@Der Martin:

                nuqneH

                andersrum, Accept-Language.

                Sag ich doch. ;-)

                Qapla'

                --
                Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                (Mark Twain)
      2. @@Leo02:

        nuqneH

        Um das angesprochene Problem mit dem „Gedächtnis“ zu beheben […]
        Welches/wo "angesprochene" Problem meinst Du?

        Das im verlinkten Artikel zu Sprachvereinbarung (language negotiation) angesprochene.

        Kann ich nicht eine Environment-Variable in .htaccess mit der Sprache besetzen und diese dann im PHP-Programm abfragen (und ggf. an Folgeseiten über POST weitergeben)?

        Ich verstehe nicht, was du erreichen willst.

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. Ich verstehe nicht, was du erreichen willst.

          Ich möchte, dass für alle von mir unterstützten Sprachen die gleichen Seiten(namen) aufgerufen werden.
          Also
          index.php
          Seite1.php
          Seite2.php
          .....
          und nicht Seitei.fr.html und Seitei.en.html
          Anhand der Sprache wird die Seite entsprechend aufgebaut.
          Gruß
          Leo

          1. @@Leo02:

            nuqneH

            Ich möchte, dass für alle von mir unterstützten Sprachen die gleichen Seiten(namen) aufgerufen werden.

            Schön. Und warum hast du die von mir dazu verlinkten Artikel nicht gelesen?

            Qapla'

            --
            Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
            (Mark Twain)
            1. Schön. Und warum hast du die von mir dazu verlinkten Artikel nicht gelesen?

              Das war wohl ein Fehler, aber beim ersten Vorschlag hast du geschrieben "ohne PHP", damit war er für mich abgehakt, da ich ja PHP verwenden möchte.
              Der zweite Vorschlag beinhaltete Cookies, und diese wollte ich ja nicht verwenden.
              Gruß
              Leo

              1. @@Leo02:

                nuqneH

                Schön. Und warum hast du die von mir dazu verlinkten Artikel nicht gelesen?

                Das war wohl ein Fehler

                Ja.

                da ich ja PHP verwenden möchte.

                Ob du PHP für etwas anderes als die Sprachvereinbarung verwenden möchtest, ist irrelevant.

                Für eine einfache Sprachvereinbarung (allein anhand der in 'Accept-Language' angegebenen Sprachen) möchtest du kein PHP verwenden.

                Qapla'

                --
                Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                (Mark Twain)
      3. Meine Theorie:
        Kann ich nicht eine Environment-Variable in .htaccess mit der Sprache besetzen und diese dann im PHP-Programm abfragen (und ggf. an Folgeseiten über POST weitergeben)?

        Wozu? Informiere Dich über den Inhalt des globalen Hashes $_SERVER. Darin steht, was Du suchst.

        Ob das auch in der Praxis möglich ist?

        In der Praxis willst Du dem Benutzer nach der Voreinstellung seines Browsers noch eine weitere Auswahlmöglicheit bieten. Informiere Dich über Formulare, globalen Hashes $_GET, $_POST, $_REQUESTS und natürlich $_SESSION.

        Fange mit einem

        <?php phpinfo(); ?>

        an zu lernen.