2

我正在开发一个支持多种语言的 Web 应用程序,我在问自己哪个应该是最好的层(如果我可以这样命名)来检查浏览器的语言。

我应该使用PHP来检查它,还是使用Javascript$_SERVER["HTTP_ACCEPT_LANGUAGE"]检查它会更好?navigator.language

哪个,为什么,堆垛机?

4

2 回答 2

2

你应该使用$_SERVER["HTTP_ACCEPT_LANGUAGE"]. 请注意,这是首选语言的加权列表,您应该相应地使用它(即不要只将第一种语言从列表中删除)

navigator.language不会告诉您浏览器中设置的首选语言,而是浏览器应用程序本身的实际语言。

编辑:通过快速测试,navigator.language在 Firefox 中返回首选语言,在 Opera 和 Chrome 中返回浏览器语言,在 IE 中没有任何内容。

于 2013-04-26T18:48:01.687 回答
2

实际上,它们都会捕获浏览器中设置的语言。主要区别在于$_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你不能这样做..

于 2013-04-26T19:00:05.320 回答