Codeigniter中的多语言网站

时间:2010-07-20 11:12:11

标签: url codeigniter multilingual

我正在Codeigniter开始一个新的网站项目。我需要这个网站是多语言的,英语将成为默认语言。 我知道codeigniter中的语言类是如何工作的,我已经在使用它了。

我担心的是我需要以所选语言显示网址。我将用一个例子来解释自己:

当选择英语语言时,我有以下网址:      www.domain.com/cars/list_cars 的 其中汽车是控制器, list_cars 是负责调用相应视图的方法。

选择西班牙语语言时,我希望将网址显示为      www.domain.com/coches/mostrar_coches

实现这一目标的最佳方式是什么?我能想到的唯一方法是改变 routes.php ,例如:     

$route['cars/list_cars'] = 'coches/mostrar_coches';

有没有更好/更简单的方法来实现这一目标?

谢谢!

3 个答案:

答案 0 :(得分:2)

我使用CodeIgniter和Url翻译了concebe.com。我的解决方案是将所有请求重定向到只有一个控制器,该控制器负责根据转换调用其他函数。见下文:

function dinamic($js,$page,$item=NULL,$id=NULL)
{

    switch ($page)
    {
        case $this->lang->line('products'):
            $page='products';
        break;
        case $this->lang->line('about_us'):
            $page='about_us';
        break;
        ...
    }

    //switch page
    switch ($page)
    {
        case 'contact_us':
            $this->template->render($js,$this->_contact_us($js));
            return;
        break;
    }

这不是一个聪明的解决方案也不会帮助你,因为更难,但我必须区分js调用,这是唯一的方法,我希望这有助于某人。

约束:当切换语言时,你丢失了页面,不管你在哪里。

答案 1 :(得分:0)

翻译您的控制器和方法名称是一件令人头痛的事情。您的搜索引擎优化的好处是如此之小,以至于确实不值得做,只要确保您有好的内容。

答案 2 :(得分:0)

我做了你的建议,使用routes.php作为你的本地化网址段。对我来说很好,但对于每个页面,你需要在路径文件中有一个新条目。