Exemple #1
0
    /**
     * @group ZF-9364
     */
    public function testElementTranslatorPreferredOverDefaultTranslator()
    {
        $defaultTranslations = array(
            'isEmpty' => 'Default message',
        );
        $formTranslations = array(
            'isEmpty' => 'Form message',
        );        
        $elementTranslations = array(
            'isEmpty' => 'Element message',
        );
        $defaultTranslate = new Translator('ArrayAdapter', $defaultTranslations);
        $formTranslate = new Translator('ArrayAdapter', $formTranslations);
        $elementTranslate = new Translator('ArrayAdapter', $elementTranslations);
        
        Registry::set('Zend_Translator', $defaultTranslate);
        $this->form->setTranslator($formTranslate);        
        $this->form->addElement('text', 'foo', array('required'=>true, 'translator'=>$elementTranslate));
        $this->form->addElement('text', 'bar', array('required'=>true));

        $this->assertFalse($this->form->isValid(array('foo'=>'', 'bar'=>'')));
        $messages = $this->form->getMessages();
        $this->assertEquals(2, count($messages));
        $this->assertEquals('Element message', $messages['foo']['isEmpty']);
        $this->assertEquals('Form message', $messages['bar']['isEmpty']);
        
        $this->assertFalse($this->form->isValidPartial(array('foo'=>'', 'bar'=>'')));
        $messages = $this->form->getMessages();
        $this->assertEquals(2, count($messages));
        $this->assertEquals('Element message', $messages['foo']['isEmpty']);
        $this->assertEquals('Form message', $messages['bar']['isEmpty']);
    }
 /**
  * @group ZF-12375
  */
 public function testElementTranslatorNotOveriddenbyFormTranslatorDuringRendering()
 {
     // Set translator for form
     $this->form->setTranslator(new Zend_Translate('array', array('labelText' => 'Foo')));
     // Add element with his own translator
     $this->form->addElement('text', 'foo', array('label' => 'labelText', 'translator' => new Zend_Translate('array', array('labelText' => 'Bar')), 'decorators' => array('Label')));
     $this->form->setDecorators(array('FormElements'));
     // Test
     $this->assertSame(PHP_EOL . '<label for="foo" class="optional">Bar</label>' . PHP_EOL, $this->form->render(new Zend_View()));
 }
Exemple #3
0
 public function testLocalTranslatorPreferredOverDefaultGlobalTranslator()
 {
     $this->assertNull($this->form->getTranslator());
     $translatorDefault = new Zend_Translate('array', array('foo' => 'bar'));
     Zend_Form::setDefaultTranslator($translatorDefault);
     $received = $this->form->getTranslator();
     $this->assertSame($translatorDefault->getAdapter(), $received);
     $translator = new Zend_Translate('array', array('foo' => 'bar'));
     $this->form->setTranslator($translator);
     $received = $this->form->getTranslator();
     $this->assertNotSame($translatorDefault->getAdapter(), $received);
     $this->assertSame($translator->getAdapter(), $received);
 }
