2010-09-15 25 views

Répondre

0

Il n'est pas possible de consigner les appels translate() dans Zend_Translate mais vous pouvez créer votre propre assistant qui va rediriger tous les appels vers l'assistant original translate() et l'utiliser selon vos besoins.

Voici quelques exemples de méthode d'assistance:

/** 
* Translates provided message Id 
* 
* You can give multiple params or an array of params. 
* If you want to output another locale just set it as last single parameter 
* Example 1: translate('%1\$s + %2\$s', $value1, $value2, $locale); 
* Example 2: translate('%1\$s + %2\$s', array($value1, $value2), $locale); 
* 
* @param string $messageid Id of the message to be translated 
* @return string Translated message 
*/ 
public function t_($messageid = null) 
{ 
    /** 
    * Process the arguments 
    */ 
    $options = func_get_args(); 

    array_shift($options); 

    $count = count($options); 
    $locale = null; 
    if ($count > 0) { 
     if (Zend_Locale::isLocale($options[($count - 1)], null, false) !== false) { 
      $locale = array_pop($options); 
     } 
    } 

    if ((count($options) === 1) and (is_array($options[0]) === true)) { 
     $options = $options[0]; 
    } 

/** 
* Get Zend_Translate_Adapter 
*/ 
    $translator = $this->translate()  // get Zend_View_Helper_Translate 
       ->getTranslator(); // Get Zend_Translate_Adapter 

    /** 
    * Proxify the call to Zend_Translate_Adapter 
    */ 
    $message = $translator->translate($messageid, $locale); 

    /** 
    * If no any options provided then just return message 
    */ 
    if ($count === 0) { 
     return $message; 
    } 

    /** 
    * Apply options in case we have them 
    */ 
    return vsprintf($message, $options); 
} 

et l'utiliser comme:

echo $this->t_('message-id', $param1, $param2); 

au lieu de

echo $this->translate('message-id', $param1, $param2); 

Ensuite, vous pouvez ajouter une fonctionnalité personnalisée à cette méthode pour enregistrer les informations dont vous avez besoin.

Cette solution n'est pas très rapide mais vous permet de faire l'affaire.

J'ai créé cette méthode tout en essayant de contourner ce problème:

http://framework.zend.com/issues/browse/ZF-5547