【发布时间】:2021-08-27 19:22:18
【问题描述】:
简而言之,我的问题是:我使用 setlocale(LC_TIME, "de_DE") 以德语显示日期/时间(即月份、工作日)的“口头”部分。这适用于任何公共服务器,但不在我的本地主机上,使用 MAMP,它以英语而不是德语显示。
详细说明:
我有以下代码(文件中没有其他内容,我将其减少到重现问题所需的最低限度):
<?php
setlocale(LC_TIME, "de_DE");
date_default_timezone_set('Europe/Berlin');
?>
<!DOCTYPE html>
<html lang='de_DE'>
<head>
<title>Datum in Deutsch</title>
<meta charset="UTF-8">
</head>
<body>
<p>
<?php
echo "Heute ist ";
echo strftime("%A, der %e. %B %Y");
?>
</p>
</body>
</html>
这个应该显示为
Heute ist Donnerstag,2021 年 6 月 10 日
但在我的 localhost/MAMP 上,它 显示为
2021 年 6 月 10 日,星期四
正如我所提到的:如果我将此文件上传到任何公共服务器并打开它,它会根据需要显示(即使用德语表达方式)
我已经在 SO 和其他网站上搜索了解决方案。我多次发现的一个建议是检查我的系统上是否安装了德语语言环境。
所以我打开终端(我在 MacOS 10.14.6 上)并输入“locale -a”:返回和安装的语言环境列表包括 de_DE (以及许多其他)。
我还找到了将这一行包含在代码中以检查所需语言环境是否可用的建议,我这样做了:
<?php echo setlocale(LC_ALL, 0); ?>
这会输出 "C/C/C/C/de_DE/C " ,所以再次包含de_DE (但不会给我本地化日期显示)。
我的系统:MacOS 10.14.6,MAMP 6.3 作为本地 Apache 服务器,运行 PHP 7.4.12(切换到 PHP 8.0 没有任何改变)
编辑/附加信息:我之前曾在同一系统上使用 AMPPS 作为本地服务器,这在其中工作。所以对我来说,这似乎是一个 MAMP 问题。
我该怎么做才能让它发挥作用?任何建议表示赞赏!
【问题讨论】:
-
只是确认可能的 MAMP 问题。我在 XAMPP 上得到了预期的字符串
Juni(PHP 7.3.9,Mac OS,de_DE包含在locale -a中)。 -
您是否尝试将“de_DE.UTF-8”作为区域设置值?这在我的机器上有所不同,“de_DE”呈现英语,“de_DE.UTF-8”呈现德语文本;
-
@TomRegner 我刚刚尝试过,但它没有帮助 - 这里也呈现英语:-(你在 MAMP 上这样做吗?
-
不,只是过去让我感到痛苦的事情。您有一个解决方法,就是这样,但是应该有一种方法可以为 MAMP 设置的虚拟主机环境生成/激活德语语言环境——或者它应该“正常工作”,这是一个令人沮丧的情况,恕我直言
-
@TobiasK。如果我将它写入终端(使用或不使用 UTF-8),我会收到响应“LC_TIME=de_DE:找不到命令”。但无论如何,正如我在问题中所写,我之前曾使用 AMPPS 作为本地服务器,当时同一个文件按预期工作。 (实际上,我刚刚发现,如果我在 MAMP 中从 Apache 切换到 Nginx,它也可以按预期工作)
标签: php localhost mamp setlocale