1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2.  
  3. class CI_Lang {
  4.  
  5. var $language = array();
  6.  
  7. var $is_loaded = array();
  8.  
  9. function __construct()
  10. {
  11. log_message('debug', "Language Class Initialized");
  12. }
  13.  
  14. //加载语言包
  15. function load($langfile = '', $idiom = '', $return = FALSE, $add_suffix = TRUE, $alt_path = '')
  16. {
  17. $langfile = str_replace('.php', '', $langfile);
  18.  
  19. if ($add_suffix == TRUE)
  20. {
  21. $langfile = str_replace('_lang.', '', $langfile).'_lang';
  22. }
  23.  
  24. $langfile .= '.php';
  25.  
  26. if (in_array($langfile, $this->is_loaded, TRUE))
  27. {
  28. return;
  29. }
  30.  
  31. $config =& get_config();
  32.  
  33. if ($idiom == '')
  34. {
  35. $deft_lang = ( ! isset($config['language'])) ? 'english' : $config['language'];
  36. $idiom = ($deft_lang == '') ? 'english' : $deft_lang;
  37. }
  38.  
  39. // Determine where the language file is and load it
  40. if ($alt_path != '' && file_exists($alt_path.'language/'.$idiom.'/'.$langfile))
  41. {
  42. include($alt_path.'language/'.$idiom.'/'.$langfile);
  43. }
  44. else
  45. {
  46. $found = FALSE;
  47.  
  48. foreach (get_instance()->load->get_package_paths(TRUE) as $package_path)
  49. {
  50. if (file_exists($package_path.'language/'.$idiom.'/'.$langfile))
  51. {
  52. include($package_path.'language/'.$idiom.'/'.$langfile);
  53. $found = TRUE;
  54. break;
  55. }
  56. }
  57.  
  58. if ($found !== TRUE)
  59. {
  60. show_error('Unable to load the requested language file: language/'.$idiom.'/'.$langfile);
  61. }
  62. }
  63.  
  64. if ( ! isset($lang))
  65. {
  66. log_message('error', 'Language file contains no data: language/'.$idiom.'/'.$langfile);
  67. return;
  68. }
  69.  
  70. if ($return == TRUE)
  71. {
  72. return $lang;
  73. }
  74.  
  75. $this->is_loaded[] = $langfile;
  76. $this->language = array_merge($this->language, $lang);
  77. unset($lang);
  78.  
  79. log_message('debug', 'Language file loaded: language/'.$idiom.'/'.$langfile);
  80. return TRUE;
  81. }
  82.  
  83. //从language数组中取出一条数据
  84. function line($line = '')
  85. {
  86. $value = ($line == '' OR ! isset($this->language[$line])) ? FALSE : $this->language[$line];
  87.  
  88. // Because killer robots like unicorns!
  89. if ($value === FALSE)
  90. {
  91. log_message('error', 'Could not find the language line "'.$line.'"');
  92. }
  93.  
  94. return $value;
  95. }
  96.  
  97. }

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

  1. 仿写自己的一个加载语言包的L函数

    <?php /** * [L 加载语言的L的方法] * @param [string] $key [语言键的名称] * @return [string] $value [取到的语言值] */ f ...

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

    顾名思义,装载器就是加载元素的,使用CI时,经常加载的有: 加载类库文件:$this->load->library()   加载视图文件:$this->load->view() ...

  3. CI框架 -- 核心文件 之 Common.php

    system/core/Common.php 文件中可以定义 公共函数,我们可以在这里定义自己的公共函数.在任何情况下你都能够使用这些函数.使用他们不需要载入任何类库或辅助函数. 接下来分析下该文件中 ...

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

    钩子 - 扩展框架核心 CodeIgniter 的钩子特性提供了一种方法来修改框架的内部运作流程,而无需修改 核心文件.CodeIgniter 的运行遵循着一个特定的流程,你可以参考这个页面的 应用程 ...

  5. CI框架 -- 核心文件 之 Exceptions.php

    使用CI框架,我们通常使用一下三个函数处理错误: show_error('消息' [, int $status_code = 500 ] ) show_404('页面' [, 'log_error'] ...

  6. CI框架 -- 核心文件 之 config.php

    Config:该文件包含CI_Config类,这个类包含启用配置文件来管理的方法 /** * 加载配置文件 * * @param string $file 配置文件名 * @param bool $u ...

  7. CI框架 -- 核心文件 之 Output.php(输出类文件)

    CI输出类Output.php的功能是将最终web页面发送给浏览器,这里面的东西可能是你用的最少的.你使用装载器加载了一个视图文件, 这个视图文件的内容会自动传递给输出类对象, 然后呢,在方法执行完毕 ...

  8. CI框架 -- 核心文件 之 Benchmark.php

    Benchmark.php文件中定义的CI_Benchmark类可以让你标记点,并计算它们之间的时间差.还可以显示内存消耗. Benchmarking类库,它是被系统自动被加载的,不需要手工加载 cl ...

  9. easyui 动态加载语言包

    解决办法是:把语言包中的语言类型写到cookie,动态修改cookie中的语言名称,修改完后重新渲染一下页面. 在页面加载完成后,先判断cookie存不存在,如果不存在就写入默认语言,存在就给easy ...

随机推荐

  1. MyBean-关于单实例插件

    单实例插件可以通过两个途径实现 第一个在注册时注册成单实例 beanFactory.RegisterBean(pvPluginID: String; pvClass: TClass;     pvSi ...

  2. DIOCP开源项目-DIOCP3的ECHO测试<贴图>

    星期六开了测试台测试机子.星期天休息,今天早上来接两个图 开了2个客户端,一个qsl的echo client,一个是楠楠的dbiocp回调客户端.建立13240个连接 今天来后,机子很卡,后来发现是楠 ...

  3. pip升级Python程序包

    列出当前安装的包: pip list 列出可升级的包: pip list --outdate 升级一个包: pip install --upgrade requests // mac,linux,un ...

  4. pandas入门——loc与iloc函数

    oc与iloc函数 loc函数 import pandas as pd import numpy # 导入数据 df = pd.read_csv(filepath_or_buffer="D: ...

  5. ZooKeeper管理分布式环境中的数据

    Reference: http://www.cnblogs.com/wuxl360/p/5817549.html 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它 ...

  6. 解决java.io.IOException: Cannot run program "javac"问题,并设置jdk版本

    原因:没有配置java路径 解决方法:设置java_home路径 设置jdk版本是10的方法:在sbt文件中添加一行: javacOptions := Seq(") 然后重新执行命令:sbt ...

  7. 网络构建入门技术(3)——IP地址分类

    说明(2017-5-16 09:48:08): 1. IP地址

  8. Faiss教程:索引(1)

    索引是faiss的关键知识,我们重点介绍下. 索引方法汇总 有些索引名,我就不翻译了,根据英文名去学习更准确. 索引名 类名 index_factory 主要参数 字节数/向量 精准检索 备注 精准的 ...

  9. 基于jQuery图片元素网格布局插件

    基于jQuery图片元素网格布局插件是一款可以将图片或HTML元素均匀分布排列为网格布局的jQuery插件jMosaic.效果图如下: 在线预览   源码下载 实现的代码. html代码: <c ...

  10. [emacs] org-mode的一些小技巧

    Table of Contents 1 快速输入 #+BEGIN_SRC … #+END_SRC 2 代码按语法高亮 3 导出成HTML时的一些问题和技巧 3.1 生成目录表 3.2 为每个分节的标题 ...