-- Ł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/