Zend_Validateの日本語化


以前から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を行うとメッセージは用意した翻訳ファイルにしたがって日本語化されます。

The following two tabs change content below.

いしかわ

まだまだ広く浅く勉強中のエンジニア。得意分野はラーメン。

Comments are closed.