Hola
Os explico como está montado el tinglado, aunque creo que será complicado.
Para traducir contenido escribo lo siguiente en el view:
[..]
$this->translate('ejemplo1');
$this->translate('ejemplo2');
[..]
El plugin encargado de la traducción es el siguiente:
Código PHP:
class Application_Plugin_ControllerLanguage extends Zend_Controller_Plugin_Abstract {
public function routeShutdown(Zend_Controller_Request_Abstract $request) {
$locale = new Zend_Locale();
$options = array('scan' => Zend_Translate::LOCALE_FILENAME);
$translate = new Zend_Translate('gettext', APPLICATION_PATH . '/languages/', 'auto', $options);
$cookieData = $this->getRequest()->getCookie('idioma');
$requestParams = $this->getRequest()->getParams();
$language = (isset($requestParams['language'])) ? $requestParams['language'] : false;
if (!empty($cookieData) && $language == false) {
$language = $cookieData;
} else {
if ($language == false)
$language = 'ca';
setcookie('idioma', $language, time() + (60 * 60 * 24 * 30 * 12), '/', WEBSITE_DOMAIN);
}
if (!$translate->isAvailable($language)) {
throw new Zend_Controller_Action_Exception('This page dont exist', 404);
} else {
$locale->setLocale($language);
$translate->setLocale($locale);
setcookie('lang', $locale->getLanguage(), null, '/');
Zend_Registry::set('Zend_Locale', $locale);
Zend_Registry::set('Zend_Translate', $translate);
//Activamos la traducción para los formularios
$formTranslate = new Zend_Translate('array',
APPLICATION_PATH . '/languages/',
'auto',
array('scan' => Zend_Translate::LOCALE_DIRECTORY)
);
Zend_Form::setDefaultTranslator($formTranslate);
}
}
}
Además en el Bootstrap tengo:
$langRoute = new Zend_Controller_Router_Route_Hostname(
':language.dominio.com'
);
Si escribo
http://es.dominio.com el contenido se traduce al español y se pongo
http://ca.dominio.com el contenido se traduce al catalán. El contenido de las traducciones está almacenado en:
/application/languages/ca_ES/LC_MESSAGES/ca.mo
/application/languages/es_ES/LC_MESSAGES/es.mo
Para crear el breadcrumb seguí las instrucciones del enlace que comento en mi primer tema.
Supongo que debo añadir algún código en el archivo Application_Plugin_ControllerLanguage como hice para traducir los formularios, pero no se me ocurre qué.
Creo que no se me olvida nada más.