2

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.

4 Answers 4

5
$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);
Sign up to request clarification or add additional context in comments.

1 Comment

This will return labels from another language files loaded.
3

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

1 Comment

not advisable if lang is already loaded in your class ( if you do not want your system to act funny ).. make sure you only load a language file ONCE in a class.. I think OP just wants to fetch a particular lang file in an array, not load it
1

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. :)

1 Comment

This returns labels from previusly loaded files
0

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 

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.