PHP language detection

前端 未结 9 2244
陌清茗
陌清茗 2020-12-14 16:32

I\'m trying to build multilangual site.

I use this piece of code to detect users language. If you havent chosen a language, it will include your language file based

9条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-14 17:31

    Try This

    function getUserLanguage() {
        $langs = array();
    
        if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
            // break up string into pieces (languages and q factors)
            preg_match_all(
                '/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i',
                $_SERVER['HTTP_ACCEPT_LANGUAGE'],
                $lang_parse
            );
    
            if (count($lang_parse[1])) {
                // create a list like 'en' => 0.8
                $langs = array_combine($lang_parse[1], $lang_parse[4]);
    
                // set default to 1 for any without q factor
                foreach ($langs as $lang => $val) {
                    if ($val === '') {
                        $langs[$lang] = 1;
                    }
                }
                // sort list based on value
                arsort($langs, SORT_NUMERIC);
            }
        }
        //extract most important (first)
        reset($langs);
        $lang = key($langs);
    
        //if complex language simplify it
        if (stristr($lang, '-')) {
            list($lang) = explode('-', $lang);
        }
    
        return $lang;
    }
    

提交回复
热议问题