搜索
开启辅助访问 切换到宽版

QQ登录

只需一步,快速开始

扫一扫,访问微社区

注册 找回密码
查看: 12350|回复: 5
打印 上一主题 下一主题

opencart做的多语言与多货币关联问题。

[复制链接]
楼主
发表于 2013-8-24 23:03:36 | 显示全部楼层
对于根据当前系统语言打开网站自动使用对应语言和货币的功能,系统本身有类似的功能,只不过系统只是对语言有这样的功能,可以自己研究下代码,改下。
此部分代码在opencart的入口文件index.php中,代码如下:
if (isset($request->server['HTTP_ACCEPT_LANGUAGE']) && $request->server['HTTP_ACCEPT_LANGUAGE']) {
        $browser_languages = explode(',', $request->server['HTTP_ACCEPT_LANGUAGE']);
       
        foreach ($browser_languages as $browser_language) {
                foreach ($languages as $key => $value) {
                        if ($value['status']) {
                                $locale = explode(',', $value['locale']);

                                if (in_array($browser_language, $locale)) {
                                        $detect = $key;
                                }
                        }
                }
        }
}

if (isset($session->data['language']) && array_key_exists($session->data['language'], $languages) && $languages[$session->data['language']]['status']) {
        $code = $session->data['language'];
} elseif (isset($request->cookie['language']) && array_key_exists($request->cookie['language'], $languages) && $languages[$request->cookie['language']]['status']) {
        $code = $request->cookie['language'];
} elseif ($detect) {
        $code = $detect;
} else {
        $code = $config->get('config_language');
}

if (!isset($session->data['language']) || $session->data['language'] != $code) {
        $session->data['language'] = $code;
}

if (!isset($request->cookie['language']) || $request->cookie['language'] != $code) {          
        setcookie('language', $code, time() + 60 * 60 * 24 * 30, '/', $request->server['HTTP_HOST']);
}                       


其中,首先以session中的设置为最优先,其次以cookie。如果没有session和cookie的设置,才取浏览器(可以认为是操作系统语言)的语言设置,来设置网站打开的语言。
对于货币可以参考语言的这种思路自己来进行修改。
回复 支持 反对

使用道具 举报

沙发
发表于 2013-8-24 23:44:32 | 显示全部楼层
不过语言设置里的区域要特别注意,要全面,才能完全兼容各种浏览器。比如目前系统默认的英文设置,对于火狐和IE都有些问题,修改如下:en_US.UTF-8,en_US,en-US,en-us,en-gb,english
中文应该为:zh_CN.UTF-8,zh_CN,zh-Hans-CN,zh-cn,china
如此设置可保证在IE和火狐下做到打开网站时,在没有cookie和session的情况下,自动根据浏览器语言设置来自动识别网站语言。不过本人在win8下最新版的ie和火狐下测试,不同版本又无区别商不得而知。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

QQ|手机版|OpenCart - 中文官方网站 ( 蜀ICP备09033774号|人工智能

GMT+8, 2024-6-1 14:50 , Processed in 0.060153 second(s), 19 queries , Gzip On.

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