ZF-5086: Zend_Form_Element_File && Zend_Validate_File_*
Description
Валидаторы Zend_Validate_File_*, не переводятся на другие языки, если их загружать в элемент формы Zend_Form_Element_File.
Validators Zend_Validate_File_* are not translates into other languages if I load them into Zend_Form_Element_File. Sorry for my bad English;)
Here is my code: // It is a part of code $data = array ( Zend_Validate_File_Upload::INI_SIZE => "Файл '%value%' превышает заданый размер", Zend_Validate_File_Upload::FORM_SIZE => "Файл '%value%' превышает заданый лимит размера файла", Zend_Validate_File_Upload::PARTIAL => "Файл '%value%' был загружен частично", Zend_Validate_File_Upload::NO_FILE => "Файл '%value%' не был загружен", Zend_Validate_File_Upload::NO_TMP_DIR => "Не было найдено временной директории для файла '%value%'", Zend_Validate_File_Upload::CANT_WRITE => "Файл '%value%' не может быть записан", Zend_Validate_File_Upload::EXTENSION => "Дополнение вернуло ошибку, переслав файл '%value%'", Zend_Validate_File_Upload::ATTACK => "Файл '%value%' был загружен неразрешенным методом", Zend_Validate_File_Upload::FILE_NOT_FOUND => "Файл '%value%' не был найден", Zend_Validate_File_Upload::UNKNOWN => "Возникла неизвестная ошибка при загрузке файла '%value%'", Zend_Validate_File_Size::TOO_BIG => "Файл '%value%' имеет слишком большой размер", Zend_Validate_File_Size::TOO_SMALL => "Файл '%value%' слишком маленького размера", Zend_Validate_File_Size::NOT_FOUND => "Файл '%value%' не найден", Zend_Validate_File_ImageSize::WIDTH_TOO_BIG => "Ширина загруженного файла '%value%' слишком большая", Zend_Validate_File_ImageSize::WIDTH_TOO_SMALL => "Ширина загруженного файла '%value%' слишком маленькая", Zend_Validate_File_ImageSize::HEIGHT_TOO_BIG => "Высота загруженного файла '%value%' слишком большая", Zend_Validate_File_ImageSize::HEIGHT_TOO_SMALL => "Высота загруженного файла '%value%' слишком маленькая", Zend_Validate_File_ImageSize::NOT_DETECTED => "Размеры загруженного файла '%value%' определить невозможно", Zend_Validate_File_ImageSize::NOT_READABLE => "Рисунок '%value%' невозможно считать", Zend_Validate_File_FilesSize::TOO_BIG => "Размеры загруженных файлов в сумме имеют размер больше разрешенного", Zend_Validate_File_FilesSize::TOO_SMALL => "Размеры загруженных файлов в сумме имеют слишком маленький объем", Zend_Validate_File_FilesSize::NOT_READABLE => "Один или несколько файлов неудается считать", Zend_Validate_File_Count::TOO_MUCH => "Слишк������м много файлов загружено, разрешено только '%value%'", Zend_Validate_File_Count::TOO_LESS => "Слишком мало файлов загружено, минимальное допустимое число файлов '%value%'", Zend_Validate_File_Extension::FALSE_EXTENSION => "Загруженый файл '%value%' имеет неразрешенное расширение", Zend_Validate_File_Extension::NOT_FOUND => "Файл '%value%' не найден" );
$form = new Zend_Form; $form->setMethod(Fooup_Form::METHOD_POST)->setAttrib('enctype','multipart/form-data'); $form->setTranslator(new Zend_Translate_Adapter_Array($data)); $image = $form->createElement( 'image', 'image', array( 'label'=>'Ваш текущий логотип: ' ) ); $logo = $form->createElement( 'file', 'logo', array( 'required'=>true, 'label'=>'Загрузить новый логотип: ' ) ); $logo->addValidator('Count', false, array(1))->addValidator('Size', false, array(20480))->addValidator('Extension', false, array('jpg')); $logo->getTransferAdapter()->setTranslator($form->getTranslator()); $submit = $form->createElement( 'submit', 'submit', array( 'required'=>true, 'label'=>'Сохранить' )); $form->addElements(array($image,$logo,$submit));
And now error messages outputs into English language, but not in Russian as other form elements.
I'm sorry, it is my mistake. I HAVE CORRECTED MY CODE......
P.S. Why I can't write a comments?
Comments
Posted by Thomas Weidner (thomas) on 2008-11-28T06:44:01.000+0000
As with all elements you have to use "setTranslator". Otherwise the validator messages will not be translated.
Posted by Thomas Weidner (thomas) on 2008-11-28T08:55:52.000+0000
According to manual setTranslator has to be used. Unittests show no problem.
Feel free to give us code for reproduction.
Posted by Thomas Weidner (thomas) on 2008-12-01T10:07:44.000+0000
It's impossible for your code to work. setTranslator is not assigned to the form and not to the validators.