有關於ci語系的切換
因客戶的需求,所以正在作一個根據網址不同來自動切換語系的功能類似於www.xxxx.com就自動切換英文版,www.xxxx.cn就自動切換中文版
折騰了好一段時間,最後作法是把英文網址及中文網址先記錄在數據庫裡
在進入網站的時候再把網址跟數據庫內的資料作比對,依據比對結果來載入語系檔
完成後卻有些問題,不管比對結果如何,在瀏覽器第一次進入網站時都會載入成config內的預設語系,要重新整理後才會轉成正確的語系
這有可能是什麼問題呢?
下面是我寫在libraries/MY_Controller檔裡的比對語法,跪求解決方法:dizzy:
$web = $this->db->query("SELECT * FROM config")->first_row('array');
$this->session->set_userdata('urlchs',$web['url_chs']);
$this->session->set_userdata('urleng',$web['url_eng']);
if ($web['url_chs'] == 'http://'.$_SERVER['HTTP_HOST'].'/')
{
$this->config->set_item('base_url',$web['url_chs']);
$this->config->set_item('language','_chs');
$this->session->set_userdata('lng','_chs');
}
elseif ($web['url_eng'] == 'http://'.$_SERVER['HTTP_HOST'].'/')
{
$this->config->set_item('base_url',$web['url_eng']);
$this->config->set_item('language','_eng');
$this->session->set_userdata('lng','_eng');
} 呃…沒有人能指點一下嗎:dizzy: 代码还是太少了,不太了解你接下来是如何做的 帮你顶一下吧。我是新手。
你的想法是把网址装在数据库里面,然后通过访问的域名来判断该执行哪一个语系。
个人觉得这个方法也是可以的。
不过你说在浏览器第一次进入的时候会载入成config中的预设语系,
那么你有没有想过去在config里面做判断呢? 这样会给服务器造成负担吧 目前功能運作上似乎是沒有問題,問題在於似乎沒辦法讓這段代碼在開啟網站的時候立即運作
原本也想過在config裡作判斷,但是config裡不知道如何調用database… 对 CI 做些扩展吧,你应该在 loader.php 里做文章!
或者用 hook 本帖最后由 sgeta 于 2011-4-6 14:57 编辑
試著把代碼移到hooks來跑,結果出現錯誤…
A PHP Error was encountered
Severity: Notice
Message: Undefined property: LangClass::$session
hooks的插入點我選擇post_controller_constructor
這樣是否表示這個插入點還沒有載入session的功能呢? 是的,挂钩点要选好,某些挂钩点是没有这些东西的。
$url = current_url();
$url = explode('.',$url);
if($url=='cn'){
$this->lang->load('language_file','chinese');
}else{
$this->lang->load('language_file','english');
}
这样可以麽?根据当前url的.com还是cn来加载语言文件
把他放在页面头里面
页:
[1]
2