5.1 多语言自动识别 真的不好用,强烈要求优化@流年

浏览:747 发布日期:2018/03/28 分类:求助交流
5.1 多语言自动识别 真的不好用,强烈要求优化@流年

多语言切换时,在不使用get cookie的情况下,中文访问会自动识别为中文语言。但是项目实际需求要求在后台设置好英文版后,强制系统默认英文版,但是同时不影响cookie中英文切换。使用。也就是在没有cookie的前提下默认为英文。不实现浏览器$_SERVER['HTTP_ACCEPT_LANGUAGE']自动获取语言。建议做一个开关。关闭最后一个条件。

之所以提这个要求是因为,发现使用cookie切换后,百度蜘蛛和站长模拟抓取,都是中文。无法识别切换默认cookie中的英文       if (isset($_GET[$this->langDetectVar])) {
            // url中设置了语言变量
           $langSet = strtolower($_GET[$this->langDetectVar]);

        } elseif (isset($_COOKIE[$this->langCookieVar])) {
            // Cookie中设置了语言变量
            $langSet = strtolower($_COOKIE[$this->langCookieVar]);
        } elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
            // 自动侦测浏览器语言
            preg_match('/^([a-z\d\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
            $langSet     = strtolower($matches[1]);
            $acceptLangs = Container::get('config')->get('header_accept_lang');

            if (isset($acceptLangs[$langSet])) {
                $langSet = $acceptLangs[$langSet];
            } elseif (isset($this->acceptLanguage[$langSet])) {
                $langSet = $this->acceptLanguage[$langSet];
            }
        }
模拟抓取<?php
namespace app\index\controller;

class Test extends Common{

    public function index(){
        print_r($_COOKIE);
        return lang('login');
        $this->fetch();
    }
}
抓取结果Array ( [think_var] => en-us ) 登陆
最佳答案
评论( 相关
后面还有条评论,点击查看>>