Andrea: Browser Locale auslesen

Hallo zusammen,

ich möchte gerne mit PHP die Browser-Locale des Users auslesen.

Daher habe ich folgende Fragen:
Ist das mit PHP möglich und wie würde man da vorgehen?

Ich möchte die Mehrsprachigkeit so gestalten, dass die Mehrsprachigkeit über ein Array mit den sprachabhängigen Textbausteinen, der in einer include-Datei ist umgesetzt wird. Das bedeutet, dass ich für jede Sprache eine include-Datei mit den Textbausteinen habe.

Was ist nun, wenn eine Browser-Locale übermittelt wird für die ich keine Sprachdatei habe? In diesem Fall möchte ich, dass eine Default-Sprache angezeigt wird.

Wie würde ich dann die Default-Sprachdatei heranziehen.

Ich möchte ungern abfragen

if ( $lang != 'en' || $lang != 'de' || $lang != 'fr' || $lang != 'es')
{
  $lang = 'en';
}

Da ich nicht weiss wie viele Sprachen es mal geben wird würde ich mir wünschen, dass man die Default-Sprachdatei in einer einfacheren Art und Weise heranzieht.

Könnt Ihr mir vielleicht weiter helfen?

Vielen Dank im Voraus
Liebe Grüße

Andrea

  1. Hallo Andrea,

    Könnt Ihr mir vielleicht weiter helfen?

    Ich weiß nicht genau, was du mit "Browser-Locale" meinst, aber vielleicht hilft dir http://aktuell.de.selfhtml.org/tippstricks/php/httpsprache/index.htm?

    Grüße aus Nürnberg
    Tobias

    1. Hallo Tobias,

      vielen Dank. Das hilft mir sicherlich weiter. Schaut auf den ersten Blick recht brauchbar aus.

      Liebe Grüße
      Andrea

  2. Hallo Andrea,

    ich möchte gerne mit PHP die Browser-Locale des Users auslesen.
    Ist das mit PHP möglich und wie würde man da vorgehen?

    wozu?
    Entschuldige, die Frage klingt jetzt schroff und wenig motivierend. Aber ein Vorhaben, wie du es skizzierst (Sprache automatisch auswählen) ist, so reizvoll und sinnvoll es klingen mag, nicht unbedingt das Gelbe vom Ei.

    Znächst mal: Was meinst du mit Browser-Locale?

    Die Sprache, in der der Browser (bzw. das System installiert ist? Das ist problematisch, weil etliche Browser vielleicht nicht in Deutsch verfügbar sind, deren Benutzer aber trotzdem deutschsprachige Seiten sehen möchten. Abgesehen davon wüsste ich nicht, wie du diese Information bereits serverseitig abfragen kannst.

    Oder doch eher die Sprache, die in den jeweiligen Browsereinstellungen als Preferred Language eingestellt ist? Das bekommt der Server (eventuell) sogar über den HTTP-Header Accept-Language mitgeteilt.

    In beiden Fällen gibt es aber genügend Fälle, wo deine Vorauswahl sehr wahrscheinlich falsch liegt (Stichwort Internet-Café). Ich halte es daher für günstiger (und auf jeden Fall einfacher), wenn man sich auf den Standpunkt stellt: Das ist 'ne deutsche Seite, die Default-Sprache ist Deutsch. Oder auch: Das Internet ist international, die Default-Sprache ist Englisch. Lege es fest, wie es dir sinnvoll erscheint, und lass den Besucher eine andere Sprache auswählen, wenn er das denn möchte.

    Ich möchte ungern abfragen
    if ( $lang != 'en' || $lang != 'de' || $lang != 'fr' || $lang != 'es')
    {
      $lang = 'en';
    }

    Das muss ja auch nicht sein, geht doch sehr viel eleganter mit in_array().

    Schönen Tag noch,

    Martin

    --
    Computer lösen für uns Probleme, die wir ohne sie gar nicht hätten.
    1. Hallo,

      Danke für die Antwort.

      Entschuldige, die Frage klingt jetzt schroff und wenig motivierend. Aber ein Vorhaben, wie du es skizzierst (Sprache automatisch auswählen) ist, so reizvoll und sinnvoll es klingen mag, nicht unbedingt das Gelbe vom Ei.

      Wieso denn? Das ist bei allen professionellen Anwendungen der Fall. Bei uns in der Firma wird zumindest so entwickelt, allerdings ist das dann JAVA.

      Znächst mal: Was meinst du mit Browser-Locale?

      Die Sprache, die im Browser eingestellt ist. Bei Firefox zu finden unter "Extras->Einstellungen->Allgemein->Sprachen. Die oberste Sprache ist dabei ausschlaggebend.

      Natürlich kann der Benutzer durchaus noch die Sprache wählen, Stichwort Internet Cafe.

      In Java wüßte ich wie es geht, aber in PHP bin ich noch ein Newbie. Ich dachte es gäbe da ne Möglichkeit die im Browser eingestellte Sprache herauszufinden.

      Liebe Grüße
      Andrea

      1. Hallo,

        Wieso denn? Das ist bei allen professionellen Anwendungen der Fall.

        Ja, offensichtlich halten viele das für besonders professionell. Das dem in Web-Anwendungen mit dem Browser als Client nicht so ist, wurde hier auch schon öfter dargestellt. Nur mal einige Beispiele:

        • ein deutscher Nutzer befindet sich in einem Internetcafé n USA bzw. GB, wo die Browser natürlicherweise mit Englisch als Standardsprache laufen.
        • ein Nutzer mit deutschem Windows und Deutsch als Standardsprache möchte gerne die englischsprachige Version der MS-Knowledge-Base benutzen, weil die Übersetzungen gelinde gesagt schlecht sind.

        Bei uns in der Firma wird zumindest so entwickelt, allerdings ist das dann JAVA.

        Besser wäre es, dem Benutzer die Sprachauswahl zu überlassen.

        viele Grüße

        Axel

        1. Hallo,

          Bei uns in der Firma wird zumindest so entwickelt, allerdings ist das dann JAVA.
          Besser wäre es, dem Benutzer die Sprachauswahl zu überlassen.

          Das ist doch auch der Fall. Der User kann trotzdem noch wählen welche Sprache er haben möchte. Hatte ich im vorigen Posting auch erwähnt.

          Es ist nun mal so, dass in dem meisten Fällen jemand die Sprache im Browser so einstellt wie er es haben möchte. In diesen Fällen möchte ich die Seite gleich in der eingestellten Sprache anzeigen.
          Der Fall, dass ein Deutscher in den USA ist und die Browsersprache dann en_us ist, tritt weniger oft auf als der oben geschilderte Fall.

          Falls dieser Fall dennoch auftritt kann der Deutsche in den USA trotzdem noch auf das kleine deutsche Fähnchen klicken und sich die Seite in deutsch anzeigen lassen.

          Gruss
          Andrea

          1. Hi,

            Falls dieser Fall dennoch auftritt kann der Deutsche in den USA trotzdem noch auf das kleine deutsche Fähnchen klicken und sich die Seite in deutsch anzeigen lassen.

            Da würde ich eher schon als Deutscher in Deutschland auf den Union Jack oder den Star-Spangled Banner klicken. Aber das ist eine andere Geschichte... ;-)

            So long,

            Martin

            --
            Moskito, ergo summ.
          2. Hallo,

            Besser wäre es, dem Benutzer die Sprachauswahl zu überlassen.
            Das ist doch auch der Fall. Der User kann trotzdem noch wählen welche Sprache er haben möchte. Hatte ich im vorigen Posting auch erwähnt.

            Ja, das hatte ich wohl überlesen.

            Falls dieser Fall dennoch auftritt kann der Deutsche in den USA trotzdem noch auf das kleine deutsche Fähnchen klicken und sich die Seite in deutsch anzeigen lassen.

            Ja, _dann_ ist es wirklich professionell. Die Aufregung über solche Automatismen entstehen durch solche Lösungen, wie die in der MS Knowledge Base. Dort bekommt man nämlich immer wieder die "super tollen" maschinell ins Deutsche übersetzten Ergebnisse angeboten, wenn man nicht die Browsersprache auf Englisch umstellt. Leider muss ich diesen Dienst auch öfter von PCs aus nutzen, die nicht meine sind und wo ich nicht unbedingt solche grundsätzlichen Einstellungen ändern möchte.

            viele Grüße

            Axel

          3. Hi,

            Falls dieser Fall dennoch auftritt kann der Deutsche in den USA trotzdem noch auf das kleine deutsche Fähnchen klicken und sich die Seite in deutsch anzeigen lassen.

            Uih, da sehe ich schon gleich die nächste Mega-Diskussion am Horizont (mal wieder) zum Thema "Flaggen für Sprachauswahl". >>;->

            Aber lassen wir das in diesem Jahr - es soll beschaulich enden - wenigstens hier im Forum. O;-)

            Gruß, Cybaer

            --
            Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      2. Hi,

        Ich dachte es gäbe da ne Möglichkeit die im Browser eingestellte Sprache herauszufinden.

        Ja, steht ggf. in $_SERVER['HTTP_ACCEPT_LANGUAGE'].

        Wenn der Surfer also de erlaubt hat (egal wie stark gewichtet, egal ob de-at & Co., dann sieht das vereinfacht so aus:

        if(!empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && strpos($_SERVER['HTTP_ACCEPT_LANGUAGE'],'de')!==FALSE) echo 'Browser akzeptiert explizit Deutsch!';

        Zuerst abfragen, ob der Browser die Angabe überhaupt abgeschickt hat (ist nicht zwingend), dann die Abfrage, ob ein "de" enthalten ist.

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
        1. Hallo Cybaer,

          if(!empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && strpos($_SERVER['HTTP_ACCEPT_LANGUAGE'],'de')!==FALSE) echo 'Browser akzeptiert explizit Deutsch!';

          Accept-Language: en;q=1, de;q=0

          Deiner Logik nach müsste der Browser Deutsch akzeptieren, was er aber hier explizit nicht tut, siehe auch RFC 2616, Abschnitt 14.4: Accept-Language

          Wenn Du mit dem Header arbeiten willst, dann parse ihn bitte richtig, ich habe ja eine Funktion vorgestellt, die sich an den Standard hält: http://aktuell.de.selfhtml.org/tippstricks/php/httpsprache/.

          Viele Grüße,
          Christian

          1. Hi,

            Deiner Logik nach müsste der Browser Deutsch akzeptieren,

            Nie nicht würde ich jemanden ernsthaft von deinem bereits geposteten Luxus-Artikel-Link weglotsen wollen, um ihn mit einem Einzeiler zufriedenzustellen! ==;-))

            Gruß, Cybaer

            --
            Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
            1. Hallo Cybaer,

              Deiner Logik nach müsste der Browser Deutsch akzeptieren,

              Nie nicht würde ich jemanden ernsthaft von deinem bereits geposteten Luxus-Artikel-Link weglotsen wollen, um ihn mit einem Einzeiler zufriedenzustellen! ==;-))

              *lol* Luxus-Artikel. You made my day. :-)

              Viele Grüße,
              Christian

    2. Hi,

      Entschuldige, die Frage klingt jetzt schroff und wenig motivierend. Aber ein Vorhaben, wie du es skizzierst (Sprache automatisch auswählen) ist, so reizvoll und sinnvoll es klingen mag, nicht unbedingt das Gelbe vom Ei.

      Entschuldige, wenn das jetzt auch schroff klingt: Du bist ja wirklich ein Meister der Ferndiagnose oder ein begnadeter Hellseher. >;->

      In beiden Fällen gibt es aber genügend Fälle, wo deine Vorauswahl sehr wahrscheinlich falsch liegt (Stichwort Internet-Café). Ich halte es daher für günstiger (und auf jeden Fall einfacher), wenn man sich auf den Standpunkt stellt: Das ist 'ne deutsche Seite, die Default-Sprache ist Deutsch. Oder auch: Das Internet ist international, die Default-Sprache ist Englisch. Lege es fest, wie es dir sinnvoll erscheint, und lass den Besucher eine andere Sprache auswählen, wenn er das denn möchte.

      Ich habe z.B. eine de/en-Site, die wendet sich an Surfer aus der Industrie. Wenn die im IN-Cafe sind, dann mit ihrem eigenen WLAN-Notebook. Wenn die Homepage angesurft wird, dann erscheint die deutsche Seite, sofern de vom Browser akzeptiert wird (oder, falls nicht, auch kein en akzeptiert wird). Zu jeder Zeit kann man die Sprache wählen und auf die arallele anderssprachige Seite wechseln. Also nur wenn man die "Plain-Domain" eingibt, tritt der Automatismus in Kraft (halt anstelle der öfters zu sehenden "wählen Sie manuell die Sprache"-Seite).

      Ich finde es sinnvoll, sonst hätte ich es nicht gemacht.

      IMHO: Wenn Du nur deine Meinung (ungefragt - und ohne die näheren Umstände überhaupt zu wissen) kundtun möchtest (wenn schon überhaupt), dann wäre "weniger schroff" vielleicht besser. Auch fürs eigene Renommee. ;-)

      Gruß, Cybaer

      --
      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      1. Hallo,

        IMHO: Wenn Du nur deine Meinung (ungefragt - und ohne die näheren Umstände überhaupt zu wissen) kundtun möchtest (wenn schon überhaupt), dann wäre "weniger schroff" vielleicht besser. Auch fürs eigene Renommee. ;-)

        Das hat er sicherlich nicht so gemeint.

        Liebe Grüße
        Andrea

        1. Hi,

          Das hat er sicherlich nicht so gemeint.

          Bestimmt nicht! Ist ein Netter (man kennt sich ja hier aus dem Forum)! :-)

          Gruß, Cybaer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      2. Hallo Cybaer,

        Entschuldige, die Frage klingt jetzt schroff und wenig motivierend. Aber ein Vorhaben, wie du es skizzierst (Sprache automatisch auswählen) ist, so reizvoll und sinnvoll es klingen mag, nicht unbedingt das Gelbe vom Ei.

        Entschuldige, wenn das jetzt auch schroff klingt: Du bist ja wirklich ein Meister der Ferndiagnose oder ein begnadeter Hellseher. >;->

        danke für die Blumen, aber ich habe mit der obigen Feststellung nur die Quintessenz der vielen Beiträge formulieren wollen, die hier schon zum Thema "automatische Sprachauswahl" diskutiert wurden. Die vorherrschende Meinung ist anscheinend "lass es bleiben", und mittlerweile bin auch ich dieser Meinung (das war nicht immer so).

        IMHO: Wenn Du nur deine Meinung (ungefragt - und ohne die näheren Umstände überhaupt zu wissen) kundtun möchtest (wenn schon überhaupt), dann wäre "weniger schroff" vielleicht besser. Auch fürs eigene Renommee. ;-)

        Naja, "schroff" war meiner Ansicht nach nur die Zusammenfassung auf einen Halbsatz. Ich habe mich bemüht, das trotzdem anständig und freundlich zu formulieren. _Ich_ war der Meinung, das wäre mir gelungen.

        Schönen Tag noch,

        Martin

        --
        Lebensmotto der Egoisten: Was ist so schlimm daran, dass jeder nur an sich selbst denkt? Dann ist doch an alle gedacht!