Home > Backend Development > PHP Tutorial > CI framework source code reading---------Lang.php_PHP tutorial

CI framework source code reading---------Lang.php_PHP tutorial

WBOY
Release: 2016-07-14 10:09:18
Original
703 people have browsed it

[php]  

/** 
 * 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
* Official user manual: 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
* Language pack list
* @var array
*/  
    var $language   = array();  
    /**
* List of loaded language files
* List of loaded language packs
* @var array
*/  
    var $is_loaded  = array();  
  
    /** 
     * Constructor 
     *  
     * @access  public 
     */  
    function __construct()  
    {  
        log_message('debug', "Language Class Initialized");  
    }  
  
    // --------------------------------------------------------------------  
  
    /**
* Load a language file
* Load language pack
* @access public
* @param mixed the name of the language file to be loaded. Can be an array
* * The language file to be loaded.
* @param string the language (english, etc.) The language to use
* @param bool return loaded array of translations Directly return the language pack array
* Do not add to $ this-& gt; is_loaded and $ this-& gt; language to
* @param bool add suffix to $langfile Whether to add a suffix to the file
* @param string alternative path to look for language file Custom path to language pack 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';
} }
// Add .php suffix to langfile
$langfile .= '.php';
// Determine whether the current file has been loaded
if (in_array($langfile, $this->is_loaded, TRUE))
{
return;
} }
// Get configuration file data
$config =& get_config();
// If the language to be used is empty
// Then we will get it from $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
// Find the language pack under the custom path and load it
if ($alt_path != '' && file_exists($alt_path.'language/'.$idiom.'/'.$langfile))
{
include($alt_path.'language/'.$idiom.'/'.$langfile);
} }
else
{
                                  // If the custom path is not found, call get_instance()->load->get_package_paths(TRUE)
// Find
under the path path
                                                                                                                                                                                                                                                                                                 
$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 you haven't found it, you can only report an error
                 //                                         
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 */  
 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/477660.htmlTechArticle[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 * * @packag...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template