setLocale 不适用于任何语言,已安装正确的本地语言

setLocale not working with any language, correct local is installed

我想设置正确的语言环境以接收正确的日期和时间翻译。

我试过了:

$locale = setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');

但这行不通。我已经用谷歌搜索了,但我发现的内容对我的情况没有帮助。我尝试将 LC_ALL 更改为 LC_TIME 但没有效果。

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

C C.UTF-8 POSIX de_DE.utf8

我也在/etc/default/locale

里看过

LANG="de_DE.UTF-8"

在 php.ini 中,时区也设置为 Europe/Berlin
那我到底做错了什么?在我使用 EasyPhp 的本地机器上它工作正常。

为了在下个月获得本地化,我使用 strftime

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

而不是

Juni

我总是收到

June

我也尝试了其他语言,但没有区别。

如果重要的话,我使用 php7.1。

编辑: 我已经找到了这个 post PHP setlocale has no effect 但对我没有用。

不要被语言环境的“.utf8”部分所迷惑。 Setlocale 仅适用于单字节函数,它们不适用于 Unicode。 此外,您使用的操作系统很重要,并且根据操作系统的不同,您使用 PHP.

的 TS 或 NTS 版本也很重要

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