Php 翻译Zend表单标签

Php 翻译Zend表单标签,php,zend-framework,localization,translation,Php,Zend Framework,Localization,Translation,我无法在Zend中获得工作表单标签翻译。我仍然能够在视图中转换字符串 在module.config.php文件中,我有以下内容: 'service_manager' => array( 'factories' => array( 'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory', ), ), 'translator' => array( 'loca

我无法在Zend中获得工作表单标签翻译。我仍然能够在视图中转换字符串

在module.config.php文件中,我有以下内容:

'service_manager' => array(
    'factories' => array(
        'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
        ),
),
'translator' => array(
    'locale' => 'en_US',
        'translation_file_patterns' => array(
            array(
                'type' => 'gettext',
                'base_dir' => __DIR__ . '/../language',
                'pattern' => '%s.mo',
            ),
        ),
),
    public function indexAction() {

            $loc = $this->getServiceLocator();
            $translator = $loc->get('translator');
            $loc->get('ViewHelperManager')->get('translate')
                                          ->setTranslator($translator);
...
在Module.php文件中,我从数据库中询问用户lang,并将其设置为language var:

$langTableGateway = new \Zend\Db\TableGateway\TableGateway('users', $dbAdapter);
$this->select = new Select();
$this->select->from('users')
             ->where(array('id' => $userdata['user_id']));
$resultSet = $langTableGateway->selectWith($this->select);
$row = $resultSet->current();        
$user_lang = $row->language;
$e->getViewModel()->setVariable('user_lang', $user_lang);
在控制器中,我有以下几点:

'service_manager' => array(
    'factories' => array(
        'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
        ),
),
'translator' => array(
    'locale' => 'en_US',
        'translation_file_patterns' => array(
            array(
                'type' => 'gettext',
                'base_dir' => __DIR__ . '/../language',
                'pattern' => '%s.mo',
            ),
        ),
),
    public function indexAction() {

            $loc = $this->getServiceLocator();
            $translator = $loc->get('translator');
            $loc->get('ViewHelperManager')->get('translate')
                                          ->setTranslator($translator);
...
使用$this->translate'data'成功转换视图中的字符串

我需要如何更改我的表单文件以便标签也能被翻译?现在我有:

class ItemsForm extends Form {

    public $itemsTable;
    public $list;

    public function __construct($name = null) {

        // we want to ignore the name passed
        parent::__construct('items');


        $this->setAttribute('method', 'post')
                ->setAttribute('enctype', 'multipart/form-data');

        $this->add(array(
            'name' => 'id',
            'attributes' => array(
                'type' => 'hidden',
            ),
        ));

        $this->add(array(
            'name' => 'target',
            'attributes' => array(
                'type' => 'hidden',
            ),
        ));


        $this->add(array(
            'name' => 'title',
            'attributes' => array(
                'type' => 'text',
                'id' => 'title',
                'class' => 'span12',
            ),
            'options' => array(
                'label' => _('Item title'),
            ),
        ));
奇怪的是,如果我手动将module.config.php文件locale更改为'fi_-fi'格式,那么翻译就可以工作了。所以我认为问题在于在Module.php或控制器文件中设置用户语言不会影响表单