【问题标题】:Load codeigniter language variables into an array将 codeigniter 语言变量加载到数组中
【发布时间】:2014-08-19 11:59:53
【问题描述】:

我正在使用 codeigniter。我需要将语言文件中的所有变量都获取到数组中。可以吗?

有没有如下方法可用?

$a = $this->load->language('editor');
print_r($a);

我试过$this->lang->language; 但是,这将返回加载的另一种语言文件的标签。

【问题讨论】:

    标签: php arrays codeigniter


    【解决方案1】:
    $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);
    

    【讨论】:

    • 这将从加载的其他语言文件返回标签。
    【解决方案2】:

    我知道这是一个很老的问题,但我只想为这个问题提供我的解决方案,因为没有答案可以解决这个问题。 (在 codeigniter 3 上测试)

    $this->load->helper('language');
    $foo = $this->lang->load('lang_file', 'english', true);
    print_r($foo);
    

    注意load 方法的第三个参数决定是否返回加载的翻译数组。来源:codeigniter 3 docs.

    希望对你有帮助

    【讨论】:

    • 不建议如果 lang 已经加载到你的类中(如果你不希望你的系统表现得滑稽)..确保你只在一个类中加载一个语言文件一次..我认为 OP 只是想要获取数组中的特定语言文件,而不是加载它
    【解决方案3】:

    是的,当然有可能。你可以这样做:

    //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 将返回数组。 :)

    【讨论】:

    • 这会从以前加载的文件中返回标签
    【解决方案4】:

    如果要返回Array中的语言文件数据,则需要在load函数中传递第三个参数。

    $this->lang->load('header','hindi',true) // filename,language,true 
    

    【讨论】:

      猜你喜欢
      • 2021-01-24
      • 2013-01-26
      • 1970-01-01
      • 2015-11-20
      • 1970-01-01
      • 1970-01-01
      • 2023-01-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多