以前からZend_Validateを使っていたのですが、本格的な翻訳は行わず、手元で強引に日本語メッセージを作成していました。
しかし、開発規模が大きくなってくると対応が難しくなってきます。
ZendFrameworkにはZend_Translateという多言語に対応したアプリケーションを作るためのパッケージが用意されています。
このZend_Translateを使うとZend_Validateのメッセージを多言語に対応させることが可能です。
※ZendFrameworkのバージョンは1.9.6を使っています。
■Zend_Translateの使い方
Zend_Translateでは設定ファイルを、配列、CSV、ini、Gettextなど各種入力ファイルをサポートしていますが、ZendFrameworkのドキュメントに記載されている例を使って、簡単な配列で説明いたします。
$english = array( 'message1' => 'message1', 'message2' => 'message2', 'message3' => 'message3'); $japanese = array( 'message1' => 'メッセージ1', 'message2' => 'メッセージ2', 'message3' => 'メッセージ3'); $translate = new Zend_Translate('array', $english, 'en'); $translate->addTranslation($japanese, 'jp'); print $translate->_("message1"); // 結果:メッセージ1
このようにとても簡単に翻訳ができます。
■Zend_Validateの翻訳
Zend_Validateの翻訳は量が多いため、配列ではなく、ini形式で翻訳ファイルを用意しました。以下は、翻訳ファイルの記載例です。
; Alnum Invalid type given, value should be float, string, or integer = "不正な値です。小数、文字列、又はは数字を入力して下さい。" '%value%' has not only alphabetic and digit characters = "'%value%'にアルファベットと数字以外の文字が含まれています。" '%value%' is an empty string = "'%value%'が入力されていません。"
どのメッセージを日本語化すべきかは、Zend_Validateのドキュメントに記載されています。
http://framework.zend.com/manual/ja/zend.validate.messages.html
次に作成した翻訳ファイルをZend_Validateにあてます。
$translate = new Zend_Translate('ini', '/filepath/validate.jp.ini', 'jp'); Zend_Validate_Abstract::setDefaultTranslator($translate);
これでValidateを行うとメッセージは用意した翻訳ファイルにしたがって日本語化されます。
ロゴスウェア
最新記事 by ロゴスウェア (全て見る)
- Amazon Linux(EC2)と PHPSTORM で Xdebug を行う - 2018年9月26日
- やらないことの合意 - 2018年6月27日
- 卒園アルバムとプロジェクトマネジメント - 2018年3月30日
Comments are closed.