[eluser]osci[/eluser]
Well language files are in fact just config files and not classes so I don't think there should be a problem with loading another language and replacing values
You could extend Lang adding another param to load even if loaded and check that param
Copied from normal load function
Commented in order to force and added a check in the end
NOT TESTED
Code:
function force_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;
}
if ( ! in_array($langfile, $this->is_loaded, FALSE))
{
$this->is_loaded[] = $langfile;
$this->language = array_merge($this->language, $lang);
unset($lang);
}
log_message('debug', 'Language file loaded: language/'.$idiom.'/'.$langfile);
return TRUE;
}