CodeIgniter - 全局加载语言(不是按文件而是按文件夹加载)

时间:2015-11-16 16:07:12

标签: codeigniter multilingual

立即

在配置文件中,您可以设置默认语言:

$config['language'] = 'german';

现在,每个加载的语言文件都从“german”文件夹

加载
$this->lang->load('custom_messages');
echo $this->lang->line('hello');          //prints "hallo"

通过

在本地更改语言很容易
$this->lang->load('custom_messages', 'english');
echo $this->lang->line('hello');          //prints "hello"

的愿望:

但我想改变语言系统范围(登录时的语言选择),就像配置文件一样。因此,我不必逐个使用正确的语言属性加载每个_lang-File。

伪代码(配置语言 - >德语)

$this->lang->set('english');
$this->lang->load('custom_messages');
echo $this->lang->line('hello');          //should print "hello"

没有任何文件记录(在我看来常见的)用例。

这不起作用:

$this->config->set_item('language', 'english');

1 个答案:

答案 0 :(得分:0)

我已经在本地对此进行了测试,看来你可以使用set_item更改语言,但在加载语言文件之前你必须这样做。

您可以在构造函数中执行此操作,在会话中保存当前语言名称,然后在构造函数

中设置它
public function __construct () {
    parent::__construct();
    $this->config->set_item('language', $this->session->userdata('current_language'));  
}

这是我的测试控制器:

public function index()
    {
        var_dump($this->config->item('language')); // english
        $this->config->set_item('language', 'german');
        var_dump($this->config->item('language')); // german
        $this->lang->load('test');
        var_dump($this->lang->line('something')); // german translated line
    }