Index: library/Zend/Form/Element/Submit.php =================================================================== --- library/Zend/Form/Element/Submit.php (revision 20216) +++ library/Zend/Form/Element/Submit.php (working copy) @@ -75,10 +75,10 @@ if (null === $value) { $value = $this->getName(); - } - if (null !== ($translator = $this->getTranslator())) { - return $translator->translate($value); + if (null !== ($translator = $this->getTranslator())) { + return $translator->translate($value); + } } return $value; Index: tests/Zend/Form/Element/SubmitTest.php =================================================================== --- tests/Zend/Form/Element/SubmitTest.php (revision 20216) +++ tests/Zend/Form/Element/SubmitTest.php (working copy) @@ -160,6 +161,30 @@ $this->assertEquals($translations['Label'], $submit->getLabel()); } + public function testLabelWhichIsSetToNameIsTranslatedWhenTranslationAvailable() + { + require_once 'Zend/Translate.php'; + $translations = array('foo' => 'This is the Submit Label'); + $translate = new Zend_Translate('array', $translations); + $submit = new Zend_Form_Element_Submit('foo'); + $submit->setTranslator($translate); + $this->assertEquals($translations['foo'], $submit->getLabel()); + } + + /** + * @group ZF-8764 + */ + public function testLabelIsNotTranslatedTwice() + { + require_once 'Zend/Translate.php'; + $translations = array('firstLabel' => 'secondLabel', + 'secondLabel' => 'thirdLabel'); + $translate = new Zend_Translate('array', $translations); + $submit = new Zend_Form_Element_Submit('foo', 'firstLabel'); + $submit->setTranslator($translate); + $this->assertEquals($translations['firstLabel'], $submit->getLabel()); + } + public function testIsCheckedReturnsFalseWhenNoValuePresent() { $this->assertFalse($this->element->isChecked());