<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**

 * CodeIgniter

 *

 * An open source application development framework for PHP 5.1.6 or newer

 *

 * @package		CodeIgniter

 * @author		ExpressionEngine Dev Team

 * @copyright	Copyright (c) 2008 - 2011, EllisLab, Inc.

 * @license		http://codeigniter.com/user_guide/license.html

 * @link		http://codeigniter.com

 * @since		Version 1.0

 * @filesource

 */



// ------------------------------------------------------------------------



/**

 * Language Class

 *

 * @package		CodeIgniter

 * @subpackage	Libraries

 * @category	Language

 * @author		ExpressionEngine Dev Team

 * @link		http://codeigniter.com/user_guide/libraries/language.html

 */

class CI_Lang {



	/**

	 * List of translations

	 *

	 * @var array

	 */

	var $language	= array();

	/**

	 * List of loaded language files

	 *

	 * @var array

	 */

	var $is_loaded	= array();



	/**

	 * Constructor

	 *

	 * @access	public

	 */

	function __construct()

	{

		log_message('debug', "Language Class Initialized");

	}



	// --------------------------------------------------------------------



	/**

	 * Load a language file

	 *

	 * @access	public

	 * @param	mixed	the name of the language file to be loaded. Can be an array

	 * @param	string	the language (english, etc.)

	 * @param	bool	return loaded array of translations

	 * @param 	bool	add suffix to $langfile

	 * @param 	string	alternative path to look for language file

	 * @return	mixed

	 */

	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_merge($this->language, $lang);

		unset($lang);



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

		return TRUE;

	}



	// --------------------------------------------------------------------



	/**

	 * Fetch a single line of text from the language array

	 *

	 * @access	public

	 * @param	string	$line	the language line

	 * @return	string

	 */

	function line($line = '')

	{

		$value = ($line == '' OR ! isset($this->language[$line])) ? FALSE : $this->language[$line];



		// Because killer robots like unicorns!

		if ($value === FALSE)

		{

			log_message('error', 'Could not find the language line "'.$line.'"');

		}



		return $value;

	}



}

// END Language Class



/* End of file Lang.php */

/* Location: ./system/core/Lang.php */

