diff -r 5b37998e522e -r 162c1de6545a web/lib/Zend/Application/Resource/Translate.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/Zend/Application/Resource/Translate.php Fri Mar 11 15:05:35 2011 +0100 @@ -0,0 +1,134 @@ +getTranslate(); + } + + /** + * Retrieve translate object + * + * @return Zend_Translate + * @throws Zend_Application_Resource_Exception if registry key was used + * already but is no instance of Zend_Translate + */ + public function getTranslate() + { + if (null === $this->_translate) { + $options = $this->getOptions(); + + if (!isset($options['content']) && !isset($options['data'])) { + require_once 'Zend/Application/Resource/Exception.php'; + throw new Zend_Application_Resource_Exception('No translation source data provided.'); + } else if (array_key_exists('content', $options) && array_key_exists('data', $options)) { + require_once 'Zend/Application/Resource/Exception.php'; + throw new Zend_Application_Resource_Exception( + 'Conflict on translation source data: choose only one key between content and data.' + ); + } + + if (empty($options['adapter'])) { + $options['adapter'] = Zend_Translate::AN_ARRAY; + } + + if (!empty($options['data'])) { + $options['content'] = $options['data']; + unset($options['data']); + } + + if (isset($options['options'])) { + foreach($options['options'] as $key => $value) { + $options[$key] = $value; + } + } + + if (!empty($options['cache']) && is_string($options['cache'])) { + $bootstrap = $this->getBootstrap(); + if ($bootstrap instanceof Zend_Application_Bootstrap_ResourceBootstrapper && + $bootstrap->hasPluginResource('CacheManager') + ) { + $cacheManager = $bootstrap->bootstrap('CacheManager') + ->getResource('CacheManager'); + if (null !== $cacheManager && + $cacheManager->hasCache($options['cache']) + ) { + $options['cache'] = $cacheManager->getCache($options['cache']); + } + } + } + + $key = (isset($options['registry_key']) && !is_numeric($options['registry_key'])) + ? $options['registry_key'] + : self::DEFAULT_REGISTRY_KEY; + unset($options['registry_key']); + + if(Zend_Registry::isRegistered($key)) { + $translate = Zend_Registry::get($key); + if(!$translate instanceof Zend_Translate) { + require_once 'Zend/Application/Resource/Exception.php'; + throw new Zend_Application_Resource_Exception($key + . ' already registered in registry but is ' + . 'no instance of Zend_Translate'); + } + + $translate->addTranslation($options); + $this->_translate = $translate; + } else { + $this->_translate = new Zend_Translate($options); + Zend_Registry::set($key, $this->_translate); + } + } + + return $this->_translate; + } +}