我已经在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>
它说“找不到请求的页面”。任何人都可以找到正在发生的事情吗?
答案 0 :(得分:0)
您的控制器名为LangSwitch
,但在您的网址中,您会在site_url(...)
中生成“LangSwitch er ”。如果你没有为此设置路线那么它可能是一个错字。
此外,if($site_lang)
条件在LanguageLoader
中显示错误。也许您希望if ($site_lang == "dari")
和elseif
支持其他受支持的语言或switch()