我需要语言出现在多语言网站的网址中。这是我的代码:
public function changeLang($lang_code){
$this->session->set_userdata('language',$lang_code);
redirect($_SERVER['HTTP_REFERER']."".$this->language);
}
当我这样写时,另一种语言会出现在网址中。例如,无论我选择什么语言,它都会提供英语http://localhost/new/en。或者它增加http://localhost/new/enen。提前谢谢。
答案 0 :(得分:0)
据我所知,您希望制作多语言应用并通过网址识别语言,不是吗?
如果是,我建议您在应用程序/核心
中创建一个控制器class MY_Controller extends CI_Controller{
public function redirect( $language = NULL ){
$this->_set_language($language);
$uri = array(
'direcotry' => $this->_get_directory(),
'class' => $this->_get_class(),
'method' => $this->_get_method(),
'language' => $this->get_language()
);
return $uri;
}
public function get_language(){
$this->language = ( empty($this->session->userdata('language'))) ? substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) : $this->session->userdata('language');
return $this->language;
}
private function _set_language( $language ){
$this->session->set_userdata('language', $language);
$this->_set_lang_language();
}
private function _set_lang_language( $language = '' ){
switch($language){
case 'en':
$new = 'english';
break;
case 'es':
$new = 'spanish';
break;
default:
$new = 'english';
break;
}
$this->lang->load('calendar', $new);
$this->lang->load('date', $new);
$this->lang->load('db', $new);
$this->lang->load('email', $new);
$this->lang->load('form_validation', $new);
$this->lang->load('ftp', $new);
$this->lang->load('imglib', $new);
$this->lang->load('number', $new);
$this->lang->load('profiler', $new);
$this->lang->load('unit_test', $new);
$this->lang->load('upload', $new);
}
}
您的标题中会有一个选定的语言,如果您使用特定语言进行点击,则会调用uri主页/更改/ {$ language} 你的普通控制器
class HomePage extends MY_Controller{
public function change ( $language = '', $uri = NULL ){
$this->redirect($language);
redirect($uri, 'refresh');
}
}
答案 1 :(得分:0)
我知道你有一个像
这样的网址class Controller extends CI_Controller{
function change_language( $lang = 'english'){
$new = $this->session->set_userdata('language', $lang);
$this->lang->load('calendar', $new);
$this->lang->load('date', $new);
$this->lang->load('db', $new);
$this->lang->load('email', $new);
$this->lang->load('form_validation', $new);
$this->lang->load('ftp', $new);
$this->lang->load('imglib', $new);
$this->lang->load('number', $new);
$this->lang->load('profiler', $new);
$this->lang->load('unit_test', $new);
$this->lang->load('upload', $new);
redirect(base_url, 'refresh');
}
}
Controller.php这样
collections.Counter
使用此功能可以在会话中保存新语言,并通过URL阻止错误。
我希望这可以帮到你