忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2017/08/19 16:08 |
Zend Framework2.0 Zend_Validate.php
composerでインストールするとZF2の本体は
vendor/zendframework/zendframework/library/Zend
とかいう変な場所に置かれてしまうわけですが、その近くに
vendor/zendframework/zendframework/resources/languages/ja/Zend_Validate.php
という謎のファイルを発見しました。

中身は単なる配列で、Zend_Validatorなどで使える値が入っているようです。
なんだこれ。
おそらくどこかでオートロードするような機能があるのでしょうが、どうやって使うのが正解なのか全くわかりません。
とりあえず無理矢理読み込んでみます。
<?php
	require_once('path/to/channel/vendor/autoload.php');
	
	//設定
		$validatorOptions = array(
			'translatorTextDomain'=>'ja'
		);
		$translatorOptions = array(
			'translation_files' =>array(
				array(
					'type' => 'phparray'
					,'text_domain'=>'ja'
					,'filename'=>'path/to/channel/vendor/zendframework/zendframework/resources/languages/ja/Zend_Validate.php'
				)
			)
		);
	
	//Ipバリデータ
		$validator = new Zend\Validator\Ip($validatorOptions);
	
	//有効なIPアドレスか
		$isValid = $validator->isValid('192.168.0.256');
	
	//発生したエラーメッセージを取得
		$errorMessages = $validator->getMessages();
	
	//Translatorをセット
		$translator = Zend\I18n\Translator\Translator::factory($translatorOptions);
		$validator->setTranslator($translator);
	
	//再度チェック
		$isValid = $validator->isValid('192.168.0.256');
		$errorMessagesJp = $validator->getMessages();

Fatal error: Class 'Locale' not found in path\to\channel\vendor\zendframework\zendframework\library\Zend\I18n\Translator\Translator.php on line 228

あふん。

Localeは国際化関数に含まれるクラスです。

http://php.net/manual/ja/intl.installation.php
> PHP 5.3.0 以降には同梱されています

php.iniに
;extension=php_intl.dll
という行があり、デフォルトで無効化されていました。
ところがこの行を有効化したら、実際にはファイルが存在するのに「icuuc46.dllが見つからない」とか言われて起動しなくなりました。
原因は不明ですが、xampp\phpにあったicuuc*.dllを片端からxampp\apache\binにコピペしたらなおった。

実行結果。
array(1) {
  ["notIpAddress"]=>
  string(50) "The input does not appear to be a valid IP address"
}
array(1) {
  ["notIpAddress"]=>
  string(53) " 入力値は IP アドレスではないようです"
}
無事日本語化されました。
いやまあ、filenameを直接指定するとか明らかに変なので、ここらへんオートロードでどうにかなるとは思うのですが、よくわかりません。

Zend_ValidateというよりZend\I18nの話だなこりゃ。
PR


2013/01/18 23:59 | Comments(0) | PHP

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<今週の実績 2013/01/20 | HOME | デッドアイランド ZOTY脱出記 9日目>>
忍者ブログ[PR]