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。
我想设置正确的语言环境以接收正确的日期和时间翻译。
我试过了:
$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。