[Zend Framework] Zend_Validate: エラーメッセージを日本語にする

入門書で入門中のZend。
Zend_Validate のエラーメッセージが英語表記なので「setErrorMessages」していました。
きっとまとめて翻訳する方法があるんだろうなと調べ、おかげさまで解決できました。

[markdown]
[![016ae3aab62887950847da76f1bad235](https://www.d-wood.com/wpmt/wp-content/uploads/2013/04/016ae3aab62887950847da76f1bad235.png)](https://www.d-wood.com/wpmt/wp-content/uploads/2013/04/016ae3aab62887950847da76f1bad235.png)

5文字未満の入力でエラーとした場合、標準ではこのように表示されます。

## 日本語化

日本語化については、こちらのサイトを参考にさせて頂きました。

> * [Zend Framework – 開発メモるアル](http://stdpg.blog.shinobi.jp/zend%20framework/)

### Zend_Validate.php

ダウンロードした ZendFramework からリソースファイルを探します。
ZendFramework-1.12.0 の場合は、以下にありました。

“`
/resources/languages/ja/Zend_Validate.php
“`

> * [zf1/resources/languages/ja/Zend_Validate.php at master · zendframework/zf1](https://github.com/zendframework/zf1/blob/master/resources/languages/ja/Zend_Validate.php)

今回はプロジェクトフォルダの `/application` と同列の `/library`内に置きます。

### Bootstrap.php

`application/Bootstrap.php` 内に以下の記述を追加。

“`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);
}
“`

[![c87631714cbc089ac0c35886d0a3c41f](https://www.d-wood.com/wpmt/wp-content/uploads/2013/04/c87631714cbc089ac0c35886d0a3c41f.png)](https://www.d-wood.com/wpmt/wp-content/uploads/2013/04/c87631714cbc089ac0c35886d0a3c41f.png)

するとエラーメッセージが日本語に変わりました。
ただし、このままだとマルチバイト文字の文字数チェックはうまくいかないようで、例えばひらがな3文字ではエラーが発生しません。
そこで `application/Bootstrap.php` 内にさらに記述を追加。

“`php:application/Bootstrap.php
protected function _initEncoding()
{
ini_set(‘iconv.internal_encoding’, ‘UTF-8’);
}
“`

[![203a4493cc32c309b256b3073be3f0d0](https://www.d-wood.com/wpmt/wp-content/uploads/2013/04/203a4493cc32c309b256b3073be3f0d0.png)](https://www.d-wood.com/wpmt/wp-content/uploads/2013/04/203a4493cc32c309b256b3073be3f0d0.png)

日本語の文字数チェックも正常に動きました。
[/markdown]