thinkphp5设置多语言

1.修改/thinkphp/library/think/Lang.php中的方法

 	/**
     * 自动侦测设置获取语言选择
     * @return string
     */
    public static function detect() {
    
    
        // 自动侦测设置获取语言选择
        $langSet = Config::get('default_lang');
        if (isset($_GET[self::$langDetectVar])) {
    
    
            // url中设置了语言变量
            $langSet = strtolower($_GET[self::$langDetectVar]);
            Cookie::set(self::$langCookieVar, $langSet, 3600);
        } elseif (Cookie::get(self::$langCookieVar)) {
    
    
            // 获取上次用户的选择
            $langSet = strtolower(Cookie::get(self::$langCookieVar));
        } elseif ($langSet) {
    
    
            // 获取默认语言
            Cookie::set(self::$langCookieVar, $langSet, 3600);
        } elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
    
    
            // 自动侦测浏览器语言
            preg_match('/^([a-z\d\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
            $langSet = strtolower($matches[1]);
            Cookie::set(self::$langCookieVar, $langSet, 3600);
        }
        if (empty(self::$allowLangList) || in_array($langSet, self::$allowLangList)) {
    
    
            // 合法的语言
            self::$range = $langSet;
        }
        return self::$range;
    }

2. 修改配置文件/application/config.php中的配置

'lang_switch_on'         => true,

3.控制器代码中添加语言切换代码

	// 多语言支持
    public function lang(){
    
    
        $lang = input('lang');
        switch ($lang) {
    
    
            case 'zh':
                cookie('think_var', 'zh-cn');
                break;
            case 'en':
                cookie('think_var', 'en-us');
                break;
            default:
                cookie('think_var', 'zh-cn');
                break;
        }
        // cookie('think_var', $lang);
        $this->redirect('index/index');
    }

大功告成

猜你喜欢

转载自blog.csdn.net/qq_37428140/article/details/129831746