| 

.NET C# Java Javascript Exception

1
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?
07.04.2011
Schlauschauer 11 1 2
3 Antworten
1
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.
07.04.2011
maligree 11 1
0
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 :)
07.04.2011
cruX 803 1 1 9
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.
Schlauschauer 07.04.2011
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 :)
cruX 07.04.2011
0
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:

Beispiel:
http://labs.delacap.com/geo/services/geoip-1.2/?ip=212.1xx.xx.xx&output=json


liefert:
{"countryCode":"BE","countryName":"BELGIUM","region":"ANTWERPEN","city":"MECHELEN","latitude":51.033000946,"longitude":4.46700000763,"ipaddr":"212.XXX.XX.XX","ipno":35648XXXXX}

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.

Hoffe das hilft ;)
07.04.2011
Marco Rieger 820 8

Stelle deine Php-Frage jetzt!