[ ZendFramework1 ] バリデーションのメッセージを日本語化する ( Zend_Translate )

Pocket

Zend Framework には IP アドレスや URL などの妥当性検証用にバリデーションクラスが存在します。ここでは、これらバリデーションクラスが出力するメッセージを日本語化するサンプルコードを掲載しています。

日本人には日本語が一番です。日本語、チョー苦手ですが。。。

スポンサーリンク


リソースファイルの配置

Zend Framework をダウンロードして展開したディレクトリ内に resources ディレクトリがあり、さらにその中に languages ディレクトリがあります。その languages ディレクトリを application ディレクトリと同一階層に配置するものとします。

バリデーションメッセージの日本語化

下記は、ブートストラップ内でリクエストヘッダの HTTP_ACCEPT_LANGUAGE に応じて、バリデーションメッセージを日本語化するサンプルコードになります。

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
{    
    protected function _initLanguage()
    {
        // HTTP_ACCEPT_LANGUAGE に 'ja' が含まれていない場合はデフォルトのままとする 
        $locale = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
        if(empty($locale)) {
            return;
        }
        if(!strstr($locale, 'ja')) {
            return;
        } 
        
        // バリデーションクラスのメッセージを日本語化
        $translator = new Zend_Translate(
                        'array',
                        APPLICATION_PATH . '/../languages/ja/Zend_Validate.php', // リソースファイルパス
                        'ja'       // 日本語
                      );

        // デフォルトのトランスレータを変更する
        Zend_Validate_Abstract::setDefaultTranslator($translator);
    }
}

なんとなく、この機能は使用される頻度も少ないと個人的に思います。

スポンサーリンク

Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>