Hi,

I tried to customize the message of Zend_Validate_EmailAddress, it works quite 
well,  but I cant translate the messages that are added by 
Zend_Validate_Hostname in my $validators array.

Sample:
$validators = array(
    'user_email' => array(
        'EmailAddress',
        'messages' => array(
            array(
                Zend_Validate_EmailAddress::INVALID => 
                "'%value%' ist keine gültige E-Mail-Adresse",

                Zend_Validate_EmailAddress::INVALID_HOSTNAME  => 
                "'%hostname%' ist kein gültiger Hostname. Bitte 
                prüfen Sie Ihre E-Mail-Adresse  '%value%'",

                Zend_Validate_EmailAddress::INVALID_MX_RECORD  => 
                "'%hostname%' kein MX Record gefunden '%value%'",

                Zend_Validate_EmailAddress::DOT_ATOM => 
                "'%localPart%' ungültiges Format (dot-atom)",

                Zend_Validate_EmailAddress::QUOTED_STRING => 
                "'%localPart%' ungültiges Format",

                Zend_Validate_EmailAddress::INVALID_LOCAL_PART 
                => "'%localPart%' ungültiges Format '%value%'",
            )
        )
    )
); 

When $user_email == "a" I get this messages:
["user_email"] => array(3) {
    [0] => string(81) "'a' ist kein gültiger Hostname. Bitte prüfen Sie Ihre 
E-Mail-Adresse  '[EMAIL PROTECTED]'"
    [1] => string(60) "'a' does not match the expected structure for a DNS 
hostname"
    [2] => string(82) "'a' appears to be a local network name but but local 
network names are not allowed"
  }

So, there are two messages which are not translated, and I don’t know how to 
translate them in my $validators array. Is there a way to achieve this? 

If not, we should imho contemplate to ensure that each Zend_Validate_XXX class 
must gain access to all possible messages that could be added to the $messages 
array

Though Bill explained, in a recent posting, that developers might use 
$input->getErrors();  to customize their messages, I'd prefer to translate the 
messages using the MESSAGES 
metacommand of Zend_Filter_Input. Having it all defined in one place, allows 
for instance to pass the $validator array to the view, where it could be used 
for AJAX and other Javascript operations. It would also be somewhat more 
'straight' if there is no exceptional rule bundled to the MESSAGES metacommand 

I am not sure whether the proposals Zend_Validate_Builder, Zend_Filter_Builder 
will solve this issue. Actually I am not even sure whether it is an issue... ;-)

Best regards
 /Ralf




Reply via email to