CodeIgniter - 全局加载语言(不是按文件而是按文件夹)
CodeIgniter - Load language globally (not by file but by folder)
现在:
在配置文件中您可以设置默认语言:
$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');
我已经在本地进行了测试,您似乎可以使用 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
}
现在:
在配置文件中您可以设置默认语言:
$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');
我已经在本地进行了测试,您似乎可以使用 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
}