ここのブログにコンタクトフォームを設置しようと思い、探してみるとcontact form ][なるプラグインが公開されていました。
日本語の言語ファイルも公開されているようでしたので早速インストール。
プラグインダウンロード先はこちら
http://chip.cuccio.us/projects/
日本語化ファイルダウンロード先はこちら
http://www.miyoshitakayuki.com/
プラグイン本体を解凍してフォルダーをpluginsフォルダーにアップロード。
日本語化ファイル「wpcf-ja.mo」をpluginsフォルダーにアップロード。
これで完成と思いきや、日本語化されない(^^;
ソースを調べてみると
function get_locale() {
global $locale;
if (isset($locale))
return $locale;
// WPLANG is defined in wp-config.
if (defined('WPLANG'))
$locale = WPLANG;
if (empty($locale))
$locale = 'en_US';
$locale = apply_filters('locale', $locale);
return $locale;
}
で、WPLANGはconfigファイルで
define (‘WPLANG’, ‘ja_UTF’);
と設定されていた。
なので、ファイル名
wpcf-ja.mo
を
wpcf-ja_UTF.mo
に変更することで上手くいった。
テスト送信。
Subjectが文字化け(^^;
気持ち悪いので修正。
--- wp-content\plugins\wp-contact-form\wp-contactform.php
+++ wp-content\plugins\wp-contact-form\wp-contactform.php
@@ -138 +138 @@
- $subj_suffix = stripslashes(get_option('wpcf_subject_suffix'));
+ $subj_suffix = mb_encode_mimeheader(mb_convert_encoding(stripslashes(get_option('wpcf_subject_suffix')),"ISO-2022-JP"),"ISO-2022-JP");
@@ -143 +143 @@
- $name = $_POST['wpcf_your_name'];
+ $name = mb_encode_mimeheader(mb_convert_encoding($_POST['wpcf_your_name'],"ISO-2022-JP"),"ISO-2022-JP");
@@ -146,2 +146,2 @@
- $subject = $_POST['wpcf_subject'];
- $msg = $_POST['wpcf_msg'];
+ $subject = mb_encode_mimeheader(mb_convert_encoding($_POST['wpcf_subject'],"ISO-2022-JP"),"ISO-2022-JP");
+ $msg = mb_convert_encoding($_POST['wpcf_msg'],"ISO-2022-JP");
@@ -153 +153 @@
- $headers .= "Content-Type: text/plain; charset=\"" . get_settings('blog_charset') . "\"\n";
+ $headers .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n";
@@ -165 +165 @@
- $headers .= "Content-Type: text/plain; charset=\"" . get_settings('blog_charset') . "\"\n";
+ $headers .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n";
あまり綺麗じゃないですが、これでよしとしよう。
コメント
こんには。
同じ症状に悩まされています。
上記で修正されたソースをどこに入れればよろしいのでしょうか?
一通り、ContactFormのPHPのソースをのぞいたのですが、判然としません。
よろしければ、教えてください。
環境WordpressME-2.03 UTF-8で使用しています。
こんにちは。
まずUnified形式のdiffの見方はわかりますか?
上のソースはその形式で表記していますので、そのままコピペするだけでは上手くいきません。
@@に囲まれた数字が行番号で、左端の「-」,「+」が行の削除、追加を表します。
つまり「-」のついた行を削除してその代わりに「+」のついた行を挿入するという意味です。
ファイルはwp-contactform.phpになりますので、そのファイルを修正してみてください。
まあ結局のところメールのヘッダーが全く日本語処理されていないようですので、文字コードを変換しているだけなんですが。。。
ありがとうございます。
diffの見方が分かりませんでした。
contactform.phpを上記の通りに、-の行を消し、+の行を追加して修正し、アップしたのですが、画面がホワイトアウトになってしまいます。三回ほど同じことをためしたのですが、同じでした。何か原因が他にあるのかは分かりません。
後でもう一度、試してみたいと思います。
真っ白になっちゃいますか、はて?なぜでしょう?
考えられるとすれば、「文字コード改行コード」「単純な入力ミス」あと、これは大丈夫かと思いますが、上の修正でマルチバイトの関数を使っていますので、「PHPがマルチバイト対応になっているかどうか」、ぐらいでしょうか・・・
PHPはデフォルトの設定で、内部エンコードにEUC-JPが設定されています。
他のWordpress2.03MEを使っているところではContact formが上手く機能しているようなので、気長にやってみます。