Hi,

Translations doesn't work with AJAX.

Example:

This code produces standard validators messages
$response = $form->processAjax($form->getValues());
$this->getResponse()->setHeader('Content-Type', 'application/json')
                     ->setBody($response);

This code populates messages from translator file
$form->isValid($this->_request->getPost());

I think you should extend method:
Zend_Form::public function processAjax(array $data)
    {
        require_once 'Zend/Json.php';
        if ($this->isValidPartial($data)) {
            return Zend_Json::encode(true);
        }
        $messages = $this->getMessages();

        // put translation here ;)

        return Zend_Json::encode($messages);
    }

regards,
Łukasz

On 03/02/2008, Matthew Weier O'Phinney <[EMAIL PROTECTED]> wrote:
>
> -- Dividy <[EMAIL PROTECTED]> wrote
> (on Saturday, 02 February 2008, 03:19 PM -0800):
> > For my first post on this nice forum, could someone explain me in
> details
> > how to translate the error messages of a zend_form validation ?
> >
> > I tried much thing but none work.
>
> You'll need to do several things.
>
> First, for each validator you use, determine what the various error
> codes are -- you can do this by looking at the values of the validator's
> class constants. For instance, 'Zend_Validate_NotEmpty' defines the
> constant Zend_Validate_NotEmpty::STRING_EMPTY to 'stringEmpty'.
>
> Armed with that list, create translations for one of the translation
> adapters supported by Zend_Translate. If you were using, for instance,
> the 'array' adapter, you could do this:
>
>     <?php
>     // translations.php
>     return array(
>         'stringEmpty' => 'Please fill in this value',
>         ...
>     );
>
> Then, create your translate object:
>
>     $translations = include 'path/to/translations.php';
>     $translate = new Zend_Translate('array', $translations, 'en');
>
> And pass the translation adapter to your form:
>
>     $form->setTranslator($translate->getAdapter());
>
> And that's all there is to it. The above defines english translations,
> but you can do whatever language you want; refer to the Zend_Translate
> manual for more information on creating these.
>
>

Reply via email to