使用CodeIgniter 為多語言網站創建動態語言文件
問題:
何時使用CodeIgniter 建立多語言線上網站時,使用者可能會遇到將資料從資料庫傳遞到語言檔案的挑戰。內建語言類別缺乏資料庫整合的本機支援。
解決方案:
資料庫佈局:
建立一個名為lang_token 的表,其中包含列來儲存語言相關資訊:
CREATE TABLE IF NOT EXISTS `lang_token` ( `id` int(11) NOT NULL AUTO_INCREMENT, `category` text NOT NULL, `description` text NOT NULL, `lang` text NOT NULL, `token` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
CodeIgniter 語言檔案結構:
英文或德語等子目錄應在application/language 目錄下建立。每種語言都應該儲存在自己的資料夾中。
動態建立語言檔案:
可以在控制器中建立自訂函數updatelangfile() 來產生語言動態檔:
function updatelangfile($my_lang){ $this->db->where('lang',$my_lang); $query=$this->db->get('lang_token'); $lang=array(); $langstr="<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /** * * Created: 2014-05-31 by Vickel * * Description: ".$my_lang." language file for general views * */"."\n\n\n"; foreach ($query->result() as $row){ //$lang['error_csrf'] = 'This form post did not pass our security checks.'; $langstr.= "$lang['".$row->category."_".$row->description."'] = \"$row->token\";"."\n"; } write_file('./application/language/'.$my_lang.'/general_lang.php', $langstr); }
用法:
每當資料庫發生變化時,可以呼叫此函數來更新對應的語言檔案:
$this->updatelangfile('english');
註解:
請記得在控制器的建構子中載入以下內容:
$this->load->helper('file'); $this->lang->load('general', 'english');
以上是如何在CodeIgniter中實現多語言網站的動態語言檔案建立?的詳細內容。更多資訊請關注PHP中文網其他相關文章!