url codeigniter for multilanguage website

时间:2016-03-30 14:55:32

标签: php codeigniter

我需要语言出现在多语言网站的网址中。这是我的代码:

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。提前谢谢。

2 个答案:

答案 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阻止错误。

我希望这可以帮到你