【发布时间】:2014-08-19 11:59:53
【问题描述】:
我正在使用 codeigniter。我需要将语言文件中的所有变量都获取到数组中。可以吗?
有没有如下方法可用?
$a = $this->load->language('editor');
print_r($a);
我试过$this->lang->language; 但是,这将返回加载的另一种语言文件的标签。
【问题讨论】:
标签: php arrays codeigniter
我正在使用 codeigniter。我需要将语言文件中的所有变量都获取到数组中。可以吗?
有没有如下方法可用?
$a = $this->load->language('editor');
print_r($a);
我试过$this->lang->language; 但是,这将返回加载的另一种语言文件的标签。
【问题讨论】:
标签: php arrays codeigniter
$CI = & get_instance();
$arr = $CI->lang->language;
或使用以下库
Class My_language {
var $language = array();
/**
* List of loaded language files
*
* @var array
*/
var $is_loaded = array();
function __construct() {
log_message('debug', "Language Class Initialized");
}
function load($langfile = '', $idiom = '', $return = FALSE, $add_suffix = TRUE, $alt_path = '') {
$langfile = str_replace('.php', '', $langfile);
if ($add_suffix == TRUE) {
$langfile = str_replace('_lang.', '', $langfile) . '_lang';
}
$langfile .= '.php';
if (in_array($langfile, $this->is_loaded, TRUE)) {
return;
}
$config = & get_config();
if ($idiom == '') {
$deft_lang = (!isset($config['language'])) ? 'english' : $config['language'];
$idiom = ($deft_lang == '') ? 'english' : $deft_lang;
}
// Determine where the language file is and load it
if ($alt_path != '' && file_exists($alt_path . 'language/' . $idiom . '/' . $langfile)) {
include($alt_path . 'language/' . $idiom . '/' . $langfile);
} else {
$found = FALSE;
foreach (get_instance()->load->get_package_paths(TRUE) as $package_path) {
if (file_exists($package_path . 'language/' . $idiom . '/' . $langfile)) {
include($package_path . 'language/' . $idiom . '/' . $langfile);
$found = TRUE;
break;
}
}
if ($found !== TRUE) {
show_error('Unable to load the requested language file: language/' . $idiom . '/' . $langfile);
}
}
if (!isset($lang)) {
log_message('error', 'Language file contains no data: language/' . $idiom . '/' . $langfile);
return;
}
if ($return == TRUE) {
return $lang;
}
$this->is_loaded[] = $langfile;
$this->language = array();
$this->language = $lang;
return $this->language;
unset($lang);
log_message('debug', 'Language file loaded: language/' . $idiom . '/' . $langfile);
return TRUE;
}
}
这样打电话
$this->load->library('my_language');
$arr = $this->my_language->load('demo');
print_r($arr);
【讨论】:
我知道这是一个很老的问题,但我只想为这个问题提供我的解决方案,因为没有答案可以解决这个问题。 (在 codeigniter 3 上测试)
$this->load->helper('language');
$foo = $this->lang->load('lang_file', 'english', true);
print_r($foo);
注意load 方法的第三个参数决定是否返回加载的翻译数组。来源:codeigniter 3 docs.
希望对你有帮助
【讨论】:
是的,当然有可能。你可以这样做:
//load helper for language
$this->load->helper('language');
//test is the language file in english folder
$this->lang->load('test','english');
//fetch all the data in $var variable
$var=$this->lang->language;
//print $var
print_r($var);
$var 将返回数组。 :)
【讨论】:
如果要返回Array中的语言文件数据,则需要在load函数中传递第三个参数。
$this->lang->load('header','hindi',true) // filename,language,true
【讨论】: