Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
setlocale在PHP中不起作用_Php_Locale - Fatal编程技术网

setlocale在PHP中不起作用

setlocale在PHP中不起作用,php,locale,Php,Locale,我有以下代码片段: setlocale(LC_ALL, "de"); print(strftime("%A %e %B %Y", time())); 它正在印刷 2010年5月4日星期二 而不是 迪恩斯塔格4。2010年5月 你知道为什么吗?如何修复?您是否有可用的de区域设置;setlocale为您返回了什么?请参阅: 此外,检查可用区域设置列表(例如locale-a或适合您的操作系统的任何内容),查看de是否在其中。可能的替代方案包括de_de或de_de.utf8等等 在Debian中,

我有以下代码片段:

setlocale(LC_ALL, "de");
print(strftime("%A %e %B %Y", time()));
它正在印刷

2010年5月4日星期二

而不是

迪恩斯塔格4。2010年5月


你知道为什么吗?如何修复?

您是否有可用的
de
区域设置;
setlocale
为您返回了什么?请参阅:

此外,检查可用区域设置列表(例如
locale-a
或适合您的操作系统的任何内容),查看
de
是否在其中。可能的替代方案包括
de_de
de_de.utf8
等等

在Debian中,要生成新的区域设置,请运行以下命令:

dpkg-reconfigure locales

然后选择您想要的。

如果您的系统上没有安装区域设置,则设置区域设置将无效。

尝试将
LC\u ALL
设置为“de\u de”。在我的系统中,只有我这么做了才会起作用

$ LC_ALL=de date
Tue May  4 07:40:13 CDT 2010
$ LC_ALL=de_DE date
Di 4. Mai 07:39:27 CDT 2010

对我来说,以下方法奏效了:

setlocale(LC_TIME, "");
结合:

echo strftime("%d. %B %Y");

这就是我如何以德语格式获得当前日期的原因。希望能有所帮助。

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

setlocale(LC_TIME, "C");
echo strftime("%A");
echo setlocale(LC_TIME, "pt_PT");
echo strftime(" in Portuguese %A");
然后用命令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");
···

因此,我不得不将pt_pt转换为pt_pt.utf8也许你没有安装语言环境,所以如果你在ubuntu上,你可以在没有cuotes的情况下用“locale-a”检查列表,并检查/usr/share/i18n/文件中的可用语言,然后用“locale gen de_de”生成所需的语言环境


希望这对您有用。

请注意,在Linux中生成新的区域设置后,您可能需要重新启动httpd和php fpm服务

如果不重新启动,php(7.2)无法找到它们,即使在locale-a中列出


希望它能为某人节省一些时间:)

这对我来说很有效。我所做的是安装整个语言包,而不是特别指定一个:
/usr/share/locales/install language pack es
示例代码的第一行中有一个输入错误:“setlocale”而不是“etlocale”。无法编辑,抱歉!请试着解释一下你发布的解决方案的作用。
locale -a
locale-gen nb_NO.UTF-8
locale-gen nb_NO
update-locale
locale -a
restart php5-fpm