一般的建站都用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');
}
其中就是要求配置项,在得到自定义变量的时候,重新加载语言库,以达到目标。
更多推荐
php 后台 PHPCMS 多语言网站解决方案
发布评论