Http Accept язык неправильный вывод из Chrome, немецкий язык (де)

У меня есть мультиязычный сайт. Использование htaccess

 # Another Languages
 #RewriteCond %{HTTP:Accept-Language} ^en [NC]
 #RewriteRule ^$ /en [R=301,L]

 # German
 #RewriteCond %{HTTP:Accept-Language} ^de [NC]
 #RewriteRule ^$ /de [R=301,L]

Проблема:

Я использую немецкую версию новейшего браузера Chrome. По умолчанию он отправляет следующий языковой заголовок:

Chrome /de = string(71) "en-US,en;q=0.8,id;q=0.6,ms;q=0.4,fr;q=0.2,de;q=0.2,es;q=0.2,de-AT;q=0.2"
Chrome /en = string(71) "en-US,en;q=0.8,id;q=0.6,ms;q=0.4,fr;q=0.2,de;q=0.2,es;q=0.2,de-AT;q=0.2"

Но в Firefox и IE:

Firefox /de = string(53) "de,en;q=0.8,en-US;q=0.7,es;q=0.5,fr;q=0.3,de-AT;q=0.2" 
Firefox /en = string(53) "en,en-US;q=0.8,de;q=0.7,es;q=0.5,fr;q=0.3,de-AT;q=0.2" 

IE /de = string(74) "de,en-GB;q=0.9,de-AT;q=0.7,de-DE;q=0.6,de-LI;q=0.4,de-LU;q=0.3,de-CH;q=0.1"  
IE /en = string(74) "en-GB,de;q=0.9,de-AT;q=0.7,de-DE;q=0.6,de-LI;q=0.4,de-LU;q=0.3,de-CH;q=0.1" 

Как видите, английский имеет более высокий приоритет, чем немецкий. Так кто-нибудь тоже получил эту проблему?

2 ответа

Попробуйте перейти в "Настройки", "Языки и настройки ввода" в Chrome и добавить немецкий в качестве одного из языков браузера.

Различные браузеры используют разные алгоритмы для определения предпочитаемых пользователем языков, а затем заполняют ими заголовки Accept-Language.

Например, на вашем компьютере могут быть установлены английские и немецкие языковые стандарты, но пользователь склонен использовать английский интерфейс Chrome и посещать в основном английские веб-сайты - Chrome может отдавать больший приоритет английскому, даже если пользователь немецкий или компьютер находится в Германии.

Не существует 100% точного метода определения языка пользователя, но можно предположить, что если в заголовке Accept-Language перечислен английский в качестве одного из лучших языков - этот пользователь действительно знает язык на достаточно хорошем уровне, чтобы иметь возможность переключать язык позже., Короче говоря, у Chrome есть основания полагать, что вы понимаете en-US.

В Chrome, несмотря на нажатие "Показать Google Chrome на этом языке", также необходимо изменить порядок немецкого языка в верхнем порядке, поэтому Http:Accept-Language будет перенаправлять в /de

Другие вопросы по тегам