setTranslator($translate); } } /** * Translate a message * 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|Zend_View_Helper_Translate Translated message */ public function translate($messageid = null) { if ($messageid === null) { return $this; } $translate = $this->getTranslator(); $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]; } if ($translate !== null) { $messageid = $translate->translate($messageid, $locale); } if (count($options) === 0) { return $messageid; } return vsprintf($messageid, $options); } /** * Sets a translation Adapter for translation * * @param Zend_Translate|Zend_Translate_Adapter $translate Instance of Zend_Translate * @throws Zend_View_Exception When no or a false instance was set * @return Zend_View_Helper_Translate */ public function setTranslator($translate) { if ($translate instanceof Zend_Translate_Adapter) { $this->_translator = $translate; } else if ($translate instanceof Zend_Translate) { $this->_translator = $translate->getAdapter(); } else { #require_once 'Zend/View/Exception.php'; $e = new Zend_View_Exception('You must set an instance of Zend_Translate or Zend_Translate_Adapter'); $e->setView($this->view); throw $e; } return $this; } /** * Retrieve translation object * * @return Zend_Translate_Adapter|null */ public function getTranslator() { if ($this->_translator === null) { #require_once 'Zend/Registry.php'; if (Zend_Registry::isRegistered('Zend_Translate')) { $this->setTranslator(Zend_Registry::get('Zend_Translate')); } } return $this->_translator; } /** * Set's an new locale for all further translations * * @param string|Zend_Locale $locale New locale to set * @throws Zend_View_Exception When no Zend_Translate instance was set * @return Zend_View_Helper_Translate */ public function setLocale($locale = null) { $translate = $this->getTranslator(); if ($translate === null) { #require_once 'Zend/View/Exception.php'; $e = new Zend_View_Exception('You must set an instance of Zend_Translate or Zend_Translate_Adapter'); $e->setView($this->view); throw $e; } $translate->setLocale($locale); return $this; } /** * Returns the set locale for translations * * @throws Zend_View_Exception When no Zend_Translate instance was set * @return string|Zend_Locale */ public function getLocale() { $translate = $this->getTranslator(); if ($translate === null) { #require_once 'Zend/View/Exception.php'; $e = new Zend_View_Exception('You must set an instance of Zend_Translate or Zend_Translate_Adapter'); $e->setView($this->view); throw $e; } return $translate->getLocale(); } }