2012-11-22 53 views
0

嗨誰能告訴我如何編碼一個多語言網站的方法,不僅改變菜單以及文章的標題和內容。多語言codeigniter php,mysql的最佳途徑

基本上,我認爲每次我寫一篇文章時,我會分別將它寫入2種語言,然後將其插入到mysql中。當我在前端更改語言時,一切都將更改爲另一種語言,並保持該語言的狀態,直到我將其更改回

因此,任何人都可以向我展示最佳方法。請我需要提前

+0

我覺得你的做法是正確的。我有一些類似的網站。 – m4t1t0

+0

我通常對每種語言都有單獨的視圖,並根據URL字符串確定要加載哪個視圖以及從數據庫中提取哪些數據。 – Jeemusu

回答

0

內容,如:菜單,按鈕,郵件唐噸要到數據庫中。 使用CI和語言類來處理這些。

如果您有動態內容(如博客文章或新聞和文章),請將數據庫用於不同的語言。

控制器會是這樣的:

class Language extends CI_Controller{ 

    function Language(){ 
     parent::__construct(); 
    } 

    function change($language = null){ 
     $language = urldecode($language); 

     switch($language){ 

      case "English": 
       $this->session->set_userdata('lang_id', 2); 
       $this->session->set_userdata('lang_name', 'english'); 
       redirect($_SERVER['HTTP_REFERER'], 'refresh'); 

      break; 

      case "Deutsch": 
       $this->session->set_userdata('lang_id', 3); 
       $this->session->set_userdata('lang_name', 'deutsch'); 
       redirect($_SERVER['HTTP_REFERER'], 'refresh'); 

      break; 

      default: 
       $this->session->set_userdata('lang_id', 3); 
       $this->session->set_userdata('lang_name', 'deutsch'); 
       redirect($_SERVER['HTTP_REFERER'], 'refresh'); 

      break; 

     } 

    } 
} 

,並訪問某個網頁/分類的索引:

//LOAD LANGUAGE SETTINGS 
     $lang = $this->session->userdata('lang_name'); 

     if($lang != ''){ 
      //load default language folder 
      $this->lang->load('home'); 
      $this->lang->load('extra_menu'); 
      $this->lang->load('base_menu'); 
      $this->lang->load('breadcrumbs'); 

     }else{ 
      //load language file and folder 
      $this->lang->load('home', $this->session->userdata('lang_name')); 
      $this->lang->load('extra_menu', $this->session->userdata('lang_name')); 
      $this->lang->load('base_menu', $this->session->userdata('lang_name')); 
      $this->lang->load('breadcrumbs', $this->session->userdata('lang_name'));     
     }