Идентификация языка (Opera, Safari, Chrome) в PHP - PullRequest
0 голосов
/ 12 августа 2010

Я использую $_SERVER["HTTP_ACCEPT_LANGUAGE"] для определения языка браузера, который отлично работает для Firefox и IE:

Firefox:
de,en-us;q=0.9,en;q=0.7,ru;q=0.6,ro;q=0.4,hu;q=0.3,zh;q=0.1

Internet Explorer:
de

К сожалению, он не работает для следующих браузеров:

Opera:
en,en-US;q=0.9,ja;q=0.8,fr;q=0.7,de;q=0.6,es;q=0.5,it;q=0.4,pt;q=0.3,pt-PT;q=0.2,nl;q=0.1,sv;q=0.1,nb;q=0.1,da;q=0.1,fi;q=0.1,ru;q=0.1,pl;q=0.1,zh-CN;q=0.1,zh-TW;q=0.1,ko;q=0.1

Safari:
en-us

Chrome:
en-US,en;q=0.8

Я не вижу никаких полей в выводе phpinfo, которые были бы полезны. Пожалуйста, дайте мне знать, если у вас есть какие-либо предложения. Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 14 августа 2010

Я не совсем понимаю, что здесь не работает. Все браузеры отправляют относительно разумные и синтаксически правильные заголовки Accept-Language. Opera, скорее всего, отправляет то, что настроено для отправки в «Предпочтения> Общие> Язык> Детали». Если вы хотите, чтобы ваша Opera запрашивала другой язык или расставила приоритеты по-другому, вы можете изменить его.

0 голосов
/ 12 августа 2010

У меня нет всех этих браузеров, но как насчет $_SERVER["HTTP_USER_AGENT"]?

Firefox:

Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8

Хром:

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.470.0 Safari/534.3

В моем случаеэто нормально, потому что я использую хром с en-US и Firefox с ним (итальянский)

...