ZF-6647: Labels not translated


the getLabel() method of Zend_Form_Element does not perform translation as described in the doc (http://framework.zend.com/manual/en/…)


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.