Exemple #4
0
 protected function initTranslation(\Zend_Form $form, $id, $locale = null)
 {
     if ($locale === null) {
         $locale = \Zend_Locale::findLocale();
     }
     $trans = $this->translateForm($id, $locale);
     if ($locale != null && $locale != "") {
         if (null === $form->getTranslator()) {
             $form->setTranslator($trans);
         } else {
             $form->getTranslator()->addTranslation($trans);
         }
     }
 }
 public function translateAction()
 {
     $this->view->page_title .= $this->view->translate('Help us to translate nolotiro.org to your language');
     $request = $this->getRequest();
     $newlangs = array('ca' => 'Català', 'gl' => 'Galego', 'eu' => 'Euskara', 'nl' => 'Nederlands', 'de' => 'Deutsch', 'fr' => 'Français', 'pt' => 'Português', 'it' => 'Italiano');
     $lform = new Zend_Form();
     $lform->setMethod('get');
     $lform->addElement('select', 'lang', array('multiOptions' => $newlangs));
     $elem_newlang = $lform->getElement('lang');
     $elem_newlang->removeDecorator('label')->removeDecorator('HtmlTag')->setAttrib('onchange', 'this.form.submit()');
     $lform->populate($request->getParams());
     $newlang = $elem_newlang->getValue();
     $this->view->langsform = $lform;
     if ($newlang != null) {
         if (isset($newlangs[$newlang])) {
             $this->view->newlangtext = $newlangs[$newlang];
         } else {
             $newlang == null;
         }
     }
     if ($newlang == null) {
         $elem_newlang->clearMultiOptions();
         $elem_newlang->addMultiOption("", "-- " . $this->view->translate("Choose language") . " --");
         $elem_newlang->addMultiOptions($newlangs);
     } else {
         $options = array('scan' => Zend_Translate::LOCALE_FILENAME);
         $translate = new Zend_Translate('csv', NOLOTIRO_PATH . '/application/languages/', 'en', $options);
         $adapter = $translate->getAdapter();
         $es = $adapter->getMessages('es');
         if (strcmp($this->lang, $newlang) != 0) {
             $userlang = $adapter->getMessages($this->lang);
             $adapter->setLocale($this->lang);
         } else {
             $adapter->setLocale("en");
         }
         $en = $adapter->getMessages('en');
         $lang = $adapter->getMessages($newlang);
         $tform = new Zend_Form();
         $tform->setMethod('post');
         $tform->setAttrib('class', 'texts');
         $tform->addElement('captcha', 'safe_captcha', array('label' => 'Please, insert the 4 characters shown:', 'required' => true, 'captcha' => array(' captcha' => 'Image', 'wordLen' => 4, 'height' => 50, 'width' => 160, 'gcfreq' => 50, 'timeout' => 300, 'font' => NOLOTIRO_PATH . '/www/images/antigonimed.ttf', 'imgdir' => NOLOTIRO_PATH . '/www/images/captcha')));
         $tform->setTranslator($adapter);
         $index = 0;
         foreach ($es as $key => $text) {
             if (strpos($key, "safe_") === 0) {
                 continue;
             }
             if (isset($userlang[$key])) {
                 $text = $userlang[$key];
             } elseif (isset($en[$key])) {
                 $text = $en[$key];
             } else {
                 $text = $key;
             }
             $maxlen = strlen($text) * 3;
             $text = preg_replace("/(\\<[^\\>]*\\>)/", " ", $text);
             $text = preg_replace("/(\\'?%[a-zA-Z\\-]*%?\\'?)/", "...", $text);
             if (isset($lang[$key])) {
                 $val = $lang[$key];
                 $maxlen = strlen($val) * 3;
                 $val = preg_replace("/(\\<[^\\>]*\\>)/", " ", $val);
                 $val = preg_replace("/(\\'?%[a-zA-Z\\-]*%?\\'?)/", "...", $val);
             } else {
                 $val = '';
             }
             if ($maxlen < 20) {
                 $maxlen = 20;
             }
             if ($maxlen < 140) {
                 $type = "text";
                 $rows = 1;
             } else {
                 $type = "textarea";
                 $rows = round($maxlen / 50);
             }
             $tform->addElement($type, "text{$index}", array('validators' => array(array('StringLength', false, array(1, $maxlen))), 'required' => false, 'label' => $text, 'value' => $val, 'cols' => 40, 'rows' => $rows));
             $input = $tform->getElement("text{$index}");
             if ($val == '') {
                 $input->getDecorator('Label')->setOption('class', 'empty');
             }
             $valid = $input->getValidator("StringLength")->setEncoding('UTF-8');
             $index++;
         }
         // add the submit button
         $tform->addElement('submit', 'submit_texts', array('label' => 'Send texts', 'class' => 'magenta awesome'));
         $this->view->textsform = $tform;
         $this->view->newlang = $newlang;
         $tform->populate($request->getParams());
         if ($tform->getElement("submit_texts")->getValue() != null) {
             $data = $tform->getValues();
             if ($tform->isValid($data)) {
                 $newdata = false;
                 $index = 0;
                 foreach ($es as $key => $text) {
                     if (strpos($key, "safe_") === 0 || strpos($key, "lang") === 0) {
                         continue;
                     }
                     $mod = false;
                     $val = $data["text{$index}"];
                     $comp = $lang[$key];
                     $comp = preg_replace("/(\\<[^\\>]*\\>)/", " ", $comp);
                     $comp = preg_replace("/(\\'?%[a-zA-Z\\-]*%?\\'?)/", "...", $comp);
                     if ($val != "" && (!isset($lang[$key]) || ($mod = $comp != $val))) {
                         $body .= "\"{$key}\";\"{$val}\"" . ($mod ? ' ***' : "") . "<br>";
                         if ($mod) {
                             $body .= "\"{$key}\";\"{$comp}\"" . ($mod ? ' ***' : "") . "<br>";
                         }
                         $newdata = true;
                     } else {
                         $body .= "<br>";
                     }
                     $index++;
                 }
                 if (!$newdata) {
                     $this->view->error = $this->view->translate('Please, translate at least one text.');
                     return;
                 }
                 $mail = new Zend_Mail('utf-8');
                 $mail->setBodyHtml($body);
                 $auth = Zend_Auth::getInstance();
                 if ($auth->hasIdentity()) {
                     $mail->setFrom($auth->getIdentity()->email, $auth->getIdentity()->username);
                 } else {
                     $mail->setFrom("*****@*****.**");
                 }
                 $mail->addTo('*****@*****.**', 'aLabs');
                 $mail->setSubject("Translation: {$newlang}.csv");
                 $mail->send();
                 $this->_helper->_flashMessenger->addMessage($this->view->translate('Your translation has been sent. Thanks for your help!'));
                 $this->_redirect('/' . $this->lang);
             }
         }
     }
 }
Exemple #6
0
 /**
  * Возвращает массив объектов Zend_Form мини-форм по типам 
  *
  * @return array
  */
 public function getForms()
 {
     $forms = array();
     foreach ($this->configs as $fieldtype => $template) {
         $form = new Zend_Form($template);
         $form->setElementsBelongTo('fields[]');
         $form->addDisplayGroup(array_keys($template['elements']), 'main', array('legend' => $template['label'], 'class' => 'ui-widget-content'));
         $form->removeDecorator('Form');
         $form->removeDecorator('DtDdWrapper');
         $form->setTranslator($this->translate);
         $forms[$fieldtype] = $form;
     }
     return $forms;
 }