文件作用解析之:init_languages.php,init_templates.php

来源:互联网 发布:分布式数据库系统 编辑:程序博客网 时间:2024/06/05 08:54
一、init_languages.php
这个文件在:includes/init_includes目录或子目录overrides下。
这个文件是被autoload_func.php中加载的。
这个文件的作用是得到语言设置。
首先检查有没有在get参数中传递语言的code(key为language),如果有传递,并且该值是有效的code,则将此次的语言设置为get参数指定的。当中用得到了language.php类。如果get传递了有language参数,但是却是无效的,那么就将采用默认的语言设置。
如果get参数中没有传递language这个key,则看是否使用浏览器通过HTTP_ACCEPT_LANGUAGE传递的语言设置,有的话,就从中获取,找到一个有效的就返回。
如果也不从浏览器获取,那么就直接使用默认的设置。

然后设置以下session值:
 $_SESSION['language'] = (zen_not_null($lng->language['directory']) ? $lng->language['directory'] : 'english');
  $_SESSION['languages_id'] = (zen_not_null($lng->language['id']) ? $lng->language['id'] : 1);
  $_SESSION['languages_code'] = (zen_not_null($lng->language['code']) ? $lng->language['code'] : 'en');


二、init_templages.php
该文件同样是由autoload_func.php加载的。
用于定位出模板文件的目录。
操作的表是:template_select,当前选择的模板名称表。
1、首先查询template_language=0的那个模板(表示不管当前是哪个语言设置,都适用),记录template_dir字段(如classic)到变量$template_dir;
2、然后查询template_language = '" . $_SESSION['languages_id']的设置项。这个表明,还可以根据语言来设置不同的模板,如果这个能查到值,就将替换上面得到的$template_dir。
紧接着就定义template相关的常量,如:
/**
 * The actual template directory to use
 */
  define('DIR_WS_TEMPLATE', DIR_WS_TEMPLATES . $template_dir . '/');  //即includes/templates/$template_dir
define('DIR_WS_TEMPLATE_IMAGES', DIR_WS_TEMPLATE . 'images/');
define('DIR_WS_TEMPLATE_ICONS', DIR_WS_TEMPLATE_IMAGES . 'icons/');


3、然后,查看语言路径下,该模板目录下,是否有相应的语言设置文件(如当前选择的模板为classic,当前session['language']=english,则在includes/languages/classic下判断是否有english.php文件),如果有,就加载该语言配置文件(用include_once),这里记录的是一些常量,用来显示不同的语言,当然code都是英文,值是各种语言。
如果没有(如includes/languages/classic下就没有english.php文件),则会加载includes/languages/下的session['language'].php文件(如english.php文件)(用include_once加载)。

4、设置content-type
 header("Content-Type: text/html; charset=" . CHARSET);

5、加载modules目录下的额外配置,未必存在,只是给用户扩展的一个地方:
include(DIR_WS_MODULES . 'extra_definitions.php');

0 0
原创粉丝点击