2013-04-25 51 views
0

我在codeigniter中開發了網站,現在我希望它是多語言的。如何更改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

您的控制器被稱爲LangSwitch,但在您的網址中,您生成site_url(...)中的「LangSwitch er」。如果你沒有爲此設置路線,那麼它可能是一個錯字。

此外,if($site_lang)條件在LanguageLoader中看起來不正確。也許你想if ($site_lang == "dari")elseif s到其他支持的語言或switch()

+0

你是對的(我輸入的問題單詞錯誤)。我遵循上面的解決方案,但它說該文件沒有找到。我猜文件放置是一個問題。我已經將我的LanguageLoader.php和LangSwitch.php放入application/hooks /文件夾中。 – 2013-04-25 13:02:01

+0

控制器('LangSwitch')應該放在'application/controllers /'文件夾下。降低文件名不應該傷害太多。 – complex857 2013-04-25 13:11:58

+0

那實際上工作的人。謝謝您的幫助。還有一件事。是否有可能在同一頁面上(點擊其他語言按鈕之後)? – 2013-04-25 13:32:48