setlocale在PHP中没有效果

pup*_*eno 6 php locale

我有以下代码片段:

setlocale(LC_ALL, "de");
print(strftime("%A %e %B %Y", time()));
Run Code Online (Sandbox Code Playgroud)

它正在印刷

2010年5月4日星期二

代替

Dienstag 4. Mai 2010

有什么想法吗?怎么修?

sal*_*the 15

你有de可用的语言环境; 什么setlocale回报给你?请参阅:setlocale()的返回值.

另外,检查可用语言环境列表(例如,locale -a或适用于您的操作系统的任何内容),看看de它们是否在其中.可能的替代品包括de_DEde_DE.utf8仅举几例.

在Debian中,要生成新的语言环境,请运行以下命令:

dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)

并选择你想要的.


Ign*_*ams 5

如果系统上未安装区域设置,则设置区域设置将不起作用.


ale*_*mar 5

我在 Raspberry Pi 上使用 Ubuntu,在尝试使用葡萄牙语本地日期时遇到了同样的问题:

setlocale(LC_TIME, "C");
echo strftime("%A");
echo setlocale(LC_TIME, "pt_PT");
echo strftime(" in Portuguese %A");
Run Code Online (Sandbox Code Playgroud)

然后用命令local -a检查, pt_PT 不在列表中,所以我添加了它sudo /usr/share/locales/install-language-pack pt_PT并再次运行local -a:它是pt_PT.utf8。在此之后,结果仍然相同:pt_PT 的预期输出仍为英文。这是使事情对我有用的细微差别:

···
echo setlocale(LC_TIME, "pt_PT.utf8");
···
Run Code Online (Sandbox Code Playgroud)

所以,我不得不把pt_PT变成pt_PT.utf8