现在的位置: 首页 > 综合 > 正文

zend_validate message(zend 验证器 消息) 中文设置

2018年05月19日 ⁄ 综合 ⁄ 共 4497字 ⁄ 字号 评论关闭
文章目录

验证消息

每个验证器都基于Zend_Valicate提供了一个或多个信息来以防各种失败的验证,你可以把这个信息设置成你自己的信息,或者翻译已经存在的信息来使验证器返回一些不同的信息。

这些验证消息的内容可以在验证器类的开头部分找到,让我们一块看一下Zend_Validate_GreaterThan,以它作为我们的例子:

Php代码

protected $_messageTemplates = array(
<SPAN style="WHITE-SPACE: pre">	</SPAN>self::NOT_GREATER => "'%value%' is not greater than '%min%'",
);

我们可以看到这里使用常量self::NOT_GREATER作为键指向一个失败信息。它只是许多信息里的一个。

你可以通过getMessageTemplates()方法检索到所有的信息,它将返回验证器在验证期间所有可能返回的信息。

Php代码

$validator = new Zend_Validate_GreaterThan();
$messages = $validator->getMessageTemplates();

你可以使用setMessage()方法设置一条在特定的错误时返回的信息。

Php代码

$validator = new Zend_Validate_GreaterThan();
<SPAN style="WHITE-SPACE: pre">	</SPAN>$validator->setMessage(
<SPAN style="WHITE-SPACE: pre">	</SPAN>'Please enter a lower value',
<SPAN style="WHITE-SPACE: pre">	</SPAN>Zend_Validate_GreaterThan::NOT_GREATER
);

第二个参数定义的失败信息将被覆盖,当你省去参数的时候,这个验证器所有的可能返回的失败信息将都会被设置成这个信息。

 

使用提前翻译好的验证信息

zend framework自带了多达45个不同的验证器,200条失败信息,翻译这些信息是个乏味的工作,为了方便,Zend Framework已经自带了提前翻译验证信息,你可以在Zend Framework安装文件的/resources/languages这个路径下找到。

注意代码

<STRONG>注意:使用路径</STRONG>
资源文件在引入库的路径之外,所有的你的翻译应该也在路径之外。

 

这里以把所有的验证信息翻译到德语为例,你要做的事只有粘贴下面的翻译器到Zend_Validate来使用这些资源文件。 

Php代码

$translator = new Zend_Translate(
     array(
              'adapter' => 'array',
              'content' => '/resources/languages',
              'locale' => $language,
              'scan' => Zend_Translate::LOCALE_DIRECTORY
              )
);
Zend_Validate_Abstract::setDefaultTranslator($translator);

注意代码

<STRONG>注意:使用翻译适配器</STRONG>
翻译适配器Zend Framework选择了数组适配器,使它可以快速的创建并且编辑也非常简单

注意代码

<STRONG>注意:支持的语言</STRONG>
这个功能还是刚刚起步,所以被支持的语言可能还不太完善,随着版本的更新,新的语言将被添加进去,可以灵活的使用已经存在的资源文件来做属于你自己的翻译。

你也可以使用这些资源文件来覆盖已经存在的翻译,以至于你不需要手动创建自己的文件。

 

现在验证信息的长度

有时限制一个验证信息的最大长度是必要的,例如当你的视图只允许一个最大长度为100个字符显示在一行的时候,Zend_Validate是可以自动限制返回验证信息的最大长度的。

 

可以用Zend_Validate::getMessageLength()来获得实际的长度,加入是-1,返回的信息将不会呗截断,这个是默认行为。

 

使用Zend_Validate::setMessageLength()来限制返回的信息长度,可以将它设置成你需要的任何数值,当返回的信息超出了这个长度,信息将被截断并且在后面添上‘...’代替后面的信息。

Php代码

Zend_Validate::setMessageLength(100);

注意代码

<STRONG>注意:在什么地方使用这个参数?</STRONG>
设置信息长度的的参数适用于所有的验证器,甚至自己定义的,只要它继承了Zend_Validate_Abstract

 

