0

ロケールをフランス語に変換しなければならなかったWordpressのテーマに取り組んでいます。

    $data_event     = get_post_meta($post->ID, 'event_date_interval', true);
    $time           = strtotime($data_event);
    $pretty_date_yy = date('Y', $time);
    setlocale (LC_ALL, "fr_FR");
    $translate_fr  = strftime("%h", strtotime($data_event));
    $pretty_date_M = htmlentities($translate_fr);
    $pretty_date_d  = date('d', $time);

これは正常に動作し、すべてが正常に表示されます (たとえば、現在 2 月にいるため、FÉVR が表示されます)

しかし、私の問題は FÉV を表示したいということです。FÉVRではありません。この略語を変更することはできますか?

編集:解決策は、配列を作成し、必要な特定の名前を設定することでした。正しくエンコードされていませんでした utf8_encode が追加されました。ありがとうフェックス!

    $data_event     = get_post_meta($post->ID, 'event_date_interval', true);
    $time           = strtotime($data_event);
    setlocale (LC_ALL, "fr_FR");
    $pretty_date_yy = date('Y', $time);
    $pretty_date_d  = date('d', $time);
    $id = intval(strftime("%m", strtotime($data_event))) - 1;
    $abr_map = array(
      'Jan',
      'Fév',
      'Mar',
      'Avr',
      'Mai',
      'Juin',
      'Juil',
      'Aout',
      'Sept',
      'Oct',
      'Nov',
      'Déc'
    );
    $translate_fr = htmlentities(utf8_decode($abr_map[$id]));
    $pretty_date_M = $translate_fr;
4

1 に答える 1

2

これを行う 1 つの方法は、次のように PHPsubstr関数を使用することです。

$translate_fr  = substr(strftime("%h", strtotime($data_event)), 0, 3);

編集: すべての月を 3 文字に短縮する必要がない場合は、連想配列をマップとして使用できます。

$abr_map = array(
  'JANV' => 'Jan',
  'FÉVR' => 'Fév',
  'MARS' => 'Mar',
  'AVRI' => 'Avr',
  'MAI'  => 'Mai',
  'JUIN' => 'Juin',
  'JUIL' => 'Juil',
  'AOUT' => 'Aout',
  'SEPT' => 'Sept',
  'OCTO' => 'Oct',
  'NOVE' => 'Nov',
  'DÉCE' => 'Déc'
);

intvalまたは、およびstrftimesフォーマッタを使用%mして、インデックス付き配列の整数「キー」を提供します。

$id = intval(strftime("%m", strtotime($data_event))) - 1;

$abr_map = array(
  'Jan',
  'Fév',
  'Mar',
  'Avr',
  'Mai',
  'Juin',
  'Juil',
  'Aout',
  'Sept',
  'Oct',
  'Nov',
  'Déc'
);

関数内でマップを使用するには、次を使用します

$translate_fr = htmlentities(utf8_decode($abr_map[$id]));

または、代わりhtmlentitiesに組み込みのエンコーダーを使用します。

$translate_fr = htmlentities($abr_map[$id], ENT_COMPAT, 'UTF-8');
于 2013-01-31T18:08:12.407 に答える