С Zend Framework это легко to log strings that haven't got a translation.Переводимые строки при использовании Zend_Translate
Мой вопрос: как вы регистрируете строки, которые имеют перевод?
Спасибо!
С Zend Framework это легко to log strings that haven't got a translation.Переводимые строки при использовании Zend_Translate
Мой вопрос: как вы регистрируете строки, которые имеют перевод?
Спасибо!
Нет возможности записывать вызовы translate() в Zend_Translate, но вы можете создать своего собственного помощника, который будет проксифицировать все вызовы к оригинальному помощнику translate() и использовать его для ваших нужд.
Вот несколько примеров из вспомогательного метода:
/**
* 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);
}
и использовать его как:
echo $this->t_('message-id', $param1, $param2);
вместо
echo $this->translate('message-id', $param1, $param2);
Затем вы можете добавить любые пользовательские функциональные возможности этого метода для регистрации необходимой информации.
Это решение не очень быстро, но позволяет сделать трюк.
Я создал этот метод при попытке обойти эту проблему:
Вы, возможно, потребуются расширить класс, используемый для перевода, вызовите 'parent' метод, а затем войти ваш успешный перевод. –