In PHP kann ich mittels der $_SERVER['HTTP_ACCEPT_LANGUAGE'] Variable die eingestellten Browsersprachen ermitteln. Nun kann es aber sein, dass der Browser eines Client zwar auf Deutsch eingestellt ist aber Deutsch in der Liste der Sprachen nicht ganz oben steht. Gibt es hier eine bzw. eine andere Möglichkeit, die tätsächlich eingestellte Sprache zu ermittlen?
Die "tatsächliche" Browsersprache? Also die Lokalisation der UI? Nicht dass ich wüsste, höchstens über obskures Javascript. Und dann garantiert nicht bei der ersten Anfrage.
HTTP_ACCEPT_LANGUAGE ist von der Intention her die Liste der Sprachen, die der Benutzer gern hätte und versteht, in absteigender Sortierung nach Präferenz. Bei mir wäre das "de, en" -- ich möcht also am liebsten deutsch, kann aber auch problemlos englisch lesen. Idealerweise nimmt der Browser dafür die eingestellte Systemsprache, man kann es in vielen Browsern aber auch irgendwo tief in den Einstellungen umstellen. Kaum ein Benutzer kennt aber überhaupt die Möglichkeit, dies umzustellen.
Wenige Browser senden auch einen Lokalisationsstring in der Browserkennung. Aber Firefox und IE machen dies laut meinen Serverlogs nicht; und die, die es machen, tun es in nicht-standardisierter Form. Für letztere max. 5% der Besucher macht es also keinen Sinn, sich darum zu kümmern.
Die beste Methode ist immer noch:
Liefere die beste vorhandene Sprache laut HTTP_ACCEPT_LANGUAGE aus
Gib dem Benutzer in der Webseite die Möglichkeit, die Sprache umzustellen
Was willst du überhaupt machen? Willst du den Benutzer abhängig von Browser und Lokalisation durch seine Menüstruktur führen, um Einstellungen vorzunehmen? Wenn du in Javascript nichts findest, geht das nur, indem du den Benutzer selbst fragst.
Also in php selbst ist das schonmal ausgeschlossen.
Wenn du an Informationen des Users möchtest, die nicht vom Browser mitgeliefert werden, musst du dich an JavaScript bedienen. Ich meine aber, dass du mit js die Systemsprache nur im IE auslesen kannst.
Davon mal abgesehen, was willst du mit sowas? Das Land des Anwenders lässt sich über die IP ermitteln und die Sprache des Browsers mithilfe von php.
Wär ich User einer Website, die versucht in meinem System rumzuschnüffeln, wär ich ganz schnell wieder da runter. Mit Zugriffen auf Systemebene via Browser wär ich immer etwas vorsichtig :)
Und was meinst du mit
Nun kann es aber sein, dass der Browser eines Client zwar auf Deutsch eingestellt ist aber Deutsch in der Liste der Sprachen nicht ganz oben steht.
?
Hoffe ich konnte helfen. Gruß Andy
PS: Ich bin kein Webentwickler. Wenn ich hier irgendetwas falsches erzähle, korrigiert mich bitte :)
Die IP ist in dem Fall irrelevant. Die Website soll für den User anhand seiner Browsereinstellung personalisiert angezeigt werden (bsp. ausländische Geschäftsleute in Deutschland). Mit: "Nun kann es aber sein, ... " meine ich, dass der Brwoser (bsp. FF) eine Liste an Sprachen anbietet, die ich auch auslesen und bspw. in ein Array schreiben kann. Der der Benutzer die Standardsprache nicht immer oben in der Liste der Sprachen zu liegen hat, ist diese auch nicht an Stelle 0 des Array und somit auch nicht einfach als Standardbrowsersprache ermittelbar.
Ok, da habe ich auf Anhieb das hier gefunden: http://aktuell.de.selfhtml.org/artikel/php/httpsprache/ Habe den Artikel nur schnell überflogen. Vielleicht hilft dir das weiter. Wie gesagt, ich bin kein Webentwickler und werde dir in dieser Sache wahrscheinlich nicht weiterhelfen können :)
Die Richtige Sprache zu finden ist immer bissel bescheiden, du hast folgende möglichkeiten.
Die HTTP Accept-Language wird vom Browser des Surfenden übermittelt, und Teilt dir mit welche Sprache vom Benutzer akzeptiert wird. Als Beispiel in Firefox: Extras -> Einstellungen -> Inhalt -> Sprache
Die andere möglichkeit ist eine Datenbank wie zb. GEOIP zuverwenden. Anhand einer IP adresse wird hier der Länderkürzel der IP zurückgegeben:
Somit weißt du das dein Besucher aus Belgien kommt und entsprechen die Sprache anpassen.
Folgendes ist zubeachten:
- GEOIP liefert keinen Wert, den man zum weiterleiten verwenden kann, wenn der User mit einem Proxyserver untergwegs ist, die Ip des Servers wird hier untersucht und der Standort des Server zurückgegeben, nicht die des Users
- GEOIP sollte nur in Verbindung mit der HTTP ACCEPPT language genutzt werden (beide kombinieren)
- GEOIP funktioniert nicht bei zb. einen Deutschsprachigen Menschen der in den USA lebt und somit mit einer IP aus den USA surft.
Mann muss hier einen Weg aus beiden Möglichkeiten sich schaffen um ben besucher: A: Nicht unnötigt weiterzuleiten und B: Nicht falsch weiterzuleiten
deswegen auch beachten das eine Sprachweiterleitung immer nur 1 mal verfolgen sollte, nach einer weiterleitung den User immer die möglichkeit geben sofort die Sprache wieder zu ändern.
Die Accept Language sollte immer den größten priorisiert Anteil haben.
Mit: "Nun kann es aber sein, ... " meine ich, dass der Brwoser (bsp. FF) eine Liste an Sprachen anbietet, die ich auch auslesen und bspw. in ein Array schreiben kann. Der der Benutzer die Standardsprache nicht immer oben in der Liste der Sprachen zu liegen hat, ist diese auch nicht an Stelle 0 des Array und somit auch nicht einfach als Standardbrowsersprache ermittelbar.