你现在的位置:首页 > PHP网站建设知识库 > ecmall > 正文

ecmall语言包程序运行机制

ecmall是不支持多语言的,但仍然将语言写成包,以方便ecmall开发调用它。今天就来聊聊ecmall语言包程序执行的流程。

最先执行的是default.app.php,这个文件继承了后台控制器文件backend.base.php,这个文件在其初始化文件中调用语言包文件。代码如下:

Lang::load(lang_file('admin/common'));
Lang::load(lang_file('admin/' . APP));

这样就执行到上面的文件,其中 lang_file() 获得文件的路径,而 load()函数载入语言文件。而load函数代码如下:


function load($lang_file)
{

  static $loaded = array();

  $old_lang = $new_lang = array();

  $file_md5 = md5($lang_file);

if (!isset($loaded[$file_md5]))
{
  
  $new_lang = Lang::fetch($lang_file);


$loaded[$file_md5] = $lang_file;


}
else
{
return;
}


$old_lang =& $GLOBALS['__ECLANG__']; 定义了全局变量 的引用


if (is_array($old_lang))
{
$new_lang = array_merge($old_lang, $new_lang); 
}

$GLOBALS['__ECLANG__'] = $new_lang; //往全局变量累计添加

}

虽然不支持多语言,但语言包的设计还是很有必要的,修改文字只需要去改语言包的文件就好了。

\