0

Zend_Form で翻訳が機能しない理由がわかりません。選択のオプションを翻訳できるようにしたいと思います。今のところ、私は次のようなものを持っています:

私のフォームクラス:

(...)

$this->translate = Zend_Registry::get('translate');
Zend_Form::setDefaultTranslator( Zend_Registry::get('translate') );

(...)
     $select = new Zend_Form_Element_Select('select');
     // $select->addMultiOption('0', $this->translate('Aktywny'));
     $select->addMultiOption('0', $this->translate->_('Aktywny'));
     $select->addMultiOption('1', 'Nieaktywny');

私のブートストラップファイルには、次のようなものがあります。

    protected function _initTranslate()
{
    Zend_Loader::loadClass('Zend_Translate');
    Zend_Loader::loadClass('Zend_Registry');

    $translate = new Zend_Translate('gettext', APPLICATION_PATH.'/languages',
                                    'browser',
                                    array('scan' => Zend_Translate::LOCALE_FILENAME));

            //changing language and setting it to session if changed                
    $session = new Zend_Session_Namespace('jezyk');
    if(isset($session->language)) {
        $translate->setLocale($session->language);
    } else
        $translate->setLocale('pl');


    $registry = Zend_Registry::getInstance();
    $registry->set('Zend_Translate', $translate);   

}

そして、私がそれを呼び出すコントローラー、phtmlファイル、およびプラグインで正常に動作します

$this->translate('string to translate');

そしてプラグインで

$this->view->translate('string to translate');

しかし、それらの方法は形では機能しません。例外がスローされます:

警告: フォームによって例外がキャッチされました: キー 'translate' のエントリが登録されていませんスタック トレース: #0

4

1 に答える 1

0

to make it working as i wrote in comment just have to change line:

$this->translate = Zend_Registry::get('translate');

for

$this->translate = Zend_Registry::get('Zend_Translate');

cause i didn't saw that i'm getting wrong translate from registry. It should be Zend_Translate like in Bootstrap file, not translate as i did.

And this is solution for my problems with translate and now i can make translations in form files :)

于 2011-11-23T11:55:38.593 に答える