[Zend Framework] Zend_Validate: エラーメッセージを日本語にする
入門書で入門中のZend。
Zend_Validate のエラーメッセージが英語表記なので「setErrorMessages」していました。
きっとまとめて翻訳する方法があるんだろうなと調べ、おかげさまで解決できました。
5文字未満の入力でエラーとした場合、標準ではこのように表示されます。
日本語化
日本語化については、こちらのサイトを参考にさせて頂きました。
Zend_Validate.php
ダウンロードした ZendFramework からリソースファイルを探します。
ZendFramework-1.12.0 の場合は、以下にありました。
/resources/languages/ja/Zend_Validate.php
今回はプロジェクトフォルダの /application
と同列の /library
内に置きます。
Bootstrap.php
application/Bootstrap.php
内に以下の記述を追加。
protected function _initLang() {
// Zend_Validateのメッセージ日本語化
// 言語ファイルのロード
$translator = new Zend_Translate(
// Arrayアダプタを使って言語定義を取得
'array',
// 言語リソースのパス
realpath(APPLICATION_PATH . '/../library/Zend_Validate.php'),
// 日本語ロケール
'ja',
// ファイル指定
array('scan' => Zend_Translate::LOCALE_FILENAME)
);
// デフォルトのトランスレータを設定
Zend_Validate_Abstract::setDefaultTranslator($translator);
}
するとエラーメッセージが日本語に変わりました。
ただし、このままだとマルチバイト文字の文字数チェックはうまくいかないようで、例えばひらがな3文字ではエラーが発生しません。
そこで application/Bootstrap.php
内にさらに記述を追加。
protected function _initEncoding()
{
ini_set('iconv.internal_encoding', 'UTF-8');
}
日本語の文字数チェックも正常に動きました。