Welcome Guest, Not a member yet? Register   Sign In
[solved] Loading another language
#11

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

[eluser]SPeed_FANat1c[/eluser]
it didn't work when using lang('privilegijos');

but I noticed now that we can get an array of translations

Code:
function test2()
    {
        
         $this->load->language('main', 'lietuviu');
        
        $x = $this->lang->force_load('main', 'english', TRUE);
        
         echo $x['privilegijos'];
        
        
    }

This was translated to english. Thank you Smile
#13

[eluser]BradEstey[/eluser]
Here is a really simple way to make a language file overwrite a previously loaded file with the same name:

Code:
$this->lang->load('email', 'en');    // Loads the English version.
$english_txt = lang('some_text');    // Some English text.

// Finds and unsets the filename in the "is_loaded" array.
unset($this->lang->is_loaded[array_search('email_lang.php', $this->lang->is_loaded)]);    

$this->lang->load('email', 'it');    // Loads the Italian version. All English will be overwritten.
$italian_txt = lang('some_text');    // Some Italian text.

There really needs to be an Unload or Clear function in the Lang Class.
#14

[eluser]osci[/eluser]
[quote author="Bradillac" date="1308271167"]Here is a really simple way to make a language file overwrite a previously loaded file with the same name:

Code:
$this->lang->load('email', 'en');    // Loads the English version.
$english_txt = lang('some_text');    // Some English text.

// Finds and unsets the filename in the "is_set" array.
unset($this->lang->is_loaded[array_search('email_lang.php', $this->lang->is_loaded)]);    

$this->lang->load('email', 'it');    // Loads the Italian version. All English will be overwritten.
$italian_txt = lang('some_text');    // Some Italian text.

There really needs to be an Unload or Clear function in the Lang Class.[/quote]

Much better implementation.




Theme © iAndrew 2016 - Forum software by © MyBB