Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/08/2010, 12:27
Avatar de DooBie
DooBie
 
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 20 años, 2 meses
Puntos: 71
Problema con Zend_Translate, Bootstrap y $this

Hola que tal, os cuento un caso que no se resolver.

Estoy iniciándome con Zend_framework, pero no consigo poder usar el "translate" desde cualquier punto de la aplicación (controladores, db_table, etc...)

Ahora mismo tengo esto en el Bootstrap
Código PHP:
  protected function _initLang(){
    
//Traduccion
    
$translate = new Zend_Translate('array'APPLICATION_PATH DS 'resources' DS 'languages' DS 'es' DS'es');
    
$registry Zend_Registry::getInstance();
    
$registry->set('Zend_Translate'$translate);
  } 
Pero si, por ejemplo, en una clase Db_Table, hago esto:
Código PHP:
    public function getCategory($id)
    {
      
$row $this->fetchRow('id_category = '. (int)$id);
      if (!
$row) {
        throw new 
Exception($this->translate("Categoria no encontrada"));
      }
      return 
$row->toArray();
    } 
Al saltar la excepción, me sale el siguiente error:
Código:
Fatal error: Call to undefined method Application_Model_DbTable_Categories::translate() in /application/models/DbTable/Categories.php on line 12
(Sí, la línea 12 de ese fichero es la del throw)

En este momento, para usar las traducciones desde los controladores, lo tengo puesto así (creo que no es lo más correcto):
Código PHP:
    protected $lang;

    public function 
init()
    {
        
/* Initialize action controller here */
      
$this->lang Zend_Registry::get('Zend_Translate');
    } 
Y lo uso así (por poner un ejemplo):
Código PHP:
$this->view->msg sprintf($this->lang->translate("Categoria actualizada"), $datos['name_category']); 
Cómo puedo hacer para usar en cualquier controlador, formulario, db_table el traductor de este modo:
Código PHP:
$this->_("Traduce esto"); 
Un saludo compañeros!