浏览器语言从PHP或从Javascript


Browser language from PHP or from Javascript?

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

我应该检查PHP使用$_SERVER["HTTP_ACCEPT_LANGUAGE"]或将更好,如果我检查Javascript使用navigator.language ?

哪一个和为什么,堆栈?

实际上它们都将捕获浏览器中的语言集。主要的区别是$_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

导航器。语言只会给我zh

在header中你可以看到你可以按顺序支持多种语言选项。因此,如果由于某些原因无法翻译中文,您可以检查首选的第二语言。

如果你使用navigator.language,你不能这样做…

您应该使用$_SERVER["HTTP_ACCEPT_LANGUAGE"]。请注意,这是一个首选语言的加权列表,您应该相应地使用它(即。不要只把第一门语言从列表中去掉)

navigator.language并没有告诉您浏览器中的首选语言集,而是浏览器应用程序本身的实际语言。

编辑:从快速测试,navigator.language在Firefox中返回首选语言,在Opera和Chrome中返回浏览器语言,而在IE中没有返回。