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.

-~----------~----~----~----~------~----~------~--~---

Responder a