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
}