Welcome Guest, Not a member yet? Register   Sign In
Language files sanity check, please
#1

[eluser]nuwanda[/eluser]
I have a form validation language file (form_validation_lang.php) in my application/language dir.

Now, is that file supposed to completely override the system/language/form_validation_lang.php file?

That's what it appears to be doing. If I use my language file, no language items from the system file are returned, and vice versa.
#2

[eluser]WanWizard[/eluser]
Correct, the are not merged.

If you want to 'extend' the language file, include the one in the system directory at the top of your language file.
#3

[eluser]nuwanda[/eluser]
[quote author="WanWizard" date="1286451461"]Correct, the are not merged.

If you want to 'extend' the language file, include the one in the system directory at the top of your language file.[/quote]

Ah, include it, of course.

Thanks.
#4

[eluser]pyrokinesis[/eluser]
Hi guys,

I modified the CI_Language class (new MY_Language.php file) to detect if there are 2 language files to be loaded.
The system one is loaded by default, the lang file in the application dir is then loaded and added to the system entries.

If you add an entry to the file in the application dir it overwrites the default value.

It was an easy hack, hope someone finds it useful...

Code:
/**
* Load a language file
*
* load method modified to support 2 language files
* The file in application/language/____/ is added to the system language file and can overwrite system values
*
* @access    public
* @param    mixed    the name of the language file to be loaded. Can be an array
* @param    string    the language (english, etc.)
* @return    mixed
*/
function load($langfile = '', $idiom = '', $return = FALSE)
{
    $langfile = str_replace(EXT, '', str_replace('_lang.', '', $langfile)).'_lang'.EXT;

    if (in_array($langfile, $this->is_loaded, TRUE))
    {
        return;
    }

    if ($idiom == '')
    {
        $CI =& get_instance();
        $deft_lang = $CI->config->item('language');
        $idiom = ($deft_lang == '') ? 'english' : $deft_lang;
    }

    // Determine where the language file is and load it
    if ( file_exists(APPPATH.'language/'.$idiom.'/'.$langfile) && file_exists(BASEPATH.'language/'.$idiom.'/'.$langfile) )
    {
        include(BASEPATH.'language/'.$idiom.'/'.$langfile);
        include(APPPATH.'language/'.$idiom.'/'.$langfile);
    }
    elseif (file_exists(APPPATH.'language/'.$idiom.'/'.$langfile))
    {
        include(APPPATH.'language/'.$idiom.'/'.$langfile);
    }
    else
    {
        if (file_exists(BASEPATH.'language/'.$idiom.'/'.$langfile))
        {
            include(BASEPATH.'language/'.$idiom.'/'.$langfile);
        }
        else
        {
            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_merge($this->language, $lang);
    unset($lang);

    log_message('debug', 'Language file loaded: language/'.$idiom.'/'.$langfile);
    return TRUE;
}




Theme © iAndrew 2016 - Forum software by © MyBB