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ネイティブ PHP 関数ではなく、symfony 国際化フレームワークにのみ適用されます。この設定をプロジェクト全体で変更したい場合は、 でconfig/ProjectConfiguration.class.php、 を使用して、ではなくsetlocaleを使用します。strftimedate

// 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")));

ドキュメントに記載されているように:

locale が配列であるか、追加のパラメーターが続く場合、各配列要素またはパラメーターは、成功するまで新しいロケールとして設定されます。これは、ロケールが異なるシステムで異なる名前で知られている場合や、使用できない可能性のあるロケールのフォールバックを提供する場合に役立ちます。

于 2014-07-06T14:57:41.840 に答える