poEDIT の使い方
WordPress の日本語部分を変更する場合には、クロスプラットフォームな gettext カタログ(po ファイル)の編集ができる poEDIT が便利です。
以下、Windows での poEDIT の利用方法を紹介します。
1.ダウンロード
poEDIT のページの「Download」をクリック。

Windows の場合は、ページ下にある poedit-1.x.x-setup.exe(エントリー作成時は 1.3.6) のリンクをクリック。

2.インストール
ダウンロードした exe ファイルをダブルクリックしてインストールを開始します。
「I accept the agreement」を選択して「Next」をクリック。
インストール先フォルダを指定(デフォルトは C:¥Program Files¥poEdit)して「Next」をクリック。
ここでは「Run poEdit now」をチェックして「Finish」をクリックし、すぐに poEDIT を起動します。
言語選択画面が開くので「Japanese」を選択して「OK」をクリック。
3.po ファイル編集
WordPress の場合、[ファイル] - [開く] を選択。
2.1.x であれば wp-content/languages 配下の ja_UTF.po を選択します。なお poEDIT 1.3.6 は他の文字コードでは正常に保存ができないようです。
po ファイルを開いたところです。内容の変更方法は、該当行をクリックすると原文と翻訳文(日本語)が左下に表示されますので、ここで編集できます。
編集後、他の行を選択すると変更行の左端にマークが表示されます。
これで [ファイル] - [保存] または左から二つ目の保存アイコンをクリックすると mo ファイルが自動生成されます。これで日本語化の作業は完了です。
ダウンロードした 1.3.6 では Shift_JIS / EUC での保存ができないようです(読み込みはOK)。その場合、Windows をご利用であれば、Cygwin の msgfmt コマンドでコンパイルすることができます(ここでは割愛します)。
4.注意事項
poEDIT は名前の通り、編集はできますが、行自体の追加や削除はできません。したがって入力前の po ファイル(あるいは POT ファイル)を予め編集しておく必要があります。
5.関連リンク
WordPress での時刻表記「AM/PM」を「午前/午後」にする方法
WordPress で投稿時間等に用いる「AM/PM」あるいは「am/pm」という表示を日本語表記の「午前/午後」にする方法です。

1.Portable Object ファイルの編集
ローカライズ機能で用いる Portable Object ファイルを編集します。
1.1 2.1.x の場合
ご利用の文字コードに合わせて下記のいずれかのファイルを任意のエディタで開きます。文字コードが UTF-8 の場合は ja_UTF.po を編集します。
wp-content/languages/ja_EUC.powp-content/languages/ja_SJIS.powp-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.powp-includes/languages/ja_SJIS.powp-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 関数を起動していないためですので心配ありません。

WordPress の月および曜日を英語表記にする
「WordPress における日付/時間の表示とフォーマット変更方法」でフォーマット文字の一覧を示しましたが、日本語版 WordPress では、月および曜日は日本語で表示されます。これを英語表記に変更する方法を紹介します。
1.変更対象のフォーマット文字
英語表記に変更するフォーマット文字は下記の4種類です。
| 単位 | フォーマット文字 | 意味 | 日本語表記 | 英語表記 |
|---|---|---|---|---|
| 月 | F | フルスペル | 1月 - 12月 | January - December |
M | 3文字の省略形式 | 1月 - 12月 | Jan - Dec | |
| 曜日 | D | 3文字の省略形式 | 月 - 日 | Mon - Sun |
l | フルスペル | 月曜日 - 日曜日 | Sunday - Saturday |
2.変更方法
wp-includes/locale.php をダウンロードし、任意のエディタで開き、下記リストのように修正します(青色は修正した箇所)。修正が面倒な方は変更済のファイルを用意しましたので、下記のリンクよりダウンロードし、現在お使いの wp-includes/locale.php と入れ替えてください(locale.php は「ローカル.php」ではなく「ロケール.php」と読みます)。
手修正で「'」や「;」がもれるとページが正常に表示されなくなりますので編集は十分注意して行ってください。
<?php
// Date and Time
// The Weekdays
$weekday[0] = 'Sunday';
$weekday[1] = 'Monday';
$weekday[2] = 'Tuesday';
$weekday[3] = 'Wednesday';
$weekday[4] = 'Thursday';
$weekday[5] = 'Friday';
$weekday[6] = 'Saturday';
// The first letter of each day. The _%day%_initial suffix is a hack to make
// sure the day initials are unique. They should be translated to a one
// letter initial.
$weekday_initial['Sunday'] = 'Sun';
$weekday_initial['Monday'] = 'Mon';
$weekday_initial['Tuesday'] = 'Tue';
$weekday_initial['Wednesday'] = 'Wed';
$weekday_initial['Thursday'] = 'Thu';
$weekday_initial['Friday'] = 'Fri';
$weekday_initial['Saturday'] = 'Sat';
foreach ($weekday_initial as $weekday_ => $weekday_initial_) {
$weekday_initial[$weekday_] = preg_replace('/_.+_initial$/', '', $weekday_initial_);
}
// Abbreviations for each day.
$weekday_abbrev['Sunday'] = 'Sun';
$weekday_abbrev['Monday'] = 'Mon';
$weekday_abbrev['Tuesday'] = 'Tue';
$weekday_abbrev['Wednesday'] = 'Wed';
$weekday_abbrev['Thursday'] = 'Thu';
$weekday_abbrev['Friday'] = 'Fri';
$weekday_abbrev['Saturday'] = 'Sat';
// The Months
$month['01'] = 'January';
$month['02'] = 'February';
$month['03'] = 'March';
$month['04'] = 'April';
$month['05'] = 'May';
$month['06'] = 'June';
$month['07'] = 'July';
$month['08'] = 'August';
$month['09'] = 'September';
$month['10'] = 'October';
$month['11'] = 'November';
$month['12'] = 'December';
// Abbreviations for each month. Uses the same hack as above to get around the
// 'May' duplication.
$month_abbrev['January'] = 'Jan';
$month_abbrev['February'] = 'Feb';
$month_abbrev['March'] = 'Mar';
$month_abbrev['April'] = 'Apr';
$month_abbrev['May'] = 'May';
$month_abbrev['June'] = 'Jun';
$month_abbrev['July'] = 'Jul';
$month_abbrev['August'] = 'Aug';
$month_abbrev['September'] = 'Sep';
$month_abbrev['October'] = 'Oct';
$month_abbrev['November'] = 'Nov';
$month_abbrev['December'] = 'Dec';
foreach ($month_abbrev as $month_ => $month_abbrev_) {
$month_abbrev[$month_] = preg_replace('/_.+_abbreviation$/', '', $month_abbrev_);
}
?>
修正内容に誤りがありましたらご指摘ください。
このファイルを編集する方法が最適であるかという点については、今回は「WordPress のローカライズ機能を無効にする手法」という観点で、この方法を紹介しています。ローカライズ機能で用いる po ファイルを修正・コンパイルという、本来のお作法があることは認識しています。
なおローカライズについて書き始めると長くなりそうでしたので、また別の機会にエントリーしたいと思います。

