我有一个多语言站点,我希望PHP根据您进入站点的位置自动设置语言。
我尝试了几种方法。
localeconv()
完全不返回本地语言,nl_langinfo()
也根本没有帮助,mb_language()
不返回我正在寻找的语言,$_SERVER['HTTP_ACCEPT_LANGUAGE']
这给了我几种语言,而不仅仅是一种语言。setlocale(LC_ALL, 0)
由于某种原因返回了C
。但是我每次都无法获得正确的信息。
我猜想setlocale(LC_ALL, 0)
是最好的解决方案,但是我不知道返回的C
是什么意思,也不知道从不同的语言会得到什么。
我在许多不同的站点(包括SO)上寻找了解决方案,并找到了我前面提到的解决方案。不幸的是,他们都没有满足我的要求。
答案 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']
)。