6

在模板中,我显示特定日期的日期和月份:

<div class="jour"><?php echo date('d',strtotime($content->getCreatedAt())) ?></div>
<div class="mois"><?php echo date('M',strtotime($content->getCreatedAt())) ?></div>

这很好用,问题是月份名称是英文的。我在哪里指定我想要另一个语言环境中的月份名称,例如法语?

4

4 回答 4

5

Symfony在支持 i18n 的 Date 帮助器中有一个format_date帮助器。不幸的是,这些格式的文档记录很糟糕,请参阅此链接以获取有关它们的提示。

于 2010-10-13T18:58:09.507 回答
1

default_culture仅适用于 symfony 国际化框架,不适用于原生 PHP 函数。如果您想在整个项目范围内更改此设置,我会在config/ProjectConfiguration.class.php、 using中进行setlocale,然后使用strftime而不是date

// config/ProjectConfigration.class.php
setlocale(LC_TIME, 'fr_FR');

// *Success.php
<div class="jour"><?php echo strftime('%d',strtotime($content->getCreatedAt())) ?></div>
<div class="mois"><?php echo strftime('%b',strtotime($content->getCreatedAt())) ?></div>

请注意,这需要在您的计算机上启用区域设置。要检查,做var_dump(setlocale(LC_ALL, 'fr_FR')); 如果结果是false,你不能setlocale用来做这个,可能需要自己编写翻译代码。此外,您需要在系统上安装正确的语言环境。要检查安装了哪些语言环境,请locale -a在命令行中执行。

于 2010-10-13T17:24:23.437 回答
1

很抱歉这么晚才进来,但我想在这里添加我自己的想法。我想出的最佳国际日期格式是“%e %b %Y”,例如 2012 年 3 月 9 日。我发现这比 ISO 格式“%Y-%m-%d”(例如 2012- 03-09。根据文档, %x 格式应该是区域设置敏感的,但它对我不起作用,至少在 iPhone 上不起作用。这可能是因为 Safari 没有在 HTML 标头中传递语言环境,我不知道。

于 2012-04-11T07:27:37.483 回答
0

有时将具有不同可能值的数组用于 setlocale() 很有用。特别是支持不同的环境(windows,linux,...)

setlocale(LC_TIME, array('fr', 'fr_FR', 'fr_FR.utf8', 'french', 'french_FRANCE', 'french_FRANCE.utf8'));
echo strftime("%A %d %B", strtotime(date("Y-m-d")));

正如文档所述:

如果语言环境是一个数组或后跟附加参数,则尝试将每个数组元素或参数设置为新的语言环境,直到成功。如果一个语言环境在不同系统上以不同的名称已知,或者用于为可能不可用的语言环境提供后备,这将很有用。

于 2014-07-06T14:57:41.840 回答