多语言codeigniter php,mysql最好的方法

时间:2012-11-22 10:30:29

标签: codeigniter multilingual

您可以向我展示如何编写多语言网站的方法,不仅可以更改菜单以及文章的标题和内容。

基本上,我认为每次写一篇文章,我都会单独将它写成2种语言,然后将其插入到mysql中。当我改变前端的语言时,一切都会变成另一种语言并保持该语言直到我改回来

所以,任何人都会向我展示一个最好的方法。请我急需

提前致谢

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

内容如:菜单,按钮,消息不必转到数据库。 使用CI和语言类来处理这些。

如果您有动态内容,例如博客文章或新闻和文章,请将数据库用于不同语言。

控制器将是这样的:

    class Language extends CI_Controller{

    function Language(){
        parent::__construct();
    }

    function change($language = null){  
        $language = urldecode($language);

        switch($language){

            case "English":
                $this->session->set_userdata('lang_id', 2);
                $this->session->set_userdata('lang_name', 'english');
                redirect($_SERVER['HTTP_REFERER'], 'refresh');

            break;

            case "Deutsch":
                $this->session->set_userdata('lang_id', 3);
                $this->session->set_userdata('lang_name', 'deutsch');
                redirect($_SERVER['HTTP_REFERER'], 'refresh');

            break;

            default:
                $this->session->set_userdata('lang_id', 3);
                $this->session->set_userdata('lang_name', 'deutsch');
                redirect($_SERVER['HTTP_REFERER'], 'refresh');

            break;

        }

    }
}

转到页面/类的索引:

//LOAD LANGUAGE SETTINGS
        $lang = $this->session->userdata('lang_name');

        if($lang != ''){
            //load default language folder
            $this->lang->load('home');
            $this->lang->load('extra_menu');
            $this->lang->load('base_menu');
            $this->lang->load('breadcrumbs');

        }else{
            //load language file and folder
            $this->lang->load('home', $this->session->userdata('lang_name'));
            $this->lang->load('extra_menu', $this->session->userdata('lang_name'));
            $this->lang->load('base_menu', $this->session->userdata('lang_name'));
            $this->lang->load('breadcrumbs', $this->session->userdata('lang_name'));                
        }