<?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 */
详细解决方案
CI框架源码翻阅-Lang.php
热度:334 发布时间:2013-03-13 10:56:58.0
相关解决方案
- struts2 对象属性流入不进去, 报错:target is null for setProperty(null, "x" [Ljava.lang.Stri
- java.lang.NumberFormatException: For input string: "id"该如何处理
- java.lang.NoSuchMethodException: setId([Ljava.lang.String;)解决方法
- java.lang.IllegalStateException: No output folder,该怎么解决
- java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.makeAccess,该如何解决
- java.lang.NullPointerException解决方法
- Hibernate操作数据库 报错java.lang.Integer cannot be cast to java.lang.String如何改
- struts+spring+mybatis出现错误(java.lang.ClassNotFoundException: Entity)为提示位置
- !文件上载时中途停止上载,后台报java.lang.ArrayIndexOutOfBoundsException
- 测试时遇到的java.lang.ExceptionInInitializerError异常
- java类型异常java.lang.Integer cannot be cast to java.lang.String
- 有个有关问题,请各位帮忙看看:java.lang.ClassNotFoundException: org.apache.struts.action.Act
- 项目打包后报java.lang.NoClassDefFoundError: com/sun/tools/javac/util/List错误是咋回事
- httpclient老是提示java.lang.NoSuchMethodError: org.apache.http.protocol.BasicHttpCon
- tomcat启动时分报错java.lang.ClassCastException
- java.lang.UnsupportedOperationException: The user must supply a JDBC connection,该怎么处理
- java.lang.ClassNotFoundException: com.mchange.v2.c3p0.ComboPooledDataSource解决方法
- 报错:java.lang.reflect.InvocationTargetException解决办法
- 使用jxl导出excel时抛出一个错误java.lang.IllegalStateException,请高手指导解决方法
- java.lang.NumberFormatException: For input string: "1>"解决思路
- java.lang.IllegalArgumentException: argument type mismatch解决方案
- java.lang.NullPointerException有关问题,各位大侠帮忙看看,着
- getSession().createQuery()发生java.lang.reflect.InvocationTargetException异常
- getHibernateTemplate().get(entity.Class,serializabel id) 如何报java.lang.NullPointerException的错误
- java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver,该怎么处理
- org.apache.jasper.JasperException: java.lang.NullPointerException,该怎么处理
- java.lang.ClassCastException: java.util.ArrayList解决思路
- java.lang.ClassNotFoundException: com.zjrj.trade.dao.HibernateManager解决办法
- Exception in thread "main" java.lang.UnsupportedClassVersionError:有关问题
- jsp页面post到servlet发生异常:java.lang.NoSuchMethodError: bean.User.<init>(Ljava/lang/String;Ljava/lang/Str