Avec Zend Framework, c'est facile to log strings that haven't got a translation.Enregistrer les chaînes traduites lors de l'utilisation de Zend_Translate
Ma question: comment consignez-vous les chaînes qui ont une traduction?
Merci!
Avec Zend Framework, c'est facile to log strings that haven't got a translation.Enregistrer les chaînes traduites lors de l'utilisation de Zend_Translate
Ma question: comment consignez-vous les chaînes qui ont une traduction?
Merci!
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:
Vous devrez peut-être étendre la classe utilisée pour traduire, appeler la méthode 'parent' puis connectez votre traduction réussie. –