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