0

私は自分のプラグインの 1 つで翻訳パターンを定義し、それはビューで正常に動作しますが、他のプラグイン ウィッチにメニュー用の html を作成してもらい、それを現在のワールドの翻訳で埋める必要がありますが、使用する場合:

   public function preDispatch(Zend_Controller_Request_Abstract $request){
    .......
    $translate = Zend_Registry::get('Zend_Translate');
    $translate->_($Nrow['name']);
    .......

それは私に与えます:

メッセージ: キー 'Zend_Translate' のエントリが登録されていません

しかし、使用するprint_r($translate);と、翻訳ファイルの内容が表示されます。

そして、私がそれを使用すると、次のprint_r(get_class_methods($translate));ように返されます:

配列 ( [0] => __construct [1] => setAdapter [2] => getAdapter [3] => getCache [4] => setCache [5] => hasCache [6] => removeCache [7] => clearCache [8] => __call )

翻訳プラグインでこれらのコードを使用して登録を設定します。

Zend_Registry::set('Zend_Translate',$translate);

私は何をすべきか ?

4

2 に答える 2

0

それをブートストラップに配置します。

$translate = new Zend_Translate('YOURADAPTER', YOURLANG); 
Zend_Registry::set('Zend_Translate', $translate); 

これで、次の方法でこれにアクセスできるようになります。

$translations = Zend_Registry::get('Zend_Translate'); 
// or operate on it directly: 
$translation = Zend_Registry::get('Zend_Translate')->translate($string); 
于 2013-01-08T07:13:59.900 に答える
0

Zend_Registry を呼び出す前に preDispatch が実行されることを理解しているので、 Zend_Registry keys が必要な場合は、コードを Zend_Controller_Plugin_Abstract またはプラグイン クラスの postDispatch 関数に配置する必要があります。

これらへのコード変更と問題解決:

   public function preDispatch(Zend_Controller_Request_Abstract $request){
    .......
    $translate = Zend_Registry::get('Zend_Translate');
    $translate->_($Nrow['name']);
    .......

詳細については、次を参照してください。

http://devzone.zend.com/1224/front-controller-plugins-in-zend-framework/

于 2013-01-08T10:33:32.540 に答える