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!