我正在 Linux 的本地 Apache 2 Web 服务器中编写一些网页,我想使用 PHP 来自动识别浏览器语言。
在网页中,我正在尝试 console.log()
使用 JavaScript 关于客户端首选哪种语言,我得到 2 个不同的输出:
- JavaScript (
console.log(navigator.language);
) 返回es-ES
- PHP (
<?php echo $_SERVER['HTTP_ACCEPT_LANGUAGE'] ?>
) 返回en-US,en;q=0.5
在about:config
, 变量 intl.accept_languages
设置为 es-ES, es, en-US, en
.
注意:我想获得的本地语言是西类牙语(es-ES
)。
出于某种原因,Firefox 似乎没有在我的 Linux 发行版 (Linux Mint 18.1) 中正确配置,而我已经安装了所有内容(firefox
和 firefox-locale-es
)。
如果我在同一台计算机上尝试使用 Chromium,PHP 输出为 es-ES,es;q=0.8;q=0.6
, 这是正确的。
如果我在其他装有 Windows 的计算机上尝试使用 Firefox,或者甚至使用 Firefox for Android,PHP 输出也是正确的:es-ES,es;q=0.8;en-US,en;q=0.5
.
为什么在 Firefox for Linux 中 PHP 输出错误,如何解决?提前致谢。
编辑:这些是 HTTP header (我划掉了身份验证 header )
要求:
GET / HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://localhost/
Cookie: PHPSESSID=crucsit7is3r6hvnd88k6q2rn5
Authorization: ########
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Pragma: no-cache
Cache-Control: no-cache
响应:
HTTP/1.1 200 OK
Date: Tue, 25 Jul 2017 20:39:21 GMT
Server: Apache/2.4.18 (Ubuntu)
Authentication-Info: ########
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 1301
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
最佳答案
实际上,我在想 sleep 的时候找到了一个解决方案,只是因为 Chrome 做了类似几年前的事情。
Thanks to @Pointy for trying to help anyway
所以如果有人也有这个问题,这是步骤:
- 在 Firefox 的配置面板中输入(
about:config
在搜索栏中)。 - 搜索
intl.accept_languages
变量。 - 将您拥有的任何默认值替换为以下格式的不同语言:
xx-Xx, xx
,例如de-DE, de
。最重要的部分是该变量必须将其状态从“默认”更改为“用户修改”。 - 再次将其值替换为正确的值:您自己的值 + 默认的 Firefox 值,即
es-ES、es、en-US、en
(替换es-ES , es
与您的值分开,例如,fr-FR, fr, en-US, en
)。 - 应该使用此配置重置 HTTP header 。
关于javascript - HTTP_ACCEPT_LANGUAGE 与 Linux 中 Firefox 中的 navigator.language 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45310476/