I have a field county:
$county = new Select('county');
$county->setAttribute('id', 'county');
$county->setAttribute('class', 'stored');
$county->setAttribute('title', _('web.form.selfService.register.county.title'));
$county->setAttribute('required', 'required');
$county->setEmptyOption(_('web.form.selfService.register.county.emptyOption'));
$county->setValueOptions($this->getDomainValues(Domain::COUNTY));
$county->setLabel(_('web.form.selfService.register.county.label'));
$this->add($county);
When the county field is left empty and form is submitted the output is the source text: web.form.selfService.register.county.title
Also I have many text fields in the form and their titles are translated fine.
Example:
$firstName = new Text('firstName');
$firstName->setAttribute('id', 'firstName');
$firstName->setAttribute('class', 'stored');
$firstName->setAttribute('placeholder', _('web.form.selfService.register.firstName.placeholder'));
$firstName->setAttribute('title', _('web.form.selfService.register.firstName.title'));
$firstName->setAttribute('required', 'required');
$firstName->setLabel(_('web.form.selfService.register.firstName.label'));
$this->add($firstName);
and when first name field is left empty and the form is submitted the output will be:
Please insert first name