t()でくくってあると、LOCALEで設定された値が(日本語ならja_JP.UTF8)
languagesフォルダ内にあれば、
そのフォルダ内のLC_MESSAGES/messages.po ファイルを見に行きます。
messages.poファイルの
msgid と書かれた行と合致する語句であれば
そのすぐ下のmsgstr に書かれた語句に変換する。
という処理になります。
ですのでLOCALEに設定した値によって変更が無い語句は
t()はつけないほうがいいです。
実際には少し違うのですがはしょっています。
ややこしいこと言ってすみません。
Re: 多言語サイトのフォームの翻訳
2012年8月29日 at 11:29
投稿してから気がつきました。
これって、デフォルトを英語にしている場合の対策でした。
申し訳ないです。。。
でも悔しいので、もうちょいだけ追加修正。
先ほどのcontroller.phpの追記部分、次のようにしてください。
if($notCompleted) $errors['CompleteRequired'] = ("Complete required fields *") ; //カッコの前にあるtを取る
$errors['CompleteRequiredjp'] = ("必須項目を入力してください *") ; //この1行を追記
}
同様にタイトル部分もこんな感じで。
$this->set('formResponse', ('Please correct the following errors:') );
$this->set('formResponsejp', ('以下のエラーを訂正してください。') ); //この1行を追記
カッコの前にあるtを取れば日本語化されない、という事みたいです。
今度はちゃんと日本語環境でためしました

タグ:
Your post has been saved and will be published after approval by the forum moderator.
tomoya
Re: 多言語サイトのフォームの翻訳
URLから言語を判断させてるんですね。
ふと思ったのですが、独自の属性を追加して言語を認識させる方法は可能でしょうか?
実際、テーマのテンプレートに英語ページ用の属性を追加して、
ナビゲーション(日本語と英語)の振り分けに使っています。
"english_nav"属性を追加して、
english_nav属性があるページには、英語用ナビゲーションブロックを表示させ、
それ以外は、日本語ナビのブロック、という感じです。
こんな感じで、言語の振り分けはできないのでしょうか?
あと、エラーメッセージを日本語と他言語を一緒に表示させる方法ですが、
のように、英文のあとに、日本語を続けて入力しても大丈夫のようです。
この方法だと改行されずに、英文のあとに日本語が表示されます。