来自PHP或Javascript的浏览器语言?

时间:2013-04-26 18:43:25

标签: php javascript internationalization

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

我应该使用$_SERVER["HTTP_ACCEPT_LANGUAGE"] PHP 上查看,或者如果我使用navigator.language Javascript 中查看它会更好吗?

堆垛机的原因和原因?

2 个答案:

答案 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,则无法执行此操作..