找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 225|回复: 0

[cms教程] Ecshop中英双语自动切换判断的方案

[复制链接]

该用户从未签到

发表于 2015-6-29 10:42:06 | 显示全部楼层 |阅读模式

您需要 登录 才可以下载或查看,没有账号?立即注册

×
个人思路是根据浏览器语言自动判断,如果是中文浏览器,就使用中文模板,英文的就使用英文模板。中、英模板的区别是调用了不同的产品分类、文章分类,而模板中相同的固定文字可以设定language,这样就不用去建立两个网站了
       
                 
       
                整个逻辑流程如下:
       
                 
       
                1、PHP判断浏览器语言
       
                2、将判断写入Cookie
       
                3、同时改变_CFG['lang',的值
       
                4、_CFG['template',=_CFG['lang',,便于模板自动切换
       
                5、当用户人工选择?lang=cn/en时,进行切换
       
                1、新建两个模板 zh_cn 和 en_us
       
                 
       
                2、includes\lib_common.php -> load_config()最后加入
       
                 
       
                $lang = array(
       
                    'cn'=>'zh_cn',
       
                    'en'=>'en_us'
       
                  );
       
                  if(isset($_REQUEST['lang',) && isset($lang[$_REQUEST['lang',,)){
       
                    $arr['lang', = $lang[$_REQUEST['lang',,;
       
                    setcookie('ACCEPT_LANGUAGE', $arr['lang',);
       
                  }elseif(isset($_COOKIE['ACCEPT_LANGUAGE',) && in_array($_COOKIE['ACCEPT_LANGUAGE',, array('zh_cn', 'en_us'))){
       
                    $arr['lang', = $_COOKIE['ACCEPT_LANGUAGE',;
       
                  }else{
       
                    $accept_language = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE',);
       
                    if(strpos($accept_language, 'zh-c')!==false){
       
                      $arr['lang', = 'zh_cn';
       
                    }else{
       
                      $arr['lang', = 'en_us';
       
                    }
       
                    setcookie('ACCEPT_LANGUAGE', $arr['lang',);
       
                  }
       
                  $arr['template', = $arr['lang',;
       
                 
       
                  return $arr;
       
                3、includes\cls_template.php -> fetch()
       
                 
       
                //$cachename = basename($filename, strrchr($filename, '.')) . '_' . $cache_id;修改为
       
                $cachename = basename($filename, strrchr($filename, '.')) . '_' . $cache_id.'_'.$GLOBALS['_CFG',['template',;
       
                4、includes\cls_template.php -> make_compiled()
       
                 
       
                //$name = $this->compile_dir . '/' . basename($filename) .'.php';修改为
       
                $name = $this->compile_dir . '/' . basename($filename) .$GLOBALS['_CFG',['template',.'.php';
       
                5、includes\cls_template.php -> is_cached()
       
                 
       
                //$cachename = basename($filename, strrchr($filename, '.')) . '_' . $cache_id;修改为
       
                $cachename = basename($filename, strrchr($filename, '.')) . '_' . $cache_id.'_'.$GLOBALS['_CFG',['template',;
       
                修改模板解析类是为了保证不同的中、英模板之间的模板变异问没有冲突
       
                 
       
                6、在模板的任意位置加上
       
                 
       
                [url=,Chinese[/url][url=,English[/url]
       
                最后修改的是languages\zh_cn\common.php和languages\en_us\common.php,用{$lang.xx}
       
                 
       
                这个方法也适用多语言的设定
回复

使用道具 举报

网站地图|页面地图|文字地图|Archiver|手机版|小黑屋|找资源 |网站地图

GMT+8, 2024-12-28 10:50

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表