Ecshop中英双语自动切换判断的方案

个人思路是根据浏览器语言自动判断,如果是中文浏览器,就使用中文模板,英文的就使用英文模板。中、英模板的区别是调用了不同的产品分类、文章分类,而模板中相同的固定文字可以设定language,这样就不用去建立两个网站了 整个逻辑流程如下: 1、PHP判断浏
个人思路是根据浏览器语言自动判断,如果是中文浏览器,就使用中文模板,英文的就使用英文模板。中、英模板的区别是调用了不同的产品分类、文章分类,而模板中相同的固定文字可以设定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'<span style="font-family: Arial, Helvetica, sans-serif;">];</span>
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、在模板的任意位置加上
 
<a href="?lang=cn">Chinese</a><a href="?lang=en">English</a>
最后修改的是languages\zh_cn\common.php和languages\en_us\common.php,用{$lang.xx}
 
这个方法也适用多语言的设定

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

这里所说的留言板页面,是指独立的ecshop那个留言板栏目(message.php),而不是指商品详情页面底部的用户评论区,通过这个方法,用户可以引用商品的信息,进行商品的讨论和留言。那么在这里留言板里如何才能将商品的缩略图显示出来呢,现在来说一说具体的方
做 ecshop模版 网站的时候,测试数据,发现点击订购、加入按钮都没反应,网上搜索,有些人说是修改了common.js,我将原始版本复原也没反映。后来重新安装ecshop,仔细研究发现,原来头部文件page_header.lbi被完全修改后,就点击没反应。 javascript:addToCa
ecshop 最高管理员登陆后台设置一个商品对应每个会员的价格,比如 普通vip 会员为 100元,黄金VIP为 80 元,没有登陆的普通会员则为 110元等,当每个等级会员登陆之后会显示自己所对应的价格,这样的修改对于用户体验很好,也是电商中不可缺少的一个功能,下
AB 模板王 为您整理,在Ecshop商品列表页显示每个商品的品牌的修改方法 1、首先修改 category.php 文件 将 $sql = SELECT g.goods_id, g.goods_name, g.goods_name_style, g.market_price, g.is_new, g.is_best, g.is_hot, g.shop_price AS org_price, . 修
ecshop 默认的是不支持免登录就可以进行购物的,但免登录进行购物又是一个需求,刚建立起来的独立商城并没有京东或淘宝哪么高大上,一些消费者并不愿意去注意一个 小的独立商城网店,所以有时候为了省时间就直接进行免登录购物了,这个在 ecshop 后台是可以
ecshop有一个商品的比较功能,在你点击商品旁边的比较链接就可以把商品加入到比较的框架中,很多时候,我们都需要对比较页面的样式进行修改,一是我们的页面更美观。 关于修改比较页面样式的方法: 比较页面的样式没有在在css中,而是在compare.js这个更目录