Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CodeIgniter-全局加载语言(不是按文件而是按文件夹)_Codeigniter_Multilingual - Fatal编程技术网

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

CodeIgniter-全局加载语言(不是按文件而是按文件夹),codeigniter,multilingual,Codeigniter,Multilingual,现在: 在配置文件中,可以设置默认语言: $config['language'] = 'german'; 每个加载的语言文件现在都从“德语”文件夹加载 $this->lang->load('custom_messages'); echo $this->lang->line('hello'); //prints "hallo" 在本地通过 $this->lang->load('custom_messages', 'english'); ec

现在:

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

$config['language'] = '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->config->set_item('language', 'english');

我已经在本地对此进行了测试,您似乎可以使用set_项更改语言,但您必须在加载语言文件之前执行此操作

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

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
    }

在加载语言文件之前更改它应该可以工作;您在加载翻译文件之前或之后是否尝试调用set_item?很好的提示,但我在加载之前调用set_item。当然,我添加了log_messages()证明了这一点。还有其他想法吗?当然,作为一种“不那么优雅”的解决方法,我可以将所选语言保存在$\u会话中,并始终调用
$this->lang->load(file,SESSION->lang)
但是由于配置能够将整个语言设置为默认语言,我会发现这更复杂。那么,您的意思是set_项不允许您设置语言吗?
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
    }