我正在开发一个支持多种语言的 Web 应用程序,我在问自己哪个应该是最好的层(如果我可以这样命名)来检查浏览器的语言。
我应该使用PHP来检查它,还是使用Javascript来$_SERVER["HTTP_ACCEPT_LANGUAGE"]
检查它会更好?navigator.language
哪个,为什么,堆垛机?
我正在开发一个支持多种语言的 Web 应用程序,我在问自己哪个应该是最好的层(如果我可以这样命名)来检查浏览器的语言。
我应该使用PHP来检查它,还是使用Javascript来$_SERVER["HTTP_ACCEPT_LANGUAGE"]
检查它会更好?navigator.language
哪个,为什么,堆垛机?
你应该使用$_SERVER["HTTP_ACCEPT_LANGUAGE"]
. 请注意,这是首选语言的加权列表,您应该相应地使用它(即不要只将第一种语言从列表中删除)
navigator.language
不会告诉您浏览器中设置的首选语言,而是浏览器应用程序本身的实际语言。
编辑:通过快速测试,navigator.language
在 Firefox 中返回首选语言,在 Opera 和 Chrome 中返回浏览器语言,在 IE 中没有任何内容。
实际上,它们都会捕获浏览器中设置的语言。主要区别在于$_SERVER
支持按偏好顺序排列的多种语言,而navigator.language
只能选择浏览器喜欢的第一种语言。
另一个区别是,一个是在客户端使用 JavaScript 捕获的,另一个是在服务器端使用 HTTP 标头捕获的。公平地说(即使标头可以被欺骗)在服务器端捕获值更稳定。
在 Firefox 中使用tools->options->content->language
. 如果我设置语言说Chinese
然后,当我发出请求并检查 HTTP 标头时,它会说:
Accept-Language: zh,en-us;q=0.7,en;q=0.3
//zh是两个字母的中文表示
会给$_SERVER["HTTP_ACCEPT_LANGUAGE"]
我zh,en-us;q=0.7,en;q=0.3
navigator.language 只会给我zh
因此,在标题中您可以看到您可以按顺序支持多种语言选项。因此,如果由于某种原因无法呈现中文,您可以检查首选的第二语言。
如果你使用navigator.language
你不能这样做..