如何在codeigniter中更改网站语言

时间:2013-04-25 12:47:26

标签: php codeigniter multilingual

我已经在codeigniter开发了网站,现在我希望它是多语言的。

我已经学习了使用钩子的教程。这是我的hook.php

$hook['post_controller_constructor']=array(
                                   'class'=>'LanguageLoader',
                                   'function'=>'initialize',
                                   'filename'=>'LanguageLoader.php',
                                   'filepath'=>'hooks'
                                   );

我创建了一个类并将其放在hooks文件夹中。

class LangSwitch extends CI_Controller
{
    public function __construct()
    {
        parent::construct();
        $this->load->helper('url');
    }

   function switchLanguage($language="")
   {
       $language=($language!="") ? $language:"english"; 
       $this->session->set_userdata('site_lang',$language);
       redirect(base_url());
   }
}

这是另一个文件,也放在钩子文件夹

class LanguageLoader
{
    function initialize()
    {
        $CI=&get_instance();
        $CI->load->helper('language');
        $site_lang=$CI->session->userdata('site_lang');
        if($site_lang)
        {
            $CI->lang->load('dari','dari');
        }
        else
        {
            $CI->lang->load('english','english');
        }
    }
}

这是我的视图文件。

<a href='<?=site_url('LangSwitcher/switchLanguage/english')?>'>English</a>

它说“找不到请求的页面”。任何人都可以找到正在发生的事情吗?

1 个答案:

答案 0 :(得分:0)

您的控制器名为LangSwitch,但在您的网址中,您会在site_url(...)中生成“LangSwitch er ”。如果你没有为此设置路线那么它可能是一个错字。

此外,if($site_lang)条件在LanguageLoader中显示错误。也许您希望if ($site_lang == "dari")elseif支持其他受支持的语言或switch()