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

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

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

个人思路是基于浏览器的语言来推断自己主动,假设中国的浏览器,对使用中国模板。将英语模板。于、英国的模板差值称为不同的产品类别、文章分类,的模板可设置为相同的固定的文本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}

这种方法也适用于多语言设置

版权声明:本文博主原创文章,博客,未经同意不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116965.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c#语言简介_简单介绍自己

    c#语言简介_简单介绍自己taskScheduler根据定义ThetaskSchedulerbythedefinitionblurb.“Istheclasswheretheusagecontextiswithinthetasklibraries.“它的作用像是WPF/Winform时代的SynchronizationContext.ItisliketheSync…

    2022年9月25日
    2
  • ubuntu安装Qt creator

    ubuntu安装Qt creatorUbuntu安装Qtcreator#ubuntu版本16.04#Qt不限版本

    2022年10月15日
    2
  • 中标麒麟正在启动caja_中标麒麟和win7差距

    中标麒麟正在启动caja_中标麒麟和win7差距1问题背景在使用UEFI安装中标麒麟系统时,出现warning:/dev/disk/by-label/NeoKylindoesnotexit如下图所示(图来源网络):2原因分析系统在DXE(DriverExecutionEnviroment)驱动加载过程中需要查找系统的启动项/启动文件,也就是waining中的:/dev/disk/by-label/NeoKylin显然,根据报错我们可知,问题就出在该启动文件的路径上–找不到对应的启动文件。3解决方法3.1确定/查看

    2022年8月10日
    95
  • Eclipse之代码自动保存设置

    Eclipse之代码自动保存设置Eclipse之代码自动保存设置

    2022年4月24日
    66
  • pycharm 激活吗【2021最新】「建议收藏」

    (pycharm 激活吗)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月30日
    35
  • springboot和传统springmvc区别「建议收藏」

    springboot和传统springmvc区别「建议收藏」一、概念1、SpringSpring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系。其核心就是控制反转(IOC),和面向切面(AOP),简单的说就是一个分层的轻量级开源框架。2、SpringMVCSpringMVC属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面。SpringMVC是一种web层mvc框架,用于替代servlet(处理|响应请求,获取表单参数,表单校

    2022年8月20日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号