Php setLocale不使用任何语言,安装了正确的本地语言

Php setLocale不使用任何语言,安装了正确的本地语言,php,utf-8,setlocale,Php,Utf 8,Setlocale,我想设置正确的区域设置以接收日期和时间的正确翻译 我试过: $locale = setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge'); 但这行不通。我已经在谷歌上搜索过了,我的发现对我的情况没有帮助。我尝试将LC\u ALL更改为LC\u TIME,但没有效果 如果我在shell中执行locale-a,我将收到: C.C.UTF-8 POSIX de_de.utf8 我还查看了/etc/default/locale LANG=“de_de.

我想设置正确的区域设置以接收日期和时间的正确翻译

我试过:

$locale = setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
但这行不通。我已经在谷歌上搜索过了,我的发现对我的情况没有帮助。我尝试将
LC\u ALL
更改为
LC\u TIME
,但没有效果

如果我在shell中执行
locale-a
,我将收到:

C.C.UTF-8 POSIX de_de.utf8

我还查看了
/etc/default/locale

LANG=“de_de.UTF-8”

在php.ini中,时区也设置为
Europe/Berlin

那我到底做错了什么?在我的本地机器上使用EasyHP,它工作正常

要获得下个月的本地化版本,我使用
strftime

 $nextMonth = explode(" ", strftime( '%m %B %Y', strtotime( '+1 month', $date ) ));
而不是

朱尼

我总是收到

六月

我也试过其他语言,但没什么不同

如果有必要,我会使用php7.1

编辑: 我已经找到了这篇文章,但对我来说没有任何效果。

不要被区域设置中的“.utf8”部分所愚弄。Setlocale仅适用于单字节函数,它们不能很好地与Unicode配合使用。 此外,使用哪个操作系统也很重要,根据操作系统的不同,使用PHP的TS或NTS版本也很重要


对于国际化/Unicode,我建议使用Intl扩展,它具有完整的Unicode支持和一个非常完整的日历。

只是为了重新迭代:您尝试了
setlocale(LC_ALL,“de_de.utf8”)?它的返回值是多少?另外:您刚才安装了该区域设置吗?如果是:你重启了你的httpd吗?我用它试过了,是的。我还多次重新启动了nginx和php。但是没有任何改变。我刚刚重启了服务器以防万一,现在它可以工作了。奇怪的行为。