SOY CMSのフォーラムで下記のような内容があった。
/*****************************************/
現在日本語、英語、中国語の3言語のサイトを制作しているのですが 1つのsoycmsで、/ja、/en、/cnで各サイトを作成し、1つのinquiryでメールフォームを共有したいと思っています。 各フォームで、表示メッセージや自動送信メールの内容などは変更したのですが 1点のみ 管理者とユーザーへの送信メール内容の中で 「問い合わせ番号:」 「問い合わせ日時:」 の部分のみすべて日本語となってしまいます。 (途中省略) もし、良い方法があればご教授頂けますと嬉しいです。
/*****************************************/
上記の件はメールを送信する直前に日本語表記が他言語表記に変われば良いので、
SOY Inqiuryでお問い合わせ内容をコンパクトにするで見たmail.***.phpでメール文面の拡張を行えば良い。
今回は取り急ぎユーザ側に送信するメールになるので、mail.user.phpを活用する。
defaultテンプレートを例に話を進めると、
cms └── app └── webapp └── inquiry └── src └── template ├── _sample ├── default │ ├── complete.php │ ├── confirm.php │ ├── form.php │ ├── mail.user.php │ └── style.php ├── mobile └── responsive
defaultディレクトリ以下にmail.user.phpを配置する。
配置したmail.user.phpの記述は下記のようにする。
<?php /** * 使用できる変数 * $columns 各フォームのオブジェクト(入力内容も含む) * $this->form フォームの設定 * $inquiryMailBody 出力されたお問い合わせ内容 * * 拡張方法 * echo "追加したい文字列";でメールのコンテンツ末尾に追加されます。 * $mailBody[1]の値を上書きすると出力内容が変わります。 */ $lines = explode("\n", $mailBody[1]); if(count($lines)){ $contents = array(); foreach($lines as $line){ // 問い合わせ番号を他言語に変換 if(strpos($line, "問い合わせ番号") !== false){ $line = str_replace("問い合わせ番号", "contact number", $line); } // 問い合わせ日時を他言語に変換 if(strpos($line, "問い合わせ日時") !== false){ $line = str_replace("問い合わせ日時", "contact date", $line); } $contents[] = $line; } //再び組み立てる $mailBody[1] = implode("\n", $contents); }
これで日本語になってしまう個所を他言語に変換出来た。
これを各言語毎にカスタマイズ用のフォームを設ければ、複数言語にも対応できる。