from 和ジオ

WordPress ME 1.5 を Shift_JIS 化する

ソフトを使う

WordPress ME 1.5 を Shift_JIS 化する

はじめに

WordPress Japan さんで配布して おられます ブログシステム WordPress の日本語版 - WordPress ME - を Shift_JIS で動かしたい方向けのメモです。

WordPress スクリーンショット

うお、なんと WordPress Japan さんから こちらにリンクをいただいておりました。 (WordPress Japan DB » ME を Shift_JIS にしてみる

乱文、大変失礼いたします・・・。 せっかく紹介して頂いたので若干加筆したします。

WordPress ME 1.5.1 Released! (2005/05/06 追記)

WordPress ME 1.5.1 - Pre Release が公開され、 Shift_JIS 用言語ファイルが同梱されるようになりました。 というわけで、

  1. 新規インストール時にインストールスクリプトで「Shift_JIS」を指定する

だけの操作で、Shift_JIS に変更することができます!。ぜひ、1.5.1 を 使わせて頂きましょう。 :-)

通常の手順で変更可能になりましたので、このページは不要になりましたが、 一応 Linux での言語ファイルの作成方法メモということで残しておきます。

Windows を使う場合は、 WordPress Japan - 言語ファイルの編集 を参考にさせて頂きましょう。

Fedora CORE Linux を使った言語ファイルの作成方法

言語ファイルのメッセージを修正したい場合は、 .po ファイルを修正し GNU gettext に含まれる、msgfmt コマンドを使って .mo バイナリ カタログファイルを作成する必要があります。

WordPress Japan - 言語ファイルの編集 に 詳しく手順が書かれています。参考にさせて頂きましょう。

ここでは、Fedora CORE Linux を用いて、Shift_JIS の言語ファイルを つくる手順を一応書いてみます。

.mo バイナリカタログファイルを作成するのに GNU gettext の msgmft コマンドを必要とします。入ってなければ、

# yum install gettext

で、インストールしてください。

.po ファイルのメッセージ修正が終わったら、ja_SJIS.po を msgfmt コマンドにかけて、 .mo バイナリカタログを作成します。


$ msgfmt -o ja_SJIS.mo ja_SJIS.po

これで、メッセージが修正された Shift_JIS 版の言語ファイルが作成できました。

$ ls -laF
合計 828
drwxr-xr-x  2 nobody nobody   4096  4月 23 15:37 ./
drwxr-xr-x  4 nobody nobody   4096  3月 24 14:41 ../
-rw-r--r--  1 nobody nobody  76378  3月 24 13:28 ja_EUC.mo
-rw-r--r--  1 nobody nobody 115296  3月 24 13:46 ja_EUC.po
-rw-r--r--  1 nobody nobody  76382  4月 23 15:37 ja_SJIS.mo
-rw-r--r--  1 nobody nobody 115303  4月 23 15:33 ja_SJIS.po
-rw-r--r--  1 nobody nobody  86752  3月 24 13:28 ja_UTF.mo
-rw-r--r--  1 nobody nobody 125691  3月 24 13:28 ja_UTF.po

WordPress ME に指定する言語ファイル名は「ja_SJIS」になります。

WordPress ME 1.5 を Shift_JIS 化する (以下過去メモ)

言語ファイルダウンロード

WordPress ME 1.5.(0) では、wp-include¥languages に EUC-JP と UTF 版の日本語言語ファイルが あらかじめ同梱されています。 Shift_JIS で動かす場合は、この言語ファイルの Shift_JIS版を作成します。

若干の手順が必要なので、あらかじめ maple4estry で、Shift_JIS に変換した物を 置いておきます。 よければご利用下さい。

[ダウンロード] ja_SJIS.zip

こちらを、

wp-includes¥languages

に展開して格納します。

Shift_JIS 化メモ (過去メモ / 1.5用)

