|
I don't believe that adding the form translator into the Zend_File_Transfer_Adapter_Abstract is the correct fix for this. It would seem that it would be a better fix to put this into the Zend_Form_Element_File area and setting it from there rather than adding additional complexity and coupling the File_Transfer_Adapter to the form. I cannot reproduce this bug in the trunk: require_once 'Zend/Translate.php';
$translate = new Zend_Translate('array', array('foo' => 'bar'), 'en');
Zend_Form::setDefaultTranslator($translate);
$form = new Zend_Form();
$element = new Zend_Form_Element_File('file');
$element->setLabel('foo');
$form->addElement($element);
$form->setView(new Zend_View());
$html = (string) $form;
Confirmed Mike's diagnosis – on trunk, this is working fine. Closing; re-open if you can provide reproduce code off of current trunk that shows labels not being translated. |
||||||||||||||||||||||||||||||||||||||||||||
It seems that there is no translator returned in the label decorator for file elements. The method called is Zend_Form_Element_File::getTranslator() which in the end is calling Zend_File_Transfer_Adapter_Abstract::getTranslator()
The code in Zend_File_Transfer_Adapter_Abstract does not return the default translator if there is not a specific one assigned. Replacing the code in Zend_File_Transfer_Adapter_Abstract::getTranslator() with the below (from Zend_Form_Element::getTranslator()) fixes the problem and make sure the default translators is returned.
if ($this->translatorIsDisabled()) { return null; }
if (null === $this->_translator) { require_once 'Zend/Form.php'; return Zend_Form::getDefaultTranslator(); }
return $this->_translator;