上次我們寫到回傳缺少哪些參數,然而這次我們要加入語系部分,讓他判斷是哪個語系來回傳不同語言的內容。
首先我們先打開config/global.php
設定目前可用的語系:
// 語系設定
$config['lang'] = array(
'zh-tw', 'en-us'
);
下一步我們打開models/Mod_config.php
檔案加入判斷語系:
// 取得當前語系
function getLanguage() {
// 語系設定
$this->load->helper('cookie');
$lang = $this->input->get('lang');
if ($lang) {
// 設定
if (in_array($lang, $this->config->item('lang'))) {
$this->language = $lang;
$this->input->set_cookie('language', $lang, 86400);
} else {
$this->language = 'zh-tw';
$this->input->set_cookie('language', 'zh-tw', 86400);
}
} else {
// 正常
if ($this->input->cookie('language')) {
$this->language = $this->input->cookie('language');
} else {
$this->language = 'zh-tw';
}
}
return $this->language;
}
如此一來我們可以透過這個函式來判斷當前語系,如果沒有當下語系則直接使用預設值,未來可以帶入?lang=xxx
來切換語系,接著我們回到Unit.php
來修改原先的內容:
第一步我們先掛載語系,讓他辨別當前的語系,到最上方的__construct
加入內容:
public function __construct() {
parent::__construct();
// 語系設定
$this->language = $this->mod_config->getLanguage();
}
接著我們在修改下方的參數:
修改前
if ($data) {
// 正確
$json_arr = $this->mod_config->msgResponse((isset($json_arr))?$json_arr:array(), 'success', 'PROCESS_SUCCESS', 'zh-tw');
} else {
// 回報缺少的內容
$json_arr = $this->mod_config->msgResponse((isset($json_arr))?$json_arr:array(), 'error', 'MISSING_DATA', 'zh-tw');
$json_arr['requred'] = $this->getpost->report_required($requiredData, 'GET');
}
修改後
if ($data) {
// 正確
$json_arr = $this->mod_config->msgResponse((isset($json_arr))?$json_arr:array(), 'success', 'PROCESS_SUCCESS', $this->language);
} else {
// 回報缺少的內容
$json_arr = $this->mod_config->msgResponse((isset($json_arr))?$json_arr:array(), 'error', 'MISSING_DATA', $this->language);
$json_arr['requred'] = $this->getpost->report_required($requiredData, 'GET');
}
也就是把後方帶入zh-tw
替換成language
的參數,因為是全域變數所以要透過$this
來呼叫,接著我們在用網址去測試:http://ip-address/unit/test_getpost?product_id=P1231425621&product_name=灰熊印貓罐頭
接著我們多加個&lang=en-us
的參數:http://ip-address/unit/test_getpost?product_id=P1231425621&product_name=灰熊印貓罐頭&lang=en-us
他就會成功回傳英文,那我們試著把多餘的參數拿掉讓他錯誤看看:http://ip-address/unit/test_getpost?product_id=P1231425621
如此一來它就真正的修改了語系,除非再透過參數讓他變回中文,不然他就會以英文為主,這次我們就到這裡,明天我們再新增有關於網站的語系吧!
Next station ... CI內建語系