setAdapter($adapter, $data, $locale, $options); } /** * Sets a new adapter * * @param string $adapter Adapter to use * @param string|array $data Translation data * @param string|Zend_Locale $locale OPTIONAL locale to use * @param array $options OPTIONAL Options to use * @throws Zend_Translate_Exception */ public function setAdapter($adapter, $data, $locale = null, array $options = array()) { switch (strtolower($adapter)) { case 'array': $adapter = 'Zend_Translate_Adapter_Array'; break; case 'csv': $adapter = 'Zend_Translate_Adapter_Csv'; break; case 'gettext': $adapter = 'Zend_Translate_Adapter_Gettext'; break; case 'ini': $adapter = 'Zend_Translate_Adapter_Ini'; break; case 'qt': $adapter = 'Zend_Translate_Adapter_Qt'; break; case 'tbx': $adapter = 'Zend_Translate_Adapter_Tbx'; break; case 'tmx': $adapter = 'Zend_Translate_Adapter_Tmx'; break; case 'xliff': $adapter = 'Zend_Translate_Adapter_Xliff'; break; case 'xmltm': $adapter = 'Zend_Translate_Adapter_XmlTm'; break; } Zend_Loader::loadClass($adapter); if (self::$_cache !== null) { call_user_func(array($adapter, 'setCache'), self::$_cache); } $this->_adapter = new $adapter($data, $locale, $options); if (!$this->_adapter instanceof Zend_Translate_Adapter) { require_once 'Zend/Translate/Exception.php'; throw new Zend_Translate_Exception("Adapter " . $adapter . " does not extend Zend_Translate_Adapter'"); } } /** * Returns the adapters name and it's options * * @return Zend_Translate_Adapter */ public function getAdapter() { return $this->_adapter; } /** * Sets a cache for all instances of Zend_Translate * * @param Zend_Cache_Core $cache Cache to store to * @return void */ public static function setCache(Zend_Cache_Core $cache) { self::$_cache = $cache; } /** * Returns the set cache * * @return Zend_Cache_Core The set cache */ public static function getCache() { return self::$_cache; } /** * Calls all methods from the adapter */ public function __call($method, array $options) { if (method_exists($this->_adapter, $method)) { return call_user_func_array(array($this->_adapter, $method), $options); } require_once 'Zend/Translate/Exception.php'; throw new Zend_Translate_Exception("Unknown method '" . $method . "' called!"); } }