You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
3.5 KiB
160 lines
3.5 KiB
<?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 */
|
|
|