FuelPHPサイド
FeulBeans 30 : バリデーションエラーメッセージ
バリデーションエラーのメッセージを設定しましょう。ええ?ブログチュートリアルの途中では?
はい、続きですが、話がガラリと変わり、独立した話ですから、タイトルも続きにはなっていません。
バリデーションのエラーは初めから多国語対応がされています。その仕組みを利用しています。
FulePHPの多国語対応はlangフォルダー下に置かれた、各国語のメッセージファイルに基づいて行われます。
どの言語ファイルが使用されるかは、config.phpのlanguageとlanguage_fallbackの設定値により決まります。languageがどの言語を使用するかを決めますが、その言語のファイルがない場合に、代わりに使用される言語をlanguage_fallbackで指定します。通常はen(英語)ですね。
ではconfig.phpを変更してしまいましょう。language = 'ja'にしましょう。
言語ファイルはコンフィグやクラスのコードのファイルと同様。appに対象が無ければcoreのものが使用されます。逆にcoreに用意されているものがある場合、変更するときにはappにコピーし、coreを変更しなくても良い仕組みになっています。
バリデーションのメッセージはcore/lang/en/validation.phpが存在しています。まず、app/lang下にjaフォルダーを作成し、そこへこのファイルをコピーしてください。
エディターで中身を見ましょう。コンフィグと同じくキーとその値として記述されています。キーはバリデーションのルールになっています。オリジナルのバリデーションルールであっても、キーに指定すれば、表示されます。
:labelはValidationクラスのadd()の第2引数、項目名として指定した値に置き換わります。。:param:1はadd_rule()の第2引数の値に置き換わります。:valueは項目の入力値に置き換わります。
バリデーションのメッセージは、翻訳と言うより、自分の作っているシステムに合わせて文言を決めましょう。硬いシステムなら丁寧な文にし、フレンドリーなシステムなら、柔らかくしましょう。ここらへんも統一されていないと、システム全体がちぐはぐに感じられますよ。
さらに、vlidation.phpに設定したメッセージを使用せず、別のメッセージで置き換えるときは、Validationクラスのset_message()が利用できます。
では、翻訳していきましょう。今回は、硬すぎず、柔らかすぎず、まあ、一般的に広く使えるような言い回しで翻訳しました。
<?php
return array(
// 未使用
'exact_length' => 'The field :label must containly exactly :param:1 characters.',
'match_value' => 'The field :label must contain the value :param:1.',
'match_pattern' => 'The field :label must match the pattern :param:1.',
'valid_emails' => 'The field :label must must contain a list of valid email addresses.',
'valid_url' => 'The field :label must contain a valid URL.',
'valid_ip' => 'The field :label must contain a valid IP address.',
'numeric_min' => 'The minimum numeric value of :label must be :param:1',
'numeric_max' => 'The maximum numeric value of :label must be :param:1',
'valid_string' => 'The valid string rule :rule failed for field :label',
// 今回使用するもの
'required' => ':labelを指定してください。',
'min_length' => ':labelには、最低 :param:1文字必要です。',
'max_length' => ':labelは :param:1文字以下で指定してください。',
'match_field' => ':labelには パスワードと同じ文字を指定してください。',
'valid_email' => 'メールアドレスの形式が正しくありません。',
// オリジナル バリデーション
'unique' => ':labelに指定された":value"は、既に使用されております。他の:labelをご利用ください。',
);
現状1.1バージョンでは、match_fieldの:raram:1が正しく表示されません。既に、バグとして報告されています。次期バージョンでは修正されるでしょう。
では、バリデーションに引っかかるような入力パターンを試し、メッセージを確認して下さい。
| FuelBeans 29 : Shooting Brake 2< 前 | 次 >FuelBeans 31 : Shooting Brake 3 |
|---|
| < 前 | 次 > |
|---|