Yannis,

Here are the crucial fragments. As you can see, the use of three
letter and two letter language codes is confusing, more so because
catalan doesn't seem to have a xx_xx code.

I hope you can understand the following. I've included my version of
p28n.php because I think I might have made some changes to it.

In locale, the folder names for each language use th three letter
code, e.g. spa & cat

In config/routes.php:

//route to switch locale
Router::connect('/lang/*', array('controller' => 'p28n', 'action' =>
'change'));

//forgiving routes that allow users to change the lang of any page
Router::connect('/eng?/*', array(
    'controller' => "p28n",
    'action' => "shuntRequest",
    'lang' => 'en-gb'
));

Router::connect('/ca?/*', array(
    'controller' => "p28n",
    'action' => "shuntRequest",
    'lang' => 'cat'
));

Router::connect('/es?/*', array(
    'controller' => "p28n",
    'action' => "shuntRequest",
    'lang' => 'es_es'
));

In app_controller.php:

var $components = array('P28n');


In views/layouts/default.ctp:

<?php
$currLang = Configure::read('Config.language');
if ($currLang<>"ca" && $currLang<>"spa")
{
  $currLang = "ca";
  Configure::write('Config.language',$currLang);
}
?>

<li><?php echo ($currLang<>"ca") ? '<a href="'.router::url("/").'lang/
ca">Catal&agrave;</a>' : 'Catal&agrave;' ; ?></li>
<li><?php echo ($currLang<>"spa") ? '<a href="'.router::url("/").'lang/
spa">Castellano</a>' : 'Castellano' ; ?></li>


controllers/components/p28n.php:

<?php
class P28nComponent extends Object
{
    var $components = array('Session', 'Cookie');

    function startup()
    {
        if (!$this->Session->check('Config.language'))
        {
            $this->change(($this->Cookie->read('lang') ? $this->Cookie-
>read('lang') : 'cat'));
        }
    }

    function change($lang = null)
    {
        if (!empty($lang))
        {
            $this->Session->write('Config.language', $lang);
            $this->Cookie->write('lang', $lang, null, '+350 day');
        }
    }
}
?>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to 
cake-php+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to