I have created an abstract form class called `AbstractApplicationForm`. I want the service locator to be injected into it through the `Zend\ServiceManager\ServiceLocatorAwareInterface` to have access to the translator:

```php
namespace Application\Form;

use Zend\Form\Form;
use Zend\ServiceManager\ServiceLocatorAwareInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

abstract class AbstractApplicationForm 
    extends Form 
    implements ServiceLocatorAwareInterface
{
    protected $serviceLocator;
    protected $translator;

    public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
    {
        $this->serviceLocator = $serviceLocator;
    }

    public function getServiceLocator()
    {
        return $this->serviceLocator;
    }       

    public function getTranslator()
    {
        if (!$this->translator) {
            $this->translator = $this->getServiceLocator()->get('translator');
        }

        return $this->translator;
    }
}

```

My application forms extend this class like following:

```php
namespace Trade\Form;

use Zend\Captcha;
use Zend\Captcha\Image;
use Zend\Form\Element;
use Application\Form\AbstractApplicationForm;

class MemberForm extends AbstractApplicationForm
{
    public function init()
    {
        $this->setAttribute('method', 'post');

        // Add the elements to the form
        $id = new Element\Hidden('id');
        $first_name = new Element\Text('first_name');
        $first_name->setLabel($this->getTranslator('First Name'))

```

In this way, I can use getTranslator to translate labels.

So far so good. In my controller action, I create the form like this:

```php
public function joinAction()
{
    // Create and initialize the member form for join
    $formManager = $this->serviceLocator->get('FormElementManager');
    $form        = $formManager->get('Trade\Form\MemberForm');

```

the result is a ServiceManager exception:

> 
> Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for translator
> 
> 
> 

I don't have anything else defined in `Module.php` or `module.config.php` and I don't think I need to. I have the translator defined in `module.config.php` like this:

```php
'translator' => array(
    'locale' => 'en_US',
    'translation_patterns' => array(
        array(
            'type'     => 'gettext',
            'base_dir' => __DIR__ . '/../language',
            'pattern'  => '%s.mo',
        ),
    ),

```

Which works fine when I get it in the controller:

```php
$sm               = $this->getServiceLocator();
$this->translator = $sm->get('translator');

```

So the translator config is actually correct, but I am unable to retrieve it in my form.
Anybody knows what I'm doing wrong?