b2evolution 0.9.0.5 の日本語対応
私のミスで、0.9.0.5 の配布パッケージに収録された日本語ファイルは不完全なものになっています。新しいものを作って CVS に登録してもらいましたので、blogs/locales/ja_JP/_global.php
および blogs/locales/ja_JP/LC_MESSAGES/messages.po
の各ファイルと置き換えてください。
_global.php
messages.po
b2evolution の日本語設定に関するメモ。
そのままでも困る場面というのは少なく、ほぼ日本語が使えると言っていいのですが、ブックマークレットと、トラックバックの受信と、コメント等があった際の通知メールの文字コード処理で問題が発生する可能性があります。
もう一つ、予想でしかありませんが、メールでブログに記事を投稿する機能を使う際に、文字コード処理が行われないのでおそらく正常に書き込めないと思います。これは、私は今のところ使う予定の無い機能ですし、XREA.COMではこの機能自体そのままでは動作しないようですので、どなたかが調査してくださると嬉しいです。
バージョン0.9.0.5について、まずブックマークレット、次にトラックバックと通知メールについて、私が行った対処を書いておきます。
検証を十分に行ったわけではなく、XREA.COMの環境 (Apache 1.3系、PHP 4.3系 + マルチバイト文字列関数(mbstring)有効 + .htaccess
によるPHP設定変更可能) と私の使い方ではうまくいったという程度のものですから、他でも通用するかは不明です。
(XREA.COM で使用する場合は、XREA.COM 特有の b2evolution 設定 も参照してください)
- デフォルトのメッセージを日本語にする
-
インストール・アップグレード処理や、ログイン画面・管理画面でのデフォルトの言語を日本語にするには、
blogs/conf/_locales.php
の22行目、$default_locale = 'en-EU';
を
$default_locale = 'ja-JP';
に変更します。
このデフォルト設定は、ウェブブラウザの設定のほうが優先されるので、うまく行かない時はウェブブラウザの言語設定(エンコード設定ではないので混同しないよう注意)と、b2evolution の管理画面の設定タブの地域設定での優先度を確認・調整してください。 - 週の初めの曜日
-
カレンダー表示等で週の初めが月曜日になっているのを変更するには、
blogs/conf/_locales.php
の192行目の$start_of_week = 1;
を変更します(
0
で日曜、1
で月曜、2
で火曜が週の初めと見なされます)。 - ブックマークレット
-
ブックマークレットの問題は、ブックマークレットのJavaScriptで
escape()
が用いられていることが原因です。encodeURIComponent()
を使用するように変更します。(欧文のみの環境ですと、escape()
のほうが問題が少ないようです。しかし日本語等、UTF-8を使用する場合ではencodeURIComponent()
のほうが無難です)blogs/admin/tools.php
の27行目、34行目、42行目、49行目、81行目の各行に、3個もしくは2個ずつある+escape(
を
+encodeURIComponent(
に置き換えます。
- トラックバックと通知メール
-
トラックバックと通知メールについて、文字セットに限定されない汎的な対処と、日本語限定で簡単な対処を紹介します。
-
文字セット汎用の対処方法です。
blogs/sample.htaccess
のファイル名を.htaccess
に変更して、その中の<IfModule mod_php4.c>
php_flag register_globals off
</IfModule>を
<IfModule mod_php4.c>
php_flag register_globals off
php_value mbstring.language "neutral"
php_value mbstring.internal_encoding "UTF-8"
php_value mbstring.func_overload "6"
php_flag mbstring.encoding_translation on
php_value mbstring.http_input "ASCII,JIS,UTF-8,EUC-JP,SJIS"
php_value mbstring.http_output "pass"
</IfModule>と変更します。(各項目の意味は PHP のマニュアル マルチバイト文字列関数(mbstring) を参照してください)
使用される言語に応じて、php_value mbstring.http_input "ASCII,JIS,UTF-8,EUC-JP,SJIS"
に他のエンコード(ISO-8859-1
など)を追加する必要があるかもしれません。次に、
blogs/b2evocore/_functions.php
の1331行目のreturn @mail( $to, $subject, $message, $headerstring );
の部分を
$subject = '=?' . $locales[ $current_locale ]['charset'] . '?B?' . base64_encode($subject) . '?=';
return @mail( $to, $subject, $message, $headerstring );と、変更(1行追加)します。
以上で、トラックバックの文字化けは防ぐことができますし、通知メールは投稿の言語指定に従って(日本語に設定されていればUTF-8)送信されるので、多言語対応(特にUTF-8対応)メーラーを使っていれば問題ないはずです。
-
日本語限定でメール出力をより奇麗にする対処方法です。
コメント等があった際の通知メールは、UTF-8に対応していないメーラーもありますし、Outlook Express など一部のメーラーはUTF-8のメールの表示に失敗することがあるそうですので、きちんとしたやり方ではなく応急処置的ですがISO-2022-JPのメールになるようにする方法も提示しておきます。
blogs/sample.htaccess
のファイル名を.htaccess
に変更して、その中の<IfModule mod_php4.c>
php_flag register_globals off
</IfModule>を
<IfModule mod_php4.c>
php_flag register_globals off
php_value mbstring.language "Japanese"
php_value mbstring.internal_encoding "UTF-8"
php_value mbstring.func_overload "7"
php_flag mbstring.encoding_translation on
php_value mbstring.http_input "ASCII,JIS,UTF-8,EUC-JP,SJIS"
php_value mbstring.http_output "pass"
</IfModule>と変えます。
それから、
blogs/b2evocore/_functions.php
の1311行目の$headers[] = 'Content-Type: text/plain; charset='.$locales[ $current_locale ]['charset'];
という部分を、コメントアウト(行の先頭に
//
を付ける)して// $headers[] = 'Content-Type: text/plain; charset='.$locales[ $current_locale ]['charset'];
と変えてみてください。
なお、Apache 2 の場合は、
.htaccess
の
<IfModule mod_php4.c>
を
<IfModule sapi_apache2.c>
に変えるといいらしいです。
(PHPマニュアル 設定を変更するには の末尾を参照) -
- 経由検索エンジンのキーワード
-
統計表示の、検索エンジン経由アクセスの使用キーワード表示でエラーが出たり、文字化けします。
blogs/b2evocore/_functions_hitlogs.php
の459行目、if( strpos( $q, 'Ã' ) !== false )
を
if( mb_strpos( $q, "\xC3", 0, 'ASCII' ) !== false )
に変更します。
また、同ファイル470行目、echo htmlentities($kwout);
を
echo htmlspecialchars($kwout);
に変更します。