web-dev-qa-db-ja.com

PHP date()(外国語)-例:Mar 25Aoû09

日付データを国際的な聴衆に表示する必要があるスクリプトがあります。

「2009年8月25日火曜日提出」

これをフランス語などの「Mar 25Aoû09」に変換する簡単でクリーンな方法はありますか。

インクルードファイルの定数LANGおよび$LANGUAGES配列を設定する&:

if(LANG != 'EN')
{
include $LANGUAGES['LANG'];
}

&含まれているファイルは日と月をマッピングし、適切なロケールに置き換えますか?

ありがとう

デビッド

21
David Miller

私はあなたがLOCALEを設定せずにそうすることから逃れることはできないと思います:

<?php
setlocale(LC_ALL, 'fr_FR');

echo strftime("%A %e %B %Y");
?> 

Strftimeの詳細: http://us2.php.net/manual/en/function.strftime.php

47
Jakub

date 関数のマニュアルページによると、 setlocale を使用する必要があります。 strftimeなどのメソッドは、指定されたロケールを使用します。ただし、dateは、何らかの理由で使用できません。

5
Samir Talwar

strftime関数とsetlocale関数を使用してこれを行う最善の方法だと思います。ただし、サーバーに必要なロケールがインストールされていない場合は機能しません(現在の質問ではfr_FR)。

ロケールの変更が失敗した場合、次のコードは例外をスローします

<?php

$result = setlocale(LC_ALL, 'fr_FR');

if($result === false){
    throw new \RuntimeException(
        'Got error changing locale, check if locale is installed on the system'
    );
}

$dayOfMonth = '%e';
//if it is Windows we will use %#d as %e is not supported
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
   $dayOfMonth = '%#d';
}

//Mar 25 Aoû 09 - month shortname, day of month, day shortname, year last two digits
echo strftime("%b $dayOfMonth %a %y"); 
3
Artur Babyuk

Zend_Date もご覧ください。

0
André Hoffmann