WordPress での時刻表記「AM/PM」を「午前/午後」にする方法

WordPress での時刻表記「AM/PM」を「午前/午後」にする方法

Posted at March 28,2007 3:10 AM
Tag:[Customize, Localization, WordPress]

WordPress で投稿時間等に用いる「AM/PM」あるいは「am/pm」という表示を日本語表記の「午前/午後」にする方法です。

「AM・PM」を「午前・午後」で表示する

1.Portable Object ファイルの編集

ローカライズ機能で用いる Portable Object ファイルを編集します。

1.1 2.1.x の場合

ご利用の文字コードに合わせて下記のいずれかのファイルを任意のエディタで開きます。文字コードが UTF-8 の場合は ja_UTF.po を編集します。

wp-content/languages/ja_EUC.po
wp-content/languages/ja_SJIS.po
wp-content/languages/ja_UTF.po

次に下記の行を探し、青色のように修正します。修正前は msgid と同じ値が入っています。

#: wp-includes/locale.php:85
msgid "am"
msgstr "午前"
 
#: wp-includes/locale.php:86
msgid "pm"
msgstr "午後"
 
#: wp-includes/locale.php:87
msgid "AM"
msgstr "午前"
 
#: wp-includes/locale.php:88
msgid "PM"
msgstr "午後"

1.2 2.0.x の場合

ご利用の文字コードに合わせて下記のいずれかのファイルを任意のエディタで開き、下記の行を追加してください。文字コードが UTF-8 の場合は ja_UTF.po を編集します。

wp-includes/languages/ja_EUC.po
wp-includes/languages/ja_SJIS.po
wp-includes/languages/ja_UTF.po
msgid "am"
msgstr "午前"
 
msgid "pm"
msgstr "午後"

2.functions.php の修正

この作業は 2.0.x のみです。wp-includes/functions.php を任意のエディタで開き、下記の青色を追加してください。

function mysql2date($dateformatstring, $mysqlstring, $translate = true) {
    global $month, $weekday, $month_abbrev, $weekday_abbrev;
    $m = $mysqlstring;
    if ( empty($m) ) {
        return false;
    }
    $i = mktime(substr($m,11,2),substr($m,14,2),substr($m,17,2),substr($m,5,2),substr($m,8,2),substr($m,0,4));
    
    if ( -1 == $i || false == $i )
        $i = 0;
 
    if ( !empty($month) && !empty($weekday) && $translate ) {
        $datemonth = $month[date('m', $i)];
        $datemonth_abbrev = $month_abbrev[$datemonth];
        $dateweekday = $weekday[date('w', $i)];
        $dateweekday_abbrev = $weekday_abbrev[$dateweekday];
        $dateformatstring = ' '.$dateformatstring;
        $dateformatstring = preg_replace("/([^\\\])D/", "\${1}".backslashit($dateweekday_abbrev), $dateformatstring);
        $dateformatstring = preg_replace("/([^\\\])F/", "\${1}".backslashit($datemonth), $dateformatstring);
        $dateformatstring = preg_replace("/([^\\\])l/", "\${1}".backslashit($dateweekday), $dateformatstring);
        $dateformatstring = preg_replace("/([^\\\])M/", "\${1}".backslashit($datemonth_abbrev), $dateformatstring);
        $dateampm = (substr($m,11,2) >= 12) ? __('pm') : __('am');
        $dateformatstring = preg_replace("/([^\\\])a/", "\${1}".backslashit($dateampm), $dateformatstring);
        $dateformatstring = preg_replace("/([^\\\])A/", "\${1}".backslashit($dateampm), $dateformatstring);
        $dateformatstring = substr($dateformatstring, 1, strlen($dateformatstring)-1);
    }
    $j = @date($dateformatstring, $i);
    if ( !$j ) {
    // for debug purposes
    //    echo $i." ".$mysqlstring;
    }
    return $j;
}

3.Portable Object のコンパイル

2.0.x、2.1.x、いずれの場合も、編集した ja_XXX.po ファイルをコンパイルします。
コンパイルするには、poEDIT または msgfmt を利用します。poEDIT によるコンパイルが簡単ですが、このエントリーでは説明を省略します(順序が逆になりますが、後日ご紹介します)。

以上です。
なお管理画面の「時間のフォーマット」で日本語が適用されない(下記)のは、サンプル表示のために mysql2date 関数を起動していないためですので心配ありません。

「時間のフォーマット」

関連記事
zenback
人気エントリー
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)