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);
}
これで日本語になってしまう個所を他言語に変換出来た。
これを各言語毎にカスタマイズ用のフォームを設ければ、複数言語にも対応できる。





