Shijin TR
Shijin TR

Reputation: 7768

Load codeigniter language variables into an array

I am using codeigniter. I need to get all variables from a language file to an array.Is it possible?

Is there any method available like as follows?

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

I was tried $this->lang->language; But,This will return labels from another language files loaded.

Upvotes: 2

Views: 4550

Answers (4)

Surya Pratap
Surya Pratap

Reputation: 77

If you want to return language file data in Array than you need to pass the third parameter in load function.

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

Upvotes: 0

dapidmini
dapidmini

Reputation: 1625

I know this is quite an old question, but I just want to give my solution for this problem since no answers has done the trick for this problem. (tested on codeigniter 3)

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

notice that the third parameter for load method determines whether to return the loaded array of translations. source: codeigniter 3 docs.

hope this helps

Upvotes: 3

shafiq.rst
shafiq.rst

Reputation: 1296

$CI = & get_instance();
$arr = $CI->lang->language;

Or Use following library

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;
    }

}

Call like this

$this->load->library('my_language');
    $arr = $this->my_language->load('demo');
    print_r($arr);

Upvotes: 5

Lalit Giriya
Lalit Giriya

Reputation: 312

Yeah ofcourse its possible. You can do like this :

//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 will return the array. :)

Upvotes: 1

Related Questions