CI框架源码阅读---------Lang.php

发布时间:2017-09-11 12:24:19
CI框架源码阅读---------Lang.php [php]

<?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

* 官方使用手册:http://codeigniter.org.cn/user_guide/libraries/language.html

* @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 直接返回语言包数组

* 不加入到$this->is_loaded和$this->language中去

* @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 文件的.php 后缀去掉

$langfile = str_replace('.php', '', $langfile);

// 判断需不需要添加后缀如果需要

// 将_lang. 去掉并再langfile后面添加_lang

if ($add_suffix == TRUE)

{

$langfile = str_replace('_lang.', '', $langfile).'_lang';

}

// 为langfile添加.php后缀

$langfile .= '.php';

// 判断当前文件是否被加载过

if (in_array($langfile, $this->is_loaded, TRUE))

{

return;

}

// 获取配置文件的数据

$config =& get_config();

// 如果要使用的语言为空

// 那么 我们将从$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

{

// 如果自定义路径下没找到调用get_instance()->load->get_package_paths(TRUE)

// 在包路径下寻找

// get_package_paths这个函数在loader.php中

$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 = '')

{

/*

* $this->language 的样子

* $lang['error_email_missing'] = "You must submit an email address";

* $lang['error_url_missing'] = "You must submit a URL";

* $lang['error_username_missing'] = "You must submit a username";

*/

$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 */

,站群系统,站群软件

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:荆门网站制作 http://jingmen.666rj.com