我有以下代码片段:
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_DE或de_DE.utf8仅举几例.
在Debian中,要生成新的语言环境,请运行以下命令:
dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)
并选择你想要的.
我在 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