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

时间:2017-05-14 18:29:23

标签: php utf-8 setlocale

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

我试过了:

$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

我总是收到

  

六月

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

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

编辑: 我已经找到了这篇文章PHP setlocale has no effect,但没有任何对我有用。

1 个答案:

答案 0 :(得分:1)

不要被" .utf8"愚弄。部分语言环境。 Setlocale仅用于单字节函数,它们不能很好地与Unicode配合使用。 此外,您使用的操作系统也很重要,并且根据操作系统,如果您使用PHP的TS或NTS版本,这很重要。

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