Codeigniter:使用数据库和语言文件的多语言

时间:2014-04-15 05:48:20

标签: php mysql codeigniter

我正在将网站转换为多种语言。在这个转换自动化的过程中,我使用类似菜单,静态文本等语言文件。我正在考虑合并这种方法,以便根据语言从数据库中检索内容。

就像管理员为每种语言输入多个内容一样。我尝试了几种无法找到管理方式的方法......

这是我的代码。 ....

创建了一个钩子......

$hook['post_controller_constructor'] = array(
    'class' => 'LanguageLoader',
    'function' => 'initialize',
    'filename' => 'LanguageLoader.php',
    'filepath' => 'hooks'
);

并在hooks.php中

    class LanguageLoader
{
    function initialize() {
        $ci =& get_instance();
        $ci->load->helper('language');

        $site_lang = $ci->session->userdata('site_lang');

        if ($site_lang) {
            $ci->lang->load('topmenu',$ci->session->userdata('site_lang'));
        } else {
            $ci->lang->load('topmenu','english');
        }
    }
}

然后是控制器...

class Lang extends MX_Controller {
 public function __construct() {
        parent::__construct();
        $this->load->helper('url');
    }

    function change($language = "") {

        $language = ($language != "") ? $language : "english";
        $this->session->set_userdata('site_lang', $language);
        redirect(base_url());
    }

    function index() {        
        // get partials
      }

}

并简单地这样打电话......

<?php echo lang('sign_up')?>

2 个答案:

答案 0 :(得分:3)

有点晚,但Language Class Extended DB是一个非常好的解决方案。

答案 1 :(得分:0)

在构造函数控制器中使用

class Service extends CI_Controller {

    public function __construct() { 

        parent::__construct();
        header('Content-Type: application/json; charset=utf-8');   
    }

    public function func1....
    {
        //code 
    }
}