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

个人思路是根据浏览器语言自动判断,如果是中文浏览器,就使用中文模板,英文的就使用英文模板。中、英模板的区别是调用了不同的产品分类、文章分类,而模板中相同的固定文字可以设定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}

这个方法也适用多语言的设定

时间: 2024-10-11 01:59:03

Ecshop中英双语版自动切换判断的个人方案的相关文章

DeepFaceLab中英双语版,熟肉来了!

我一向都很喜欢看好莱坞大片,但是由于听力水平有限,所以必须等“熟肉”,最喜欢的字幕当然是中英双语版咯.同理,不少人想要使用换脸软件,但是苦于英语不好,迟迟没有上手.好吧,那我就出个双语版吧! ? 根目录下的脚本文件全部翻译成中文了,同时在保留了英文版,方便对照. ? 除了脚本之外命令行也做了汉化,重点翻译了训练参数和合成参数,保留原内容的基础上加入了中文内容.有些参数因为本身专业性比较强,即便翻译了不太好理解,所以基于使用经验,描述上做了一些小的修改.因为时间,精力,能力有限,未必完美,但是总比

照片里的20世纪全球史 - 中英双语 - 套装共10册 - azw3电子书 - 完整高清版下载

照片里的20世纪全球史 - 中英双语 - 套装共10册 - azw3电子书 - 完整高清版下载 下载地址:网盘下载 备用地址:网盘下载 照片里的20世纪全球史 - 中英双语 - 套装共10册 - azw3电子书 - 完整高清版下载 <照片里的20世纪全球史>全球销量之首的20世纪历史照片集,3246幅经典老照片,讲透地球过去百年历史(中英双语)(套装共10册). ◆<照片里的20世纪全球史>是一套图文套书,10本,共3246幅照片,用照片来呈现20世纪的10个十年. ◆按年代划分,

谷歌退出中国声明全文(中英对照版)A new approach to China

次针对Google的攻击无关,我们发现有第三方在定期的访问美国,中国,欧洲的许多人*权*支持者的Gmail帐户.对这些帐户的访问并不是通过Google认可的方式,大多是通过钓鱼欺诈手段,以及位于用户电脑中的恶意软件进行. We have already used information gained from this attack to make infrastructure and architectural improvements that enhance security for Go

Matalb中英双语手册-年少无知翻译版本

更新: 20171207: 这是大学期间参加数模翻译的手册 正文: 愚人节快乐,突然发现自己在博客园的一篇文章.摘取如下: MATLAB 语言是一种工程语言,语法很像 VB 和 C,比 R 语言容易学,你知道 R 语言的语法有多糟糕么.同样,相对于 Python,MATLAB 的优点是天生为了算而算,数与数之间的运算就是矩阵与矩阵之间的运算,在运算方面可能容易学一点.但是,MATLAB 是收费的,更多信息请参考其官方网站. 本人是一名数学转计算机专业的学生,参加过两次美国大学生数学建模,全部获得

Ecshop他们主动双语版切换来推断个人的计划

个人思路是基于浏览器的语言来推断自己主动,假设中国的浏览器,对使用中国模板.将英语模板.于.英国的模板差值称为不同的产品类别.文章分类,的模板可设置为相同的固定的文本language,所以你不会有打造两个网站 : 1.PHP推断浏览器语言 2.将推断写入Cookie 3.同一时候改变_CFG['lang']的值 4._CFG['template']=_CFG['lang'].便于模板自己主动切换 5.当用户人工选择? lang=cn/en时,进行切换 1.新建两个模板 zh_cn 和 en_us

Filesystem-Hierarchy-Standard(FHS) 文件系统层次结构标准2.3中英对照版(未完待续)

本想把原文翻译一遍,一来学习学习Linux的文件系统结构,二来熟悉下专业英语.经历了一个月之久,才翻译到一半.再也没有空闲时间待在学校了,不知道什么时间才能翻译完.先在这里发表一下,给有需要的同志们方便学习,也给自己一个提醒,告诉自己这里还有一件未完成的事..感謝大家支持 --------------------------------------以下是FHS-2.3正文内容----------------------------------------------- Filesystem Hi

[中英双语] 数学缩写列表 (List of mathematical abbreviations)

List of mathematical abbreviations From Wikipedia, the free encyclopedia 数学缩写列表 维基百科,自由的百科全书 This article is a listing of abbreviated names of mathematical functions, function-like operators and other mathematical terminology. 这篇文章是一个数学函数,类似于函数的操作符和其

MyEclipse常见错误汇总,中英注释版(长期更新)

No.1 当一条语句漏写分号时错误描述如下 Syntax error, insert ";" to complete Statement(语法错误:插入分号完成语句描述) No.2 当漏写双引号的时候错误描述如下      你好cannot be resolved(你好 不能被解析)

What’s new for Spark SQL in Apache Spark 1.3(中英双语)

文章标题 What’s new for Spark SQL in Apache Spark 1.3 作者介绍 Michael Armbrust 文章正文 参考文献 https://databricks.com/blog/2015/03/24/spark-sql-graduates-from-alpha-in-spark-1-3.html 原文地址:https://www.cnblogs.com/xia520pi/p/8747524.html