|
|
@@ -53,6 +53,8 @@ class Zend_Application_Resource_Translate extends Zend_Application_Resource_Reso
|
|
|
* 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()
|
|
|
{
|
|
|
@@ -67,17 +69,30 @@ class Zend_Application_Resource_Translate extends Zend_Application_Resource_Reso
|
|
|
$locale = isset($options['locale']) ? $options['locale'] : null;
|
|
|
$translateOptions = isset($options['options']) ? $options['options'] : array();
|
|
|
|
|
|
- $this->_translate = new Zend_Translate(
|
|
|
- $adapter, $options['data'], $locale, $translateOptions
|
|
|
- );
|
|
|
-
|
|
|
$key = (isset($options['registry_key']) && !is_numeric($options['registry_key']))
|
|
|
? $options['registry_key']
|
|
|
: self::DEFAULT_REGISTRY_KEY;
|
|
|
|
|
|
- Zend_Registry::set($key, $this->_translate);
|
|
|
+ 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['data'], $locale, $options);
|
|
|
+ $this->_translate = $translate;
|
|
|
+ } else {
|
|
|
+ $this->_translate = new Zend_Translate(
|
|
|
+ $adapter, $options['data'], $locale, $translateOptions
|
|
|
+ );
|
|
|
+
|
|
|
+ Zend_Registry::set($key, $this->_translate);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return $this->_translate;
|
|
|
}
|
|
|
-}
|
|
|
+}
|