0

我有一个多语言站点,我希望 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)上寻找解决方案,并找到了我之前提到的解决方案。不幸的是,他们都没有做我想要的。

4

3 回答 3

2

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

于 2019-02-07T15:37:17.820 回答
1

另一种没有 substr 的方法:locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE'])

于 2019-02-07T15:43:52.943 回答
0

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

为什么?

许多国家有多种语言。此外,如果您是英国人,并且您在日本度假时登录了您最喜欢的网站,您不想看到它是日语的。

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

于 2019-02-07T15:45:14.547 回答