我正在开发一个支持多种语言的Web应用程序,我问自己哪个应该是最好的层(如果我可以这样命名)来检查浏览器的语言。
我应该使用$_SERVER["HTTP_ACCEPT_LANGUAGE"]
在 PHP 上查看,或者如果我使用navigator.language
在 Javascript 中查看它会更好吗?
堆垛机的原因和原因?
答案 0 :(得分:2)
您应该使用$_SERVER["HTTP_ACCEPT_LANGUAGE"]
。请注意,这是首选语言的加权列表,您应该相应地使用它(即,不要只使用列表中的第一种语言)
navigator.language
不会告诉您哪个是浏览器中的首选语言,而是浏览器应用程序本身的实际语言。
编辑:从快速测试开始,navigator.language
会返回Firefox中的首选语言,Opera和Chrome中的浏览器语言以及IE中的任何内容。
答案 1 :(得分:2)
实际上,它们都会捕获浏览器中设置的语言。主要区别在于$_SERVER
按优先顺序支持多种语言,而navigator.language
只能选择浏览器喜欢的第一种语言。
另一个区别是,一个是使用JavaScript在客户端捕获的,另一个是在服务器端使用HTTP头捕获的。可以说(即使标题可以被欺骗),捕获服务器端的值也更稳定。
使用tools->options->content->language
在Firefox中说。如果我将语言设置为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
,则无法执行此操作..