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

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

016ae3aab62887950847da76f1bad235

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

日本語化

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

Zend_Validate.php

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

/resources/languages/ja/Zend_Validate.php

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

Bootstrap.php

application/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);
}

c87631714cbc089ac0c35886d0a3c41f

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

application/Bootstrap.php
protected function _initEncoding()
{
    ini_set('iconv.internal_encoding', 'UTF-8');
}

203a4493cc32c309b256b3073be3f0d0

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