言語ファイルができましたので、WordPress ME に対して、Shift_JIS を 使う設定をします。(新規インストール直後を想定しています)

  1. WordPress ME 管理画面を開き、設定 -> 表示設定 -> ページとフィードの文字コード を 「Shift_JIS」に変更
  2. wp-admin/upgrade-schema.php の 197行目 を Shift_JIS に変更
  3. wp-config.php で mb_internal_encoding("Shift_JIS"); 指定
  4. wp-config.php で define('WPLANG', 'つくった言語ファイル名'); を指定

これで、Shift_JIS エンコードで WordPress ME が動作すると思います。 いろいろ試験してみて下さい。

ぼくの環境で、若干プログラムの修正が必要な部分は下記でした。

RSSフィードの文字コードが UTF-8 で出力されなかった
RSS が Shift_JIS で出力されてしまうので、wp-rss2.php等つかう RSSで、Shift_JIS が そのまま出力される関数に wpj_utf8_encode をかぶせる。(the_author は get_the_author に変更) wpj_utf8_encode 関数は、EUC-JP 化されているので、Shift_JIS (SJIS-win) 指定になるように変更した。
wp-trackback.php をいろいろほげる
$title、$excerpt、$blog_name 等 日本語を出力しそうなところに、 mb_convert_encoding をかぶせて、Shift_JIS に変換した。(mb_convert_encoding($title, "Shift_JIS", $charset);等)
ブロガークライアント等で xmlrpc.php を使う場合
  1. wp-include/class-IXR.php の getXML の string 部分を UTF-8 に強制変換
  2. wp-include/functions-post.php の wp_update_post関数 の escapes for safety のところで、 $post_title、$post_excerpt、$post_content を Shift_JIS に変換

Shift_JIS 言語ファイルの作成方法

文字エンコードを Shift_JISに変換した ja_Shift_JIS.po ファイルを ja_UTF.po ファイルを元に作成します。 次のコマンドで UTF-8 → Shift_JIS 変換できます。

$ nkf -U -s -O ja_UTF.po ja_SJIS.po

出来上がった、ja_Shift_JIS.po 内の "Content-Type" の指定をテキストエディタ等で "Shift_JIS" に変更します。

15c15
> "Content-Type: text/plain; charset=UTF-8¥n"
---
< "Content-Type: text/plain; charset=utf-8¥n"

これで、Shift_JIS エンコードの .po ファイルができましたので、 文字列の修正があれば適宜行います。

.po ファイルのメッセージ修正が終わったら、ja_SJIS.po を msgfmt コマンドにかけて、 .mo バイナリカタログを作成します。

$ msgfmt -o ja_SJIS.mo ja_SJIS.po

これで、Shift_JIS 版の言語ファイルが作成できました。

変更後の試験

次の点に気をつけて試験してみてください。

  • トラックバックの送受信
  • ping 送信
  • RSS が正しく出力されているか
  • 「¥(0x5C)」DBエスケープコードを含む Shift_JIS 文字が削除されずに正しく処理できるか

試験をするにあたって、生POSTデータを含む全てのデータを取得する PHPスクリプト を作ってみました。このスクリプトの URL を指定して、トラックバックや、ping をうつと 送信したデータを生で保存しますので、デバッグしやすいかもしれません。

また、RSS は生成された物を FEED Validatorで 確認をとると良いでしょう。 Internet Explorer でもある程度確認とれます。 特に、charset には要注意です。(wp-rss2.php等の URL を FEED Validator に指定すると 正しい RSSを生成しているかチェックしてくれます)

おわり

日本語化に関しては、WordPress ME を使い その標準文字エンコードの EUC-JP で運用することで、 全く問題ありません。

ぼくの場合は、 文字コードが Shift_JIS サイトの一部に WordPress ME を組み込むといった ちょっと特殊な使い方をしていて、ソースの管理やデータベースの文字コード統一 といった観点から、このような修正をしてみました。

WordPress & WordPress ME は、非常に良くできています。 ブログだけでなく、通常ページも CMS的に作成することができますので、是非いろいろ活用してみましょうー。