Der Linker: ACCEPT_LANGUAGE

Beitrag lesen

Hallo Christian,

Da wir gerade dabei wären: ich hab' mich jetzt mal an die Arbeit gemacht und bin mit dem Ergebnis recht zufrieden:

// detect browser language
function lang_getfrombrowser ($allowed_languages, $default_language) {
    [schnipp Code]
}

ist gut geworden gefällt mir.

Anregungen? Weitere Kritik?

Hmm... <ganzkleinundleise>ja</ganzkleinundleise>

Das steuern über eine Konstante halte ich in diesem Fall für keine gute Idee.
Warum?
Es ist zwar in normalen Web-Anwendungen sehr unwahrscheinlich das die Funktion mehr als einmal aufgerufen wird, aber es gibt ja auch noch andere Bereiche in denen PHP zum Einsatz kommt. Und eine Konstante ist, wie ihr Name es beschreibt, nun mal konstant, einmal gesetzt kann man sie zur Laufzeit eines Skripts nicht ändern.
Stell dir mal ein PHP-GTK Mailprogramm vor das 'X-Accept-Language:' aus den Mails auswertet... (Damit die Änderungen wirksam werden Starten sie das Programm neu)

Weiterhin schlage vor dass das Standartverhalten der Funktion RFC-konform ist aber ein deutliche Empfehlung auf die andere Verhaltensweise geben wird. Da mag zwar ein wenig komisch klingen aber gerade weil du vor hast sie der Öffentlichkeit zu überreichen halte ich es für besser die RFCs zu würdigen.

Zur Lösung der beiden Vorschläge dachte ich an folgendes:
Die Funktion bekommt einen Dritten optionalen Parameter
function lang_getfrombrowser ($allowed_languages, $default_language, $CONTENT_NEGOTIATE_STRICT = TRUE) {
.
..
if ($CONTENT_NEGOTIATE_STRICT) {
        // break up the while loop
        break;
}
..
.
Damit ist der Coder gezwungen sich _bewusst_ gegen ein RFC-konformes Verhalten zu entscheiden.

Gruß
  Der Linker

PS: Eigentlich sollte man den Code in HTTP::negotiateLanguage durch deinen ersetzten.

0 39

httpd.conf

andy
  • webserver
  1. 0
    Christoph Schnauß
    1. 0
      Christian Seiler
      1. 0
        Christoph Schnauß
        1. 0
          Christian Seiler
        2. 0
          Der Linker aus www.php4-forum.de
          1. 0
            Christoph Schnauß
            1. 0
              Christian Seiler
              1. 0

                RFC2616-konformes parsen von Accept-Language

                Christian Seiler
                • php
                1. 0
                  Orlando
                  1. 0
                    Christian Seiler
                    1. 0
                      Orlando
                      1. 0
                        Christian Seiler
                        • menschelei
                        1. 0

                          (OT) Kein spezifisches Thema ;-)

                          Orlando
                          1. 0

                            (OT) Nichts besonderes ;-)

                            Christian Seiler
                            1. 0

                              (OT) Chat-o-Rama ;-)

                              Orlando
                              1. 0

                                (OT) Ähm, ja, irgendein Titel halt ;-)

                                Christian Seiler
  2. 0
    Christian Seiler
  3. 0
    Sven Rautenberg
  4. 0
    andy
  5. 0
    andy
  6. 0
    andy
    1. 0

      ACCEPT_LANGUAGE

      Der Linker
      • php
      1. 0
        Christian Seiler
        1. 0
          Der Linker
          1. 0
            Linker
          2. 0
            Christian Seiler
            1. 0
              Der Linker
              1. 0
                Christian Seiler
                1. 0
                  Der Linker
                  1. 0
                    Christian Seiler
                    1. 0
                      Der Linker
                      1. 0
                        Christian Seiler
                        1. 0
                          Der Linker
                          1. 0
                            Christian Seiler
                            1. 0

                              Auf Wiedersehen

                              Der Linker
                              • menschelei
                        2. 0
                          Harry
                          1. 0
                            Harry
                          2. 0
                            Christian Seiler