ZF-6647: Labels not translated


the getLabel() method of Zend_Form_Element does not perform translation as described in the doc (…)


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;

added patch for this issue

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');

        $form = new Zend_Form();
        $element = new Zend_Form_Element_File('file');
        $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.