Bueno esto servira como respuesta para algunas Personas que lo
necesiten.
Yo quiero almacenar la información original en mi language español
(default) en el modelo en este caso "Page" y tiene como tabla "pages·
y cuando use otro idioma busque esto en la tabla i18n que cake obtiene
automaticamente. Obviamente para hay que hacer uso de la localizacion
En el app_controller.php lo hice de esta manera, esto permite l10n
"Localizacion" pero no internacionalizacion
function beforeFilter()
{
$this->L10n = new L10n();
$languages = array('eng', 'spa');
$lang = $this->Session->check('lang') ? $this->Session-
>read('lang'):'spa';
if(isset($this->params['named']['lang']) && in_array($this-
>params['named']['lang'],$languages) ){
$lang = $this->params['named']['lang'];
$this->Session->write('lang',$lang);
}else{
$this->Session->write('lang',$lang);
}
$this->L10n->get($lang);
Configure::write('Config.language', $lang);
}
Para que pueda funcionar correctamente la localizacion es necesario un
archivo "locale/esp/LC_MESSAGES/default.po" en esa ruta donde se
realiza las traducciones de la sigueinte manera
msgid "content"
msgstr "Contenido"
"Mejor si codificas los archivos .po con UTF8"
para poder presentar lo haces asi
__('content')
y en caso de que este en español la localizacion te presentara
"Contenido".
tamiben puedes usar de esta forma
echo __('content', true);
Ahora te recomiento de que en archivo bootstrap.php
crees la constante
define('DEFAULT_LANGUAGE', 'spa');
Una ves ya hayas terminado la localización ahora debemos realizar la
internacionalización
Para esto he creado una tabla con el nombre pages y su modelo Page y
oviamente con su controlador Pages
En el modelo Page haz lo siguiente:
class Page extends AppModel
{
var $displayField = 'name';
var $actsAs = array();
function setLanguage()
{
$lang = Configure::read('Config.language');
if(DEFAULT_LANGUAGE!=$lang)
$this->actsAs = array('Translate' => array('content',
'name'));
$this->__construct(false, null, null);
}
}
Como puedes ver solo los campos (content, name) seran traducidos
Y para que puedas desplegar correctamente el contenido original que se
saca de la tabla pages y el traducido de la tabla i18n haces lo
siguiente
en tu controlador PagesController
public function index($page = null)
{
$this->Page->setLanguage();
if($page==null){
$text = $this->Page->findByUrl('Inicio');
}else{
$text = $this->Page->findByUrl($page);
}
$this->set('texto', $text);
}
Ya en tu vista manejas los datos como lo harias con cualquier otro
controlador.
--~--~---------~--~----~------------~-------~--~----~
Has recibido este mensaje porque estás suscrito a Grupo "CakePHP-es" de Grupos
de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a [email protected]
Para anular la suscripción a este grupo, envía un mensaje a [EMAIL PROTECTED]
Para obtener más opciones, visita este grupo en
http://groups.google.com/group/CakePHP-es?hl=es.
-~----------~----~----~----~------~----~------~--~---