codeigniter lang-> load(ERROR)

时间:2017-01-25 09:46:47

标签: php codeigniter localization

我正在使用最新的codeigniter 3.1.3

有如何使用语言的说明 https://www.codeigniter.com/userguide3/libraries/language.html#handling-multiple-languages

$idiom = $this->session->get_userdata('language');
$this->lang->load('error_messages', $idiom);  --> gives ERROR (home_view line 14)
$oops = $this->lang->line('message_key'); 
echo $oops;

但如果我写了那行代码,我会得到以下错误:

  

遇到PHP错误

     

严重性:警告

     

消息:preg_match()期望参数2为字符串,给定数组

     

文件名:core / Lang.php

     

行号:109

     

回溯:

     

文件:... / application / views / home_view.php   行:14   功能:加载

     

文件:... / controllers / Home.php   行:14   功能:查看

     

文件:... / project / index.php   行:315   功能:require_once

如果我删除

$idiom = $this->session->get_userdata('language');
$this->lang->load('error_messages', $idiom);  --> ERROR (home_view 

并放入autoload.php

$autoload['language'] = array('error_messages');

一切都很好。

但我不想自动加载所有语言文件,因为我不知道用户是否需要所有语言文件。

任何人都可以提供帮助吗?

感谢

1 个答案:

答案 0 :(得分:0)

你可以这样实现。使用$this->session->userdata('item_name')访问会话变量。

$idiom = $this->session->userdata('language');
$this->lang->load('error_messages', $idiom);
$oops = $this->lang->line('message_key'); 
echo $oops;

$this->config->set_item('language', $idiom );//dynamically set language
$this->lang->load('error_messages');//load lang file

$oops = $this->lang->line('message_key'); 
echo $oops;

希望它对你有所帮助。

有关详情,请参阅此处https://codeigniter.com/userguide3/libraries/sessions.html