php 后台 PHPCMS 多语言网站解决方案

一般的建站都用php,其中phpcms感觉比较好用,列出一些自己的多语言经验。


1. 根栏目建立语言种类,如 cn,en等。

2. 根栏目分类中模板的“模板设置”,中的“栏目首页模板”,我们需要设定一个语言主页配置,名字如“category_index.html”

3. 模板目录“\phpcms\templates\en” 也按语言分类名字也区分开来。

4. 建立对应数量站点配置,在模板开头输入 {php $SEO = seo(SITE_ID)} 区分,SITE_ID为站点id,最好再建立当前语言根类id,模板中定义变量  {php $langcatid = 77}。

5. 添加语言配置文件自定义的属性 ,这样写{php $GLOBALS['DYNAMIC_SYSTEM_LANG']='en'} ,

其中en我定义的文件名,对应目录为 \phpcms\languages\en,而属性中的变量名为自定义名字,下一点会用得到。

6. 到/phpcms/libs/functions/global.func.php 查找 function L(,找到语言函数,对以下代码进行修改以实现我们自行重新配置语言文件

	if(defined('IN_ADMIN')) {
		$lang = SYS_STYLE ? SYS_STYLE : 'zh-cn';
	} else {
		$lang = pc_base::load_config('system','lang');
	}

改为

	global $DYNAMIC_SYSTEM_LANG;
	if(isset($DYNAMIC_SYSTEM_LANG) && $DYNAMIC_SYSTEM_LANG != NULL){
		$lang = $DYNAMIC_SYSTEM_LANG;
		$DYNAMIC_SYSTEM_LANG = NULL;

		require_once PC_PATH.'languages'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.'system.lang.php';
		if(defined('IN_ADMIN')) require_once PC_PATH.'languages'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.'system_menu.lang.php';
		if(file_exists(PC_PATH.'languages'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.ROUTE_M.'.lang.php')) require PC_PATH.'languages'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.ROUTE_M.'.lang.php';

		$modules = explode(',',$modules);
		foreach($modules AS $m) {
			if(!isset($LANG_MODULES[$m])) require PC_PATH.'languages'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.$m.'.lang.php';
		}

	}elseif(defined('IN_ADMIN')) {
		$lang = SYS_STYLE ? SYS_STYLE : 'zh-cn';
	} else {
		$lang = pc_base::load_config('system','lang');
	}



其中就是要求配置项,在得到自定义变量的时候,重新加载语言库,以达到目标。





你可能感兴趣的:(Web)