CI框架 -- 核心文件 之 Lang.php(加载语言包)

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

class CI_Lang {

    var $language    = array();

    var $is_loaded    = array();

    function __construct()
    {
        log_message(‘debug‘, "Language Class Initialized");
    }

    //加载语言包
    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;
    }

    //从language数组中取出一条数据
    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;
    }

}
时间: 2024-08-06 11:55:21

CI框架 -- 核心文件 之 Lang.php(加载语言包)的相关文章

CI框架 -- 核心文件 之 Loader.php(加载器)

顾名思义,装载器就是加载元素的,使用CI时,经常加载的有: 加载类库文件:$this->load->library() 加载视图文件:$this->load->view() 加载模型文件:$this->load->model() 加载数据库文件:$this->load->database() 加载帮助文件:$this->load->helper() 加载配置文件:$this->load->config() 加载包路径:$this-&g

CI框架 -- 核心文件 之 Hooks.php

CI框架可以实现在不修改系统核心文件的基础上来改变或增加系统的核心运行功能,那就是Hook,看看CI有哪些钩子: pre_system系统执行的早期调用.仅仅在benchmark 和 hooks 类 加载完毕的时候. 没有执行路由或者其它的过程. pre_controller在调用你的任何控制器之前调用.此时所用的基础类,路由选择和安全性检查都已完成. post_controller_constructor在你的控制器实例化之后,任何方法调用之前调用. post_controller在你的控制器

CI框架 -- 核心文件 之 Input.php(输入数据处理文件)

class CI_Input { //用户ip地址 protected $ip_address = FALSE; //用户浏览器地址 protected $user_agent = FALSE; //允许get方式提交数据 protected $_allow_get_array = TRUE; //新行央视标记 protected $_standardize_newlines = TRUE; //xss攻击过滤 protected $_enable_xss = FALSE; //csrf攻击过滤

一步步手动实现热修复(一)-dex文件的生成与加载

热修复技术自从QQ空间团队搞出来之后便渐渐趋于成熟. 我们这个系列主要介绍如何一步步手动实现基本的热修复功能,无需使用第三方框架. 在开始学习之前,需要对基本的热修复技术有些了解,以下文章可以帮助到你: 安卓App热补丁动态修复技术介绍 [腾讯Bugly干货分享]Android Patch 方案与持续交付 Android dex分包方案 dodola/HotFix dex文件的生成与加载 我们在这部分主要做的流程有: 1.编写基本的Java文件并编译为.class文件. 2.将.class文件转

asp.net使用httphandler打包多CSS或JS文件以加快页面加载速度

介绍 使用许多小得JS.CSS文件代替一个庞大的JS或CSS文件来让代码获得更好的可维 护性,这是一个很好的实践.但这样做反过来却损失了网站的性能.虽然你应该将你的Javascript代码写在小文件中并且将大的CSS文件分割到小文件 中,当一个浏览器请求那些JS以及CSS文件,它却将为每一个文件产生一个请求.每一个HTTP请求将导致从你的浏览器到服务器上的一次"往返",从响应 服务器到客户端浏览器之间的等待时间称之为"延时".因此,如果你有四个JS文件以及三个CSS

javaEE:day2-servlet生命周期、提交解决中文乱码、tomcat加载jar包或类文件的顺序

servlet生命周期 生命周期简介: servlet在服务器第一次被请求的时候new出来,并初始化(即init())再调用service方法.这个实在服务器中new出来,然后用HashMap加的,与客户端无关.客户端之后访问只调用这个servlet的service方法. 具体分为4步: 1 构造方法 :服务器在被客户端第一次请求的时候运行 仅在服务器中运行一次 2 init方法:客户端第一次访问服务器的时候在服务器中进行初始化 仅一次.并且可以通过config参数在 web.xml中通过(ke

Resx 文件无效,未能加载 .RESX 文件中使用的类型

错误信息提示: 错误 339 Resx 文件无效.未能加载 .RESX 文件中使用的类型 Forms.ListItems, Forms, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.请确保已在项目中添加了必需的引用. 第 136 行,位置 5. E:\Forms\Form2.resx 136 5 Forms <?xml version="1.0" encoding="utf-8"?> <

VC++ 使用WebBrowser控件中html文件以资源形式加载

1 . . . . 2 3 //加载资源文件中的HTML,IDR_HTML1就是HTML文件在资源文件中的ID 4 wchar_t self_path[MAX_PATH] = { 0 }; 5 GetModuleFileName(NULL, self_path, MAX_PATH); 6 CString res_url; 7 res_url.Format(L"res://%s/%d", self_path, IDR_HTML1); 8 m_webbrowser.Navigate(res

Resx 文件无效。未能加载 .RESX 文件中使用的类型 System.Collections.Generic.List`1请确保已在项目中添加了必需的引用。

在C#程序编写过程中,会遇到:Resx 文件无效.未能加载 .RESX 文件中使用的类型 System.Collections.Generic.List1`请确保已在项目中添加了必需的引用. 主要原因很可能是使用了类的可序列化的原因,代码如下: [Serializable] public class TimeLineItem { public string Title; public string Content; public TimeLineItem(string content) { th