本文翻译自:http://framework.zend.com/manual/1.11/en/zend.validate.messages.html

 

设置翻译适配器还有其他方式:

Php代码

$languageFile=ROOT_PATH.'/library/Fwcms/language/simpleChinese.php'//自定义文件名和路径
$translate = new Zend_Translate('array',require $languageFile, 'zh_CN');
 Zend_Registry::set('Zend_Translate', $translate);
// Zend_Validate_Abstract::setDefaultTranslator($translate);
// Zend_Form::setDefaultTranslator($translate);

以上三种都可以使用。

 

 

zend Framework 还没有提供中文的翻译,下面是来自于网络的翻译,但翻译不全,也贴在下面:

Php代码

return array(
    "Value is required and can't be empty"                   => '输入值不可以为空',
    "'%value%' has not only alphabetic and digit characters" => "'%value%'不是字母或数字",
    "'%value%' is an empty string"                           => "输入值不可以为空",
    "'%value%' has not only alphabetic characters"           => "'%value%'包含非英文字母的字符",
    "isValid"                                                => "错误",
    "'%value%' must contain between 13 and 19 digits"        => "'%value%'必须是一个13到19位之间的数字",
    "Luhn algorithm (mod-10 checksum) failed on '%value%'"   => "Luhn algorithm (mod-10 checksum) failed on '%value%'",
    "'%value%' is not between '%min%' and '%max%', inclusively" => "'%value%' 不在 '%min%' 和 '%max%'之间",
    "'%value%' is not strictly between '%min%' and '%max%'"     => "'%value%' 必须大于 '%min%' ,小于 '%max%'",
    "'%value%' is not of the format YYYY-MM-DD"                 => "'%value%' 必须是类似 YYYY-MM-DD 这样的日期格式",
    "'%value%' does not appear to be a valid date"              => "'%value%' 是一个错误的日期",
    "'%value%' does not fit given date format"                  => "'%value%' 日期格式错误",
    "'%value%' contains not only digit characters"              => "'%value%' 不是数字",
    "'%value%' is not a valid email address in the basic format [email=local-part@hostname]local-part@hostname[/email]"         => "这不是一个电子邮件地址",
    "'%hostname%' is not a valid hostname for email address '%value%'"                       => "这不是一个电子邮件地址",
    "'%hostname%' does not appear to have a valid MX record for the email address '%value%'" => "这不是一个电子邮件地址",
    "'%localPart%' not matched against dot-atom format"                                      => "这不是一个电子邮件地址",
    "'%localPart%' not matched against quoted-string format"                                 => "这不是一个电子邮件地址",
    "'%localPart%' is not a valid local part for email address '%value%'"                    => "这不是一个电子邮件地址",
    "'%value%' exceeds the allowed length"                                                   => "'%value%'不是一个电子邮件地址",
    "'%value%' does not appear to be a float"                                                => "'%value%'不是一个浮点数",
    "'%value%' is not greater than '%min%'"                                                  => "输入值必须大于 '%min%'",
    "'%value%' has not only hexadecimal digit characters" => "输入值不是一个十六进制字符串",
    'Tokens do not match'=>'Tokens do not match',
    'No token was provided to match against'=>'No token was provided to match against',
    "'%value%' was not found in the haystack"=>"'%value%'不在可选范围之内",
    "'%value%' does not appear to be an integer"=>"'%value%' 不是一个整数",
    "'%value%' does not appear to be a valid IP address"=>"'%value%' 不是一个合法的IP地址",
    "'%value%' is not less than '%max%'"=>"输入值必须小于 '%max%'",
    "'%value%' does not match against pattern '%pattern%'"=>"'%value%' 不符合输入规则 '%pattern%'",
    "'%value%' is less than %min% characters long"=>"'%value%' 字符长度小于 %min% 位",
    "'%value%' is greater than %max% characters long"=>"'%value%' 字符长度超过 %max% 位"
);

抱歉!评论已关闭.