PHP获取本地语言

时间:2019-02-07 15:32:39

标签: php

我有一个多语言站点,我希望PHP根据您进入站点的位置自动设置语言。

我尝试了几种方法。

  1. localeconv()完全不返回本地语言,
  2. nl_langinfo()也根本没有帮助,
  3. mb_language()不返回我正在寻找的语言,
  4. $_SERVER['HTTP_ACCEPT_LANGUAGE']这给了我几种语言,而不仅仅是一种语言。
  5. setlocale(LC_ALL, 0)由于某种原因返回了C

但是我每次都无法获得正确的信息。
我猜想setlocale(LC_ALL, 0)是最好的解决方案,但是我不知道返回的C是什么意思,也不知道从不同的语言会得到什么。

我在许多不同的站点(包括SO)上寻找了解决方案,并找到了我前面提到的解决方案。不幸的是,他们都没有满足我的要求。

3 个答案:

答案 0 :(得分:2)

我使用$language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);获取语言数组的第一个(=首选)条目,减少到2个字符,例如“ en”或“ de”

答案 1 :(得分:1)

另一种不带下标的方法:locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE'])

答案 2 :(得分:0)

简短的回答:语言和位置是完全不同的东西。您不应该根据位置设置语言。

为什么?

许多国家/地区使用多种语言。此外,如果您是英语用户,并且在日本度假时登录了自己喜欢的网站,那么您就不想用日语看到它。

Johannes所述,如果要自动做出决定,最好使用浏览器的语言($_SERVER['HTTP_ACCEPT_LANGUAGE'])。