-- Łukasz Kazimierz Bandzarewicz <[EMAIL PROTECTED]> wrote
(on Monday, 04 February 2008, 11:02 AM +0100):
> 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);
>     }

You must not be using subversion. :-) 

I modified getMessages() in trunk late last week to perform
translations; getMessages() now always returns i18n-ized messages if a
translate adapter is present.


> 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.
> 
> 
> 

-- 
Matthew Weier O'Phinney
PHP Developer            | [EMAIL PROTECTED]
Zend - The PHP Company   | http://www.zend.com/

Reply